@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.
- package/README.md +57 -10
- package/dist/components/EchoChangeProfileNameModal.d.ts +59 -0
- package/dist/components/EchoChangeProfileNameModal.d.ts.map +1 -0
- package/dist/components/EchoChangeProfileNameModal.js +317 -0
- package/dist/components/EchoChangeProfileNameModal.js.map +1 -0
- package/dist/components/EchoColorPicker.d.ts +34 -0
- package/dist/components/EchoColorPicker.d.ts.map +1 -0
- package/dist/components/EchoColorPicker.js +206 -0
- package/dist/components/EchoColorPicker.js.map +1 -0
- package/dist/components/EchoConnectedAppsModal.d.ts +40 -0
- package/dist/components/EchoConnectedAppsModal.d.ts.map +1 -0
- package/dist/components/EchoConnectedAppsModal.js +220 -0
- package/dist/components/EchoConnectedAppsModal.js.map +1 -0
- package/dist/components/EchoDeleteProfilePanel.d.ts +63 -0
- package/dist/components/EchoDeleteProfilePanel.d.ts.map +1 -0
- package/dist/components/EchoDeleteProfilePanel.js +286 -0
- package/dist/components/EchoDeleteProfilePanel.js.map +1 -0
- package/dist/components/EchoDeletionIntercept.d.ts +39 -0
- package/dist/components/EchoDeletionIntercept.d.ts.map +1 -0
- package/dist/components/EchoDeletionIntercept.js +212 -0
- package/dist/components/EchoDeletionIntercept.js.map +1 -0
- package/dist/components/EchoDeletionStatusCard.d.ts +35 -0
- package/dist/components/EchoDeletionStatusCard.d.ts.map +1 -0
- package/dist/components/EchoDeletionStatusCard.js +156 -0
- package/dist/components/EchoDeletionStatusCard.js.map +1 -0
- package/dist/components/EchoEmblem.d.ts +1 -1
- package/dist/components/EchoEmblemPicker.d.ts +71 -0
- package/dist/components/EchoEmblemPicker.d.ts.map +1 -0
- package/dist/components/EchoEmblemPicker.js +490 -0
- package/dist/components/EchoEmblemPicker.js.map +1 -0
- package/dist/components/EchoErrorBanner.d.ts +17 -0
- package/dist/components/EchoErrorBanner.d.ts.map +1 -0
- package/dist/components/EchoErrorBanner.js +48 -0
- package/dist/components/EchoErrorBanner.js.map +1 -0
- package/dist/components/EchoFormField.d.ts +27 -0
- package/dist/components/EchoFormField.d.ts.map +1 -0
- package/dist/components/EchoFormField.js +49 -0
- package/dist/components/EchoFormField.js.map +1 -0
- package/dist/components/EchoLinkButton.d.ts +16 -0
- package/dist/components/EchoLinkButton.d.ts.map +1 -0
- package/dist/components/EchoLinkButton.js +37 -0
- package/dist/components/EchoLinkButton.js.map +1 -0
- package/dist/components/EchoMoreScreen.d.ts +47 -0
- package/dist/components/EchoMoreScreen.d.ts.map +1 -0
- package/dist/components/EchoMoreScreen.js +121 -0
- package/dist/components/EchoMoreScreen.js.map +1 -0
- package/dist/components/EchoPasswordField.d.ts +28 -0
- package/dist/components/EchoPasswordField.d.ts.map +1 -0
- package/dist/components/EchoPasswordField.js +67 -0
- package/dist/components/EchoPasswordField.js.map +1 -0
- package/dist/components/EchoPrimaryButton.d.ts +23 -0
- package/dist/components/EchoPrimaryButton.d.ts.map +1 -0
- package/dist/components/EchoPrimaryButton.js +54 -0
- package/dist/components/EchoPrimaryButton.js.map +1 -0
- package/dist/components/EchoProfileCard.d.ts +7 -3
- package/dist/components/EchoProfileCard.d.ts.map +1 -1
- package/dist/components/EchoProfileCard.js +5 -10
- package/dist/components/EchoProfileCard.js.map +1 -1
- package/dist/components/EchoProfileDivider.d.ts +14 -0
- package/dist/components/EchoProfileDivider.d.ts.map +1 -0
- package/dist/components/EchoProfileDivider.js +31 -0
- package/dist/components/EchoProfileDivider.js.map +1 -0
- package/dist/components/EchoProfileHero.d.ts +48 -0
- package/dist/components/EchoProfileHero.d.ts.map +1 -0
- package/dist/components/EchoProfileHero.js +215 -0
- package/dist/components/EchoProfileHero.js.map +1 -0
- package/dist/components/EchoProfileOverview.d.ts +18 -0
- package/dist/components/EchoProfileOverview.d.ts.map +1 -0
- package/dist/components/EchoProfileOverview.js +36 -0
- package/dist/components/EchoProfileOverview.js.map +1 -0
- package/dist/components/EchoProfileRow.d.ts +60 -0
- package/dist/components/EchoProfileRow.d.ts.map +1 -0
- package/dist/components/EchoProfileRow.js +113 -0
- package/dist/components/EchoProfileRow.js.map +1 -0
- package/dist/components/EchoProfileSection.d.ts +29 -0
- package/dist/components/EchoProfileSection.d.ts.map +1 -0
- package/dist/components/EchoProfileSection.js +58 -0
- package/dist/components/EchoProfileSection.js.map +1 -0
- package/dist/components/EchoRewardNotificationBanner.d.ts +61 -0
- package/dist/components/EchoRewardNotificationBanner.d.ts.map +1 -0
- package/dist/components/EchoRewardNotificationBanner.js +272 -0
- package/dist/components/EchoRewardNotificationBanner.js.map +1 -0
- package/dist/components/EchoSettingsRow.d.ts +24 -0
- package/dist/components/EchoSettingsRow.d.ts.map +1 -0
- package/dist/components/EchoSettingsRow.js +84 -0
- package/dist/components/EchoSettingsRow.js.map +1 -0
- package/dist/components/EchoSettingsSection.d.ts +16 -0
- package/dist/components/EchoSettingsSection.d.ts.map +1 -0
- package/dist/components/EchoSettingsSection.js +48 -0
- package/dist/components/EchoSettingsSection.js.map +1 -0
- package/dist/components/EchoSignOutButton.d.ts +28 -0
- package/dist/components/EchoSignOutButton.d.ts.map +1 -0
- package/dist/components/EchoSignOutButton.js +67 -0
- package/dist/components/EchoSignOutButton.js.map +1 -0
- package/dist/components/EchoSuccessBanner.d.ts +17 -0
- package/dist/components/EchoSuccessBanner.d.ts.map +1 -0
- package/dist/components/EchoSuccessBanner.js +48 -0
- package/dist/components/EchoSuccessBanner.js.map +1 -0
- package/dist/components/EchoSyncPanel.d.ts +165 -0
- package/dist/components/EchoSyncPanel.d.ts.map +1 -0
- package/dist/components/EchoSyncPanel.js +913 -0
- package/dist/components/EchoSyncPanel.js.map +1 -0
- package/dist/components/EchoSyncPromptModal.d.ts +87 -0
- package/dist/components/EchoSyncPromptModal.d.ts.map +1 -0
- package/dist/components/EchoSyncPromptModal.js +351 -0
- package/dist/components/EchoSyncPromptModal.js.map +1 -0
- package/dist/components/EchoTitlePicker.d.ts +72 -0
- package/dist/components/EchoTitlePicker.d.ts.map +1 -0
- package/dist/components/EchoTitlePicker.js +487 -0
- package/dist/components/EchoTitlePicker.js.map +1 -0
- package/dist/components/EchoVerificationCodeInput.d.ts +40 -0
- package/dist/components/EchoVerificationCodeInput.d.ts.map +1 -0
- package/dist/components/EchoVerificationCodeInput.js +140 -0
- package/dist/components/EchoVerificationCodeInput.js.map +1 -0
- package/dist/components/EchoWelcome.d.ts +44 -0
- package/dist/components/EchoWelcome.d.ts.map +1 -0
- package/dist/components/EchoWelcome.js +289 -0
- package/dist/components/EchoWelcome.js.map +1 -0
- package/dist/components/EchoWhyBecomeAnEchoModal.d.ts +34 -0
- package/dist/components/EchoWhyBecomeAnEchoModal.d.ts.map +1 -0
- package/dist/components/EchoWhyBecomeAnEchoModal.js +321 -0
- package/dist/components/EchoWhyBecomeAnEchoModal.js.map +1 -0
- package/dist/components/EchoformInfoButton.d.ts +27 -0
- package/dist/components/EchoformInfoButton.d.ts.map +1 -0
- package/dist/components/EchoformInfoButton.js +60 -0
- package/dist/components/EchoformInfoButton.js.map +1 -0
- package/dist/components/EchoformInfoModal.d.ts +63 -0
- package/dist/components/EchoformInfoModal.d.ts.map +1 -0
- package/dist/components/EchoformInfoModal.js +347 -0
- package/dist/components/EchoformInfoModal.js.map +1 -0
- package/dist/echoColors.d.ts +58 -0
- package/dist/echoColors.d.ts.map +1 -0
- package/dist/echoColors.js +94 -0
- package/dist/echoColors.js.map +1 -0
- package/dist/index.d.ts +64 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +71 -4
- package/dist/index.js.map +1 -1
- package/dist/titleRarity.d.ts +5 -0
- package/dist/titleRarity.d.ts.map +1 -1
- package/dist/titleRarity.js +13 -0
- package/dist/titleRarity.js.map +1 -1
- package/package.json +2 -3
- package/dist/components/EchoUITest.d.ts +0 -14
- package/dist/components/EchoUITest.d.ts.map +0 -1
- package/dist/components/EchoUITest.js +0 -53
- 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":"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"}
|
|
@@ -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"}
|