@echoform/echo-ui 0.1.0 → 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 (154) 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 +93 -0
  27. package/dist/components/EchoEmblem.d.ts.map +1 -0
  28. package/dist/components/EchoEmblem.js +308 -0
  29. package/dist/components/EchoEmblem.js.map +1 -0
  30. package/dist/components/EchoEmblemPicker.d.ts +71 -0
  31. package/dist/components/EchoEmblemPicker.d.ts.map +1 -0
  32. package/dist/components/EchoEmblemPicker.js +490 -0
  33. package/dist/components/EchoEmblemPicker.js.map +1 -0
  34. package/dist/components/EchoErrorBanner.d.ts +17 -0
  35. package/dist/components/EchoErrorBanner.d.ts.map +1 -0
  36. package/dist/components/EchoErrorBanner.js +48 -0
  37. package/dist/components/EchoErrorBanner.js.map +1 -0
  38. package/dist/components/EchoFormField.d.ts +27 -0
  39. package/dist/components/EchoFormField.d.ts.map +1 -0
  40. package/dist/components/EchoFormField.js +49 -0
  41. package/dist/components/EchoFormField.js.map +1 -0
  42. package/dist/components/EchoLinkButton.d.ts +16 -0
  43. package/dist/components/EchoLinkButton.d.ts.map +1 -0
  44. package/dist/components/EchoLinkButton.js +37 -0
  45. package/dist/components/EchoLinkButton.js.map +1 -0
  46. package/dist/components/EchoMoreScreen.d.ts +41 -0
  47. package/dist/components/EchoMoreScreen.d.ts.map +1 -0
  48. package/dist/components/EchoMoreScreen.js +94 -0
  49. package/dist/components/EchoMoreScreen.js.map +1 -0
  50. package/dist/components/EchoPasswordField.d.ts +28 -0
  51. package/dist/components/EchoPasswordField.d.ts.map +1 -0
  52. package/dist/components/EchoPasswordField.js +67 -0
  53. package/dist/components/EchoPasswordField.js.map +1 -0
  54. package/dist/components/EchoPrimaryButton.d.ts +23 -0
  55. package/dist/components/EchoPrimaryButton.d.ts.map +1 -0
  56. package/dist/components/EchoPrimaryButton.js +54 -0
  57. package/dist/components/EchoPrimaryButton.js.map +1 -0
  58. package/dist/components/EchoProfileCard.d.ts +35 -0
  59. package/dist/components/EchoProfileCard.d.ts.map +1 -0
  60. package/dist/components/EchoProfileCard.js +206 -0
  61. package/dist/components/EchoProfileCard.js.map +1 -0
  62. package/dist/components/EchoProfileDivider.d.ts +14 -0
  63. package/dist/components/EchoProfileDivider.d.ts.map +1 -0
  64. package/dist/components/EchoProfileDivider.js +31 -0
  65. package/dist/components/EchoProfileDivider.js.map +1 -0
  66. package/dist/components/EchoProfileHero.d.ts +48 -0
  67. package/dist/components/EchoProfileHero.d.ts.map +1 -0
  68. package/dist/components/EchoProfileHero.js +215 -0
  69. package/dist/components/EchoProfileHero.js.map +1 -0
  70. package/dist/components/EchoProfileOverview.d.ts +18 -0
  71. package/dist/components/EchoProfileOverview.d.ts.map +1 -0
  72. package/dist/components/EchoProfileOverview.js +36 -0
  73. package/dist/components/EchoProfileOverview.js.map +1 -0
  74. package/dist/components/EchoProfileRow.d.ts +60 -0
  75. package/dist/components/EchoProfileRow.d.ts.map +1 -0
  76. package/dist/components/EchoProfileRow.js +113 -0
  77. package/dist/components/EchoProfileRow.js.map +1 -0
  78. package/dist/components/EchoProfileSection.d.ts +29 -0
  79. package/dist/components/EchoProfileSection.d.ts.map +1 -0
  80. package/dist/components/EchoProfileSection.js +58 -0
  81. package/dist/components/EchoProfileSection.js.map +1 -0
  82. package/dist/components/EchoRewardNotificationBanner.d.ts +61 -0
  83. package/dist/components/EchoRewardNotificationBanner.d.ts.map +1 -0
  84. package/dist/components/EchoRewardNotificationBanner.js +272 -0
  85. package/dist/components/EchoRewardNotificationBanner.js.map +1 -0
  86. package/dist/components/EchoSettingsRow.d.ts +24 -0
  87. package/dist/components/EchoSettingsRow.d.ts.map +1 -0
  88. package/dist/components/EchoSettingsRow.js +84 -0
  89. package/dist/components/EchoSettingsRow.js.map +1 -0
  90. package/dist/components/EchoSettingsSection.d.ts +16 -0
  91. package/dist/components/EchoSettingsSection.d.ts.map +1 -0
  92. package/dist/components/EchoSettingsSection.js +48 -0
  93. package/dist/components/EchoSettingsSection.js.map +1 -0
  94. package/dist/components/EchoSignOutButton.d.ts +28 -0
  95. package/dist/components/EchoSignOutButton.d.ts.map +1 -0
  96. package/dist/components/EchoSignOutButton.js +67 -0
  97. package/dist/components/EchoSignOutButton.js.map +1 -0
  98. package/dist/components/EchoSuccessBanner.d.ts +17 -0
  99. package/dist/components/EchoSuccessBanner.d.ts.map +1 -0
  100. package/dist/components/EchoSuccessBanner.js +48 -0
  101. package/dist/components/EchoSuccessBanner.js.map +1 -0
  102. package/dist/components/EchoSyncPanel.d.ts +165 -0
  103. package/dist/components/EchoSyncPanel.d.ts.map +1 -0
  104. package/dist/components/EchoSyncPanel.js +913 -0
  105. package/dist/components/EchoSyncPanel.js.map +1 -0
  106. package/dist/components/EchoSyncPromptModal.d.ts +87 -0
  107. package/dist/components/EchoSyncPromptModal.d.ts.map +1 -0
  108. package/dist/components/EchoSyncPromptModal.js +351 -0
  109. package/dist/components/EchoSyncPromptModal.js.map +1 -0
  110. package/dist/components/EchoTitlePicker.d.ts +72 -0
  111. package/dist/components/EchoTitlePicker.d.ts.map +1 -0
  112. package/dist/components/EchoTitlePicker.js +487 -0
  113. package/dist/components/EchoTitlePicker.js.map +1 -0
  114. package/dist/components/EchoVerificationCodeInput.d.ts +40 -0
  115. package/dist/components/EchoVerificationCodeInput.d.ts.map +1 -0
  116. package/dist/components/EchoVerificationCodeInput.js +140 -0
  117. package/dist/components/EchoVerificationCodeInput.js.map +1 -0
  118. package/dist/components/EchoWelcome.d.ts +44 -0
  119. package/dist/components/EchoWelcome.d.ts.map +1 -0
  120. package/dist/components/EchoWelcome.js +289 -0
  121. package/dist/components/EchoWelcome.js.map +1 -0
  122. package/dist/components/EchoWhyBecomeAnEchoModal.d.ts +34 -0
  123. package/dist/components/EchoWhyBecomeAnEchoModal.d.ts.map +1 -0
  124. package/dist/components/EchoWhyBecomeAnEchoModal.js +321 -0
  125. package/dist/components/EchoWhyBecomeAnEchoModal.js.map +1 -0
  126. package/dist/components/EchoformInfoButton.d.ts +27 -0
  127. package/dist/components/EchoformInfoButton.d.ts.map +1 -0
  128. package/dist/components/EchoformInfoButton.js +60 -0
  129. package/dist/components/EchoformInfoButton.js.map +1 -0
  130. package/dist/components/EchoformInfoModal.d.ts +63 -0
  131. package/dist/components/EchoformInfoModal.d.ts.map +1 -0
  132. package/dist/components/EchoformInfoModal.js +347 -0
  133. package/dist/components/EchoformInfoModal.js.map +1 -0
  134. package/dist/echoColors.d.ts +58 -0
  135. package/dist/echoColors.d.ts.map +1 -0
  136. package/dist/echoColors.js +94 -0
  137. package/dist/echoColors.js.map +1 -0
  138. package/dist/index.d.ts +71 -3
  139. package/dist/index.d.ts.map +1 -1
  140. package/dist/index.js +86 -4
  141. package/dist/index.js.map +1 -1
  142. package/dist/theme.d.ts +48 -0
  143. package/dist/theme.d.ts.map +1 -0
  144. package/dist/theme.js +51 -0
  145. package/dist/theme.js.map +1 -0
  146. package/dist/titleRarity.d.ts +19 -0
  147. package/dist/titleRarity.d.ts.map +1 -0
  148. package/dist/titleRarity.js +46 -0
  149. package/dist/titleRarity.js.map +1 -0
  150. package/package.json +6 -5
  151. package/dist/components/EchoUITest.d.ts +0 -14
  152. package/dist/components/EchoUITest.d.ts.map +0 -1
  153. package/dist/components/EchoUITest.js +0 -53
  154. package/dist/components/EchoUITest.js.map +0 -1
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ /**
3
+ * EchoVerificationCodeInput
4
+ *
5
+ * Reusable in-app verification code input for Echo Profile flows.
6
+ * Extracted verbatim from components/ui/VerificationCodeInput.tsx.
7
+ *
8
+ * Design decisions:
9
+ * - ONE normal TextInput — full copy/paste support, no six-box fragmentation
10
+ * - Numeric soft keyboard on mobile
11
+ * - Auto-strips non-digit characters (spaces, hyphens, dashes)
12
+ * - Exposes a single accessible "Verification Code" label
13
+ * - Does NOT auto-submit — the caller provides an explicit Verify button
14
+ *
15
+ * Accessibility:
16
+ * - accessibilityLabel: "Verification Code"
17
+ * - accessibilityHint: describes that the code was emailed
18
+ * - Accepts pasted codes (React Native handles this natively on TextInput)
19
+ *
20
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
21
+ * Canonical shared component for @echoform/echo-ui.
22
+ */
23
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ var desc = Object.getOwnPropertyDescriptor(m, k);
26
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
27
+ desc = { enumerable: true, get: function() { return m[k]; } };
28
+ }
29
+ Object.defineProperty(o, k2, desc);
30
+ }) : (function(o, m, k, k2) {
31
+ if (k2 === undefined) k2 = k;
32
+ o[k2] = m[k];
33
+ }));
34
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
35
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
36
+ }) : function(o, v) {
37
+ o["default"] = v;
38
+ });
39
+ var __importStar = (this && this.__importStar) || (function () {
40
+ var ownKeys = function(o) {
41
+ ownKeys = Object.getOwnPropertyNames || function (o) {
42
+ var ar = [];
43
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
44
+ return ar;
45
+ };
46
+ return ownKeys(o);
47
+ };
48
+ return function (mod) {
49
+ if (mod && mod.__esModule) return mod;
50
+ var result = {};
51
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
52
+ __setModuleDefault(result, mod);
53
+ return result;
54
+ };
55
+ })();
56
+ Object.defineProperty(exports, "__esModule", { value: true });
57
+ exports.EchoVerificationCodeInput = void 0;
58
+ const react_1 = __importStar(require("react"));
59
+ const react_native_1 = require("react-native");
60
+ const theme_1 = require("../theme");
61
+ // ─────────────────────────────────────────────────────────────────────────────
62
+ // Helper: strip everything that is not a digit
63
+ // ─────────────────────────────────────────────────────────────────────────────
64
+ function sanitizeCode(raw) {
65
+ return raw.replace(/[^0-9]/g, '');
66
+ }
67
+ // ─────────────────────────────────────────────────────────────────────────────
68
+ // Component
69
+ // ─────────────────────────────────────────────────────────────────────────────
70
+ exports.EchoVerificationCodeInput = (0, react_1.forwardRef)(({ value, onChangeCode, email, disabled = false, onSubmitEditing }, ref) => {
71
+ const inputRef = (0, react_1.useRef)(null);
72
+ (0, react_1.useImperativeHandle)(ref, () => ({
73
+ focus: () => { var _a; return (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus(); },
74
+ clear: () => {
75
+ var _a;
76
+ onChangeCode('');
77
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.clear();
78
+ },
79
+ }));
80
+ const handleChange = (text) => {
81
+ onChangeCode(sanitizeCode(text));
82
+ };
83
+ const hint = email
84
+ ? `Enter the verification code sent to ${email}. You can paste the code from your email.`
85
+ : 'Enter the verification code from your email. You can paste the full code.';
86
+ return (<react_native_1.View style={styles.wrap}>
87
+ <react_native_1.Text style={styles.label} importantForAccessibility="no" accessibilityElementsHidden>
88
+ Verification Code
89
+ </react_native_1.Text>
90
+ <react_native_1.TextInput ref={inputRef} style={[styles.input, disabled && styles.inputDisabled]} value={value} onChangeText={handleChange} placeholder="Enter code from email" placeholderTextColor={theme_1.COLORS.textMuted} keyboardType="number-pad" autoCapitalize="none" autoCorrect={false} autoComplete="one-time-code" textContentType="oneTimeCode" returnKeyType="go" editable={!disabled} onSubmitEditing={onSubmitEditing} maxLength={12} accessibilityLabel="Verification Code" accessibilityHint={hint} accessibilityRole="none" accessibilityState={{ disabled }} selectionColor={theme_1.COLORS.neonCyan}/>
91
+ <react_native_1.Text style={styles.hint} accessible accessibilityRole="text">
92
+ {'Code sent to '}
93
+ <react_native_1.Text style={styles.hintEmail}>{email !== null && email !== void 0 ? email : 'your email'}</react_native_1.Text>
94
+ {'. Paste it here or type each digit.'}
95
+ </react_native_1.Text>
96
+ </react_native_1.View>);
97
+ });
98
+ exports.EchoVerificationCodeInput.displayName = 'EchoVerificationCodeInput';
99
+ // ─────────────────────────────────────────────────────────────────────────────
100
+ // Styles
101
+ // ─────────────────────────────────────────────────────────────────────────────
102
+ const styles = react_native_1.StyleSheet.create({
103
+ wrap: {
104
+ gap: theme_1.SPACING.xs,
105
+ },
106
+ label: {
107
+ fontSize: theme_1.FONTS.sm,
108
+ fontWeight: '600',
109
+ color: theme_1.COLORS.textSecondary,
110
+ },
111
+ input: {
112
+ backgroundColor: theme_1.COLORS.surfaceHigh,
113
+ borderRadius: theme_1.RADIUS.md,
114
+ borderWidth: 2,
115
+ borderColor: theme_1.COLORS.neonCyan + '55',
116
+ paddingHorizontal: theme_1.SPACING.md,
117
+ paddingVertical: theme_1.SPACING.md,
118
+ color: theme_1.COLORS.textPrimary,
119
+ fontWeight: '700',
120
+ minHeight: 60,
121
+ fontSize: 22,
122
+ textAlign: 'center',
123
+ letterSpacing: 6,
124
+ },
125
+ inputDisabled: {
126
+ opacity: 0.5,
127
+ borderColor: theme_1.COLORS.border,
128
+ },
129
+ hint: {
130
+ fontSize: theme_1.FONTS.xs,
131
+ color: theme_1.COLORS.textMuted,
132
+ lineHeight: 18,
133
+ marginTop: 2,
134
+ },
135
+ hintEmail: {
136
+ color: theme_1.COLORS.neonCyan,
137
+ fontWeight: '600',
138
+ },
139
+ });
140
+ //# sourceMappingURL=EchoVerificationCodeInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoVerificationCodeInput.js","sourceRoot":"","sources":["../../src/components/EchoVerificationCodeInput.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,+CAAuE;AACvE,+CAAiE;AACjE,oCAA0D;AAwB1D,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAEhF,SAAS,YAAY,CAAC,GAAW;IAC/B,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACpC,CAAC;AAED,gFAAgF;AAChF,YAAY;AACZ,gFAAgF;AAEnE,QAAA,yBAAyB,GAAG,IAAA,kBAAU,EAIjD,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,eAAe,EAAE,EAAE,GAAG,EAAE,EAAE;IACzE,MAAM,QAAQ,GAAG,IAAA,cAAM,EAAY,IAAI,CAAC,CAAC;IAEzC,IAAA,2BAAmB,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,KAAK,EAAE,GAAG,EAAE,WAAC,OAAA,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA;QACtC,KAAK,EAAE,GAAG,EAAE;;YACV,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,MAAA,QAAQ,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;QACpC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,KAAK;QAChB,CAAC,CAAC,uCAAuC,KAAK,2CAA2C;QACzF,CAAC,CAAC,2EAA2E,CAAC;IAEhF,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CACvB;QAAA,CAAC,mBAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB,yBAAyB,CAAC,IAAI,CAC9B,2BAA2B,CAE3B;;QACF,EAAE,mBAAI,CACN;QAAA,CAAC,wBAAS,CACR,GAAG,CAAC,CAAC,QAAQ,CAAC,CACd,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CACxD,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,WAAW,CAAC,uBAAuB,CACnC,oBAAoB,CAAC,CAAC,cAAM,CAAC,SAAS,CAAC,CACvC,YAAY,CAAC,YAAY,CACzB,cAAc,CAAC,MAAM,CACrB,WAAW,CAAC,CAAC,KAAK,CAAC,CACnB,YAAY,CAAC,eAAe,CAC5B,eAAe,CAAC,aAAa,CAC7B,aAAa,CAAC,IAAI,CAClB,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CACpB,eAAe,CAAC,CAAC,eAAe,CAAC,CACjC,SAAS,CAAC,CAAC,EAAE,CAAC,CACd,kBAAkB,CAAC,mBAAmB,CACtC,iBAAiB,CAAC,CAAC,IAAI,CAAC,CACxB,iBAAiB,CAAC,MAAM,CACxB,kBAAkB,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CACjC,cAAc,CAAC,CAAC,cAAM,CAAC,QAAQ,CAAC,EAElC;QAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,iBAAiB,CAAC,MAAM,CAC3D;UAAA,CAAC,eAAe,CAChB;UAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,YAAY,CAAC,EAAE,mBAAI,CAC5D;UAAA,CAAC,qCAAqC,CACxC;QAAA,EAAE,mBAAI,CACR;MAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,iCAAyB,CAAC,WAAW,GAAG,2BAA2B,CAAC;AAEpE,gFAAgF;AAChF,SAAS;AACT,gFAAgF;AAEhF,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE;QACJ,GAAG,EAAE,eAAO,CAAC,EAAE;KAChB;IACD,KAAK,EAAE;QACL,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAO,cAAM,CAAC,aAAa;KACjC;IACD,KAAK,EAAE;QACL,eAAe,EAAI,cAAM,CAAC,WAAW;QACrC,YAAY,EAAO,cAAM,CAAC,EAAE;QAC5B,WAAW,EAAQ,CAAC;QACpB,WAAW,EAAQ,cAAM,CAAC,QAAQ,GAAG,IAAI;QACzC,iBAAiB,EAAE,eAAO,CAAC,EAAE;QAC7B,eAAe,EAAI,eAAO,CAAC,EAAE;QAC7B,KAAK,EAAc,cAAM,CAAC,WAAW;QACrC,UAAU,EAAS,KAAK;QACxB,SAAS,EAAU,EAAE;QACrB,QAAQ,EAAW,EAAE;QACrB,SAAS,EAAU,QAAQ;QAC3B,aAAa,EAAM,CAAC;KACrB;IACD,aAAa,EAAE;QACb,OAAO,EAAM,GAAG;QAChB,WAAW,EAAE,cAAM,CAAC,MAAM;KAC3B;IACD,IAAI,EAAE;QACJ,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,KAAK,EAAO,cAAM,CAAC,SAAS;QAC5B,UAAU,EAAE,EAAE;QACd,SAAS,EAAG,CAAC;KACd;IACD,SAAS,EAAE;QACT,KAAK,EAAO,cAAM,CAAC,QAAQ;QAC3B,UAAU,EAAE,KAAK;KAClB;CACF,CAAC,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * EchoWelcome
3
+ *
4
+ * Presentation-only Echo Profile welcome/onboarding screen content.
5
+ * Extracted from the WELCOME section of the Echo UI Reference account screen.
6
+ *
7
+ * Renders:
8
+ * • Echoform banner (16:9, cyan border/glow)
9
+ * • Three-line wave accent
10
+ * • "Welcome to Echoform" heading
11
+ * • "One Echo Profile. Every Echoform app." subheading
12
+ * • Sign In button (with supplied profile icon)
13
+ * • Create Echo Profile button
14
+ * • "Why become an Echo?" link
15
+ * • "or" divider
16
+ * • Continue Offline card
17
+ *
18
+ * All navigation/auth is delegated to the host via callback props.
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
+ import type { ImageSource } from 'expo-image';
24
+ export type EchoWelcomeProps = {
25
+ /** Echoform banner image displayed at the top (16:9). */
26
+ bannerSource: ImageSource;
27
+ /** Echo Profile icon displayed inside the Sign In button. */
28
+ profileIconSource: ImageSource;
29
+ /**
30
+ * Name of the host application used only in Continue Offline
31
+ * accessibility wording. Defaults to "this app".
32
+ */
33
+ hostAppName?: string;
34
+ /** Called when the user taps Sign In. */
35
+ onSignIn: () => void;
36
+ /** Called when the user taps Create Echo Profile. */
37
+ onCreateProfile: () => void;
38
+ /** Called when the user taps "Why become an Echo?". */
39
+ onWhyEchoPress: () => void;
40
+ /** Called when the user taps Continue Offline. */
41
+ onContinueOffline: () => void;
42
+ };
43
+ export declare function EchoWelcome({ bannerSource, profileIconSource, hostAppName, onSignIn, onCreateProfile, onWhyEchoPress, onContinueOffline, }: EchoWelcomeProps): React.JSX.Element;
44
+ //# sourceMappingURL=EchoWelcome.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoWelcome.d.ts","sourceRoot":"","sources":["../../src/components/EchoWelcome.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAQ9C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,yDAAyD;IACzD,YAAY,EAAE,WAAW,CAAC;IAC1B,6DAA6D;IAC7D,iBAAiB,EAAE,WAAW,CAAC;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,qDAAqD;IACrD,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,uDAAuD;IACvD,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,kDAAkD;IAClD,iBAAiB,EAAE,MAAM,IAAI,CAAC;CAC/B,CAAC;AAMF,wBAAgB,WAAW,CAAC,EAC1B,YAAY,EACZ,iBAAiB,EACjB,WAAwB,EACxB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,iBAAiB,GAClB,EAAE,gBAAgB,qBAsJlB"}
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ /**
3
+ * EchoWelcome
4
+ *
5
+ * Presentation-only Echo Profile welcome/onboarding screen content.
6
+ * Extracted from the WELCOME section of the Echo UI Reference account screen.
7
+ *
8
+ * Renders:
9
+ * • Echoform banner (16:9, cyan border/glow)
10
+ * • Three-line wave accent
11
+ * • "Welcome to Echoform" heading
12
+ * • "One Echo Profile. Every Echoform app." subheading
13
+ * • Sign In button (with supplied profile icon)
14
+ * • Create Echo Profile button
15
+ * • "Why become an Echo?" link
16
+ * • "or" divider
17
+ * • Continue Offline card
18
+ *
19
+ * All navigation/auth is delegated to the host via callback props.
20
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
21
+ * Canonical shared component for @echoform/echo-ui.
22
+ */
23
+ var __importDefault = (this && this.__importDefault) || function (mod) {
24
+ return (mod && mod.__esModule) ? mod : { "default": mod };
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.EchoWelcome = EchoWelcome;
28
+ const react_1 = __importDefault(require("react"));
29
+ const react_native_1 = require("react-native");
30
+ const expo_image_1 = require("expo-image");
31
+ const vector_icons_1 = require("@expo/vector-icons");
32
+ const theme_1 = require("../theme");
33
+ // ─────────────────────────────────────────────────────────────────────────────
34
+ // Component
35
+ // ─────────────────────────────────────────────────────────────────────────────
36
+ function EchoWelcome({ bannerSource, profileIconSource, hostAppName = 'this app', onSignIn, onCreateProfile, onWhyEchoPress, onContinueOffline, }) {
37
+ return (<react_native_1.View style={styles.container}>
38
+ {/* Echoform banner */}
39
+ <react_native_1.View style={styles.bannerOuter} accessible accessibilityLabel="Echoform — Building an accessible world with echoes like you" accessibilityRole="image">
40
+ <expo_image_1.Image source={bannerSource} style={styles.banner} contentFit="cover" accessible={false} importantForAccessibility="no"/>
41
+ </react_native_1.View>
42
+
43
+ {/* Three-line wave accent */}
44
+ <react_native_1.View style={styles.waveAccent} accessibilityElementsHidden importantForAccessibility="no">
45
+ <react_native_1.View style={[styles.waveLine, { width: '40%', opacity: 0.5 }]}/>
46
+ <react_native_1.View style={[styles.waveLine, { width: '65%', opacity: 0.35 }]}/>
47
+ <react_native_1.View style={[styles.waveLine, { width: '45%', opacity: 0.2 }]}/>
48
+ </react_native_1.View>
49
+
50
+ {/* Heading */}
51
+ <react_native_1.Text style={styles.heading} accessibilityRole="header" accessibilityLabel="Welcome to Echoform">
52
+ Welcome to Echoform
53
+ </react_native_1.Text>
54
+
55
+ {/* Subheading */}
56
+ <react_native_1.Text style={styles.subheading} accessibilityLabel={"One Echo Profile.\nEvery Echoform app."}>
57
+ {'One Echo Profile.\nEvery Echoform app.'}
58
+ </react_native_1.Text>
59
+
60
+ {/* Action buttons */}
61
+ <react_native_1.View style={styles.actions}>
62
+ {/* Sign In */}
63
+ <react_native_1.Pressable onPress={onSignIn} style={({ pressed }) => [
64
+ styles.btn,
65
+ styles.btnSignIn,
66
+ pressed && { opacity: 0.8 },
67
+ ]} accessibilityLabel="Sign In to your Echo Profile" accessibilityRole="button">
68
+ <expo_image_1.Image source={profileIconSource} style={styles.signInIcon} contentFit="contain" importantForAccessibility="no" accessibilityElementsHidden/>
69
+ <react_native_1.Text style={[styles.btnText, { color: theme_1.COLORS.neonCyan }]}>Sign In</react_native_1.Text>
70
+ </react_native_1.Pressable>
71
+
72
+ {/* Create Echo Profile */}
73
+ <react_native_1.Pressable onPress={onCreateProfile} style={({ pressed }) => [
74
+ styles.btn,
75
+ styles.btnCreate,
76
+ pressed && { opacity: 0.8 },
77
+ ]} accessibilityLabel="Create a new Echo Profile" accessibilityRole="button">
78
+ <vector_icons_1.MaterialIcons name="person-add" size={20} color={theme_1.COLORS.neonPurple} importantForAccessibility="no" accessibilityElementsHidden/>
79
+ <react_native_1.Text style={[styles.btnText, { color: theme_1.COLORS.neonPurple }]}>
80
+ Create Echo Profile
81
+ </react_native_1.Text>
82
+ </react_native_1.Pressable>
83
+
84
+ {/* Why become an Echo? link */}
85
+ <react_native_1.Pressable onPress={onWhyEchoPress} style={({ pressed }) => [
86
+ styles.whyEchoLink,
87
+ pressed && { opacity: 0.55 },
88
+ ]} accessibilityLabel="Why become an Echo?" accessibilityRole="button" accessibilityHint="Opens a popup explaining what an Echo Profile is and why you might want one">
89
+ <react_native_1.Text style={styles.whyEchoLinkText}>Why become an Echo?</react_native_1.Text>
90
+ </react_native_1.Pressable>
91
+ </react_native_1.View>
92
+
93
+ {/* "or" divider */}
94
+ <react_native_1.View style={styles.divider} accessibilityElementsHidden importantForAccessibility="no">
95
+ <react_native_1.View style={styles.dividerLine}/>
96
+ <react_native_1.Text style={styles.dividerText}>or</react_native_1.Text>
97
+ <react_native_1.View style={styles.dividerLine}/>
98
+ </react_native_1.View>
99
+
100
+ {/* Continue Offline card */}
101
+ <react_native_1.View style={styles.offlineCard}>
102
+ <react_native_1.Text style={styles.offlineHeading} accessibilityRole="header">
103
+ Continue Offline
104
+ </react_native_1.Text>
105
+ <react_native_1.Text style={styles.offlineDescription}>
106
+ Store your data locally on this device. You can create an Echo Profile
107
+ later without losing your information.
108
+ </react_native_1.Text>
109
+ <react_native_1.Pressable onPress={onContinueOffline} style={({ pressed }) => [
110
+ styles.offlineBtn,
111
+ pressed && { opacity: 0.75 },
112
+ ]} accessibilityLabel={`Continue using ${hostAppName} without an Echo Profile`} accessibilityRole="button" accessibilityHint="Returns to the app. Your data is saved locally and you can create an Echo Profile at any time.">
113
+ <vector_icons_1.MaterialIcons name="devices" size={18} color={theme_1.COLORS.textSecondary} importantForAccessibility="no" accessibilityElementsHidden/>
114
+ <react_native_1.Text style={styles.offlineBtnText}>Continue Offline</react_native_1.Text>
115
+ </react_native_1.Pressable>
116
+ </react_native_1.View>
117
+ </react_native_1.View>);
118
+ }
119
+ // ─────────────────────────────────────────────────────────────────────────────
120
+ // Styles
121
+ // ─────────────────────────────────────────────────────────────────────────────
122
+ const styles = react_native_1.StyleSheet.create({
123
+ container: {
124
+ alignItems: 'center',
125
+ gap: theme_1.SPACING.xl,
126
+ paddingTop: theme_1.SPACING.md,
127
+ paddingBottom: theme_1.SPACING.md,
128
+ },
129
+ // Banner
130
+ bannerOuter: {
131
+ width: '100%',
132
+ borderRadius: theme_1.RADIUS.xl,
133
+ overflow: 'hidden',
134
+ borderWidth: 1,
135
+ borderColor: theme_1.COLORS.neonCyan + '22',
136
+ shadowColor: theme_1.COLORS.neonCyan,
137
+ shadowOffset: { width: 0, height: 0 },
138
+ shadowOpacity: 0.15,
139
+ shadowRadius: 16,
140
+ elevation: 4,
141
+ },
142
+ banner: {
143
+ width: '100%',
144
+ aspectRatio: 16 / 9,
145
+ },
146
+ // Wave accent
147
+ waveAccent: {
148
+ alignItems: 'center',
149
+ gap: 4,
150
+ width: '100%',
151
+ },
152
+ waveLine: {
153
+ height: 1,
154
+ backgroundColor: theme_1.COLORS.neonCyan,
155
+ borderRadius: 1,
156
+ alignSelf: 'center',
157
+ },
158
+ // Headings
159
+ heading: {
160
+ fontSize: 28,
161
+ fontWeight: '800',
162
+ color: theme_1.COLORS.textPrimary,
163
+ textAlign: 'center',
164
+ letterSpacing: 0.5,
165
+ },
166
+ subheading: {
167
+ fontSize: theme_1.FONTS.md,
168
+ color: theme_1.COLORS.textSecondary,
169
+ textAlign: 'center',
170
+ lineHeight: 24,
171
+ fontWeight: '500',
172
+ marginTop: -theme_1.SPACING.sm,
173
+ },
174
+ // Action area
175
+ actions: {
176
+ width: '100%',
177
+ gap: theme_1.SPACING.md,
178
+ },
179
+ btn: {
180
+ flexDirection: 'row',
181
+ alignItems: 'center',
182
+ justifyContent: 'center',
183
+ gap: theme_1.SPACING.sm,
184
+ borderRadius: theme_1.RADIUS.lg,
185
+ borderWidth: 1.5,
186
+ paddingVertical: theme_1.SPACING.md + 2,
187
+ minHeight: 56,
188
+ width: '100%',
189
+ },
190
+ btnSignIn: {
191
+ backgroundColor: theme_1.COLORS.neonCyan + '40',
192
+ borderColor: theme_1.COLORS.neonCyan + 'CC',
193
+ shadowColor: theme_1.COLORS.neonCyan,
194
+ shadowOffset: { width: 0, height: 0 },
195
+ shadowOpacity: 0.3,
196
+ shadowRadius: 12,
197
+ },
198
+ btnCreate: {
199
+ backgroundColor: theme_1.COLORS.neonPurple + '40',
200
+ borderColor: theme_1.COLORS.neonPurple + 'CC',
201
+ shadowColor: theme_1.COLORS.neonPurple,
202
+ shadowOffset: { width: 0, height: 0 },
203
+ shadowOpacity: 0.3,
204
+ shadowRadius: 12,
205
+ },
206
+ btnText: {
207
+ fontSize: theme_1.FONTS.md,
208
+ fontWeight: '700',
209
+ letterSpacing: 0.3,
210
+ },
211
+ signInIcon: {
212
+ position: 'absolute',
213
+ width: 40,
214
+ height: 40,
215
+ left: '50%',
216
+ marginLeft: -75,
217
+ },
218
+ // "Why become an Echo?" link
219
+ whyEchoLink: {
220
+ alignSelf: 'center',
221
+ paddingVertical: theme_1.SPACING.xs,
222
+ paddingHorizontal: theme_1.SPACING.sm,
223
+ marginTop: -theme_1.SPACING.xs,
224
+ },
225
+ whyEchoLinkText: {
226
+ fontSize: theme_1.FONTS.sm,
227
+ color: theme_1.COLORS.neonPurple,
228
+ fontWeight: '600',
229
+ textDecorationLine: 'underline',
230
+ opacity: 0.85,
231
+ },
232
+ // "or" divider
233
+ divider: {
234
+ flexDirection: 'row',
235
+ alignItems: 'center',
236
+ gap: theme_1.SPACING.md,
237
+ width: '100%',
238
+ },
239
+ dividerLine: {
240
+ flex: 1,
241
+ height: 1,
242
+ backgroundColor: theme_1.COLORS.border,
243
+ },
244
+ dividerText: {
245
+ fontSize: theme_1.FONTS.sm,
246
+ color: theme_1.COLORS.textMuted,
247
+ fontWeight: '600',
248
+ },
249
+ // Continue Offline card
250
+ offlineCard: {
251
+ width: '100%',
252
+ backgroundColor: theme_1.COLORS.surface,
253
+ borderRadius: theme_1.RADIUS.xl,
254
+ borderWidth: 1,
255
+ borderColor: theme_1.COLORS.border,
256
+ padding: theme_1.SPACING.xl,
257
+ gap: theme_1.SPACING.md,
258
+ },
259
+ offlineHeading: {
260
+ fontSize: theme_1.FONTS.md,
261
+ fontWeight: '700',
262
+ color: theme_1.COLORS.textSecondary,
263
+ textAlign: 'center',
264
+ },
265
+ offlineDescription: {
266
+ fontSize: theme_1.FONTS.sm,
267
+ color: theme_1.COLORS.textMuted,
268
+ textAlign: 'center',
269
+ lineHeight: 21,
270
+ },
271
+ offlineBtn: {
272
+ flexDirection: 'row',
273
+ alignItems: 'center',
274
+ justifyContent: 'center',
275
+ gap: theme_1.SPACING.sm,
276
+ borderRadius: theme_1.RADIUS.lg,
277
+ backgroundColor: theme_1.COLORS.surfaceHigh,
278
+ borderWidth: 1,
279
+ borderColor: theme_1.COLORS.border,
280
+ paddingVertical: theme_1.SPACING.md,
281
+ minHeight: 48,
282
+ },
283
+ offlineBtnText: {
284
+ fontSize: theme_1.FONTS.sm,
285
+ fontWeight: '600',
286
+ color: theme_1.COLORS.textSecondary,
287
+ },
288
+ });
289
+ //# sourceMappingURL=EchoWelcome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoWelcome.js","sourceRoot":"","sources":["../../src/components/EchoWelcome.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * EchoWhyBecomeAnEchoModal
3
+ *
4
+ * Presentation-only "Why Become an Echo?" modal.
5
+ * Extracted verbatim from the Echo UI Reference welcome section.
6
+ *
7
+ * This component owns the complete shared Echoform explanatory copy and
8
+ * visual presentation. All content is fixed Echoform brand text that never
9
+ * changes per host app.
10
+ *
11
+ * DIMENSIONS
12
+ * ──────────
13
+ * ~88% of window height, max width 520, dark overlay, cyan border,
14
+ * scrollable body, fixed "Got It" footer button.
15
+ *
16
+ * ACCESSIBILITY
17
+ * ─────────────
18
+ * • accessibilityViewIsModal on the outer Modal
19
+ * • Header role on the title
20
+ * • All bullet rows accessible as text
21
+ * • Callout section labeled with accessible text
22
+ * • Close button: "Close", role button
23
+ * • Got It button: "Got it", role button, hint "Closes this popup"
24
+ *
25
+ * No Expo Router, no auth, no contexts, no services, no app-specific code.
26
+ * Canonical shared component for @echoform/echo-ui.
27
+ */
28
+ import React from 'react';
29
+ export type EchoWhyBecomeAnEchoModalProps = {
30
+ visible: boolean;
31
+ onClose: () => void;
32
+ };
33
+ export declare function EchoWhyBecomeAnEchoModal({ visible, onClose, }: EchoWhyBecomeAnEchoModalProps): React.JSX.Element;
34
+ //# sourceMappingURL=EchoWhyBecomeAnEchoModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EchoWhyBecomeAnEchoModal.d.ts","sourceRoot":"","sources":["../../src/components/EchoWhyBecomeAnEchoModal.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAiB1B,MAAM,MAAM,6BAA6B,GAAG;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAiCF,wBAAgB,wBAAwB,CAAC,EACvC,OAAO,EACP,OAAO,GACR,EAAE,6BAA6B,qBA2J/B"}