@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,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* EchoFormField
|
|
4
|
+
*
|
|
5
|
+
* Presentation-only labeled text input extracted from the Echo UI Reference.
|
|
6
|
+
* Provides a label, styled input, disabled appearance, and full accessibility.
|
|
7
|
+
*
|
|
8
|
+
* No Expo Router, no auth, no contexts, no services, no app-specific code.
|
|
9
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.EchoFormField = EchoFormField;
|
|
16
|
+
const react_1 = __importDefault(require("react"));
|
|
17
|
+
const react_native_1 = require("react-native");
|
|
18
|
+
const theme_1 = require("../theme");
|
|
19
|
+
function EchoFormField({ label, value, onChangeText, placeholder, secureTextEntry, keyboardType = 'default', autoCapitalize = 'none', returnKeyType = 'next', onSubmitEditing, accessibilityHint, editable = true, inputRef, }) {
|
|
20
|
+
return (<react_native_1.View style={styles.fieldWrap}>
|
|
21
|
+
<react_native_1.Text style={styles.fieldLabel}>{label}</react_native_1.Text>
|
|
22
|
+
<react_native_1.TextInput ref={inputRef} style={[styles.fieldInput, !editable ? styles.fieldInputDisabled : null]} value={value} onChangeText={onChangeText} placeholder={placeholder} placeholderTextColor={theme_1.COLORS.textMuted} secureTextEntry={secureTextEntry} keyboardType={keyboardType} autoCapitalize={autoCapitalize} autoCorrect={false} returnKeyType={returnKeyType} onSubmitEditing={onSubmitEditing} editable={editable} accessibilityLabel={label} accessibilityHint={accessibilityHint} accessibilityRole="none"/>
|
|
23
|
+
</react_native_1.View>);
|
|
24
|
+
}
|
|
25
|
+
const styles = react_native_1.StyleSheet.create({
|
|
26
|
+
fieldWrap: {
|
|
27
|
+
gap: theme_1.SPACING.xs,
|
|
28
|
+
},
|
|
29
|
+
fieldLabel: {
|
|
30
|
+
fontSize: theme_1.FONTS.sm,
|
|
31
|
+
fontWeight: '600',
|
|
32
|
+
color: theme_1.COLORS.textSecondary,
|
|
33
|
+
},
|
|
34
|
+
fieldInput: {
|
|
35
|
+
backgroundColor: theme_1.COLORS.surfaceHigh,
|
|
36
|
+
borderRadius: theme_1.RADIUS.md,
|
|
37
|
+
borderWidth: 1,
|
|
38
|
+
borderColor: theme_1.COLORS.border,
|
|
39
|
+
paddingHorizontal: theme_1.SPACING.md,
|
|
40
|
+
paddingVertical: theme_1.SPACING.sm,
|
|
41
|
+
fontSize: theme_1.FONTS.md,
|
|
42
|
+
color: theme_1.COLORS.textPrimary,
|
|
43
|
+
minHeight: 48,
|
|
44
|
+
},
|
|
45
|
+
fieldInputDisabled: {
|
|
46
|
+
opacity: 0.5,
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
//# sourceMappingURL=EchoFormField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoFormField.js","sourceRoot":"","sources":["../../src/components/EchoFormField.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;AA0BH,sCAqCC;AA7DD,kDAA0B;AAC1B,+CAKsB;AACtB,oCAA0D;AAiB1D,SAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,YAAY,EACZ,WAAW,EACX,eAAe,EACf,YAAY,GAAG,SAAS,EACxB,cAAc,GAAG,MAAM,EACvB,aAAa,GAAG,MAAM,EACtB,eAAe,EACf,iBAAiB,EACjB,QAAQ,GAAG,IAAI,EACf,QAAQ,GACW;IACnB,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;MAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,mBAAI,CAC7C;MAAA,CAAC,wBAAS,CACR,GAAG,CAAC,CAAC,QAAQ,CAAC,CACd,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACzE,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,oBAAoB,CAAC,CAAC,cAAM,CAAC,SAAS,CAAC,CACvC,eAAe,CAAC,CAAC,eAAe,CAAC,CACjC,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,cAAc,CAAC,CAAC,cAAc,CAAC,CAC/B,WAAW,CAAC,CAAC,KAAK,CAAC,CACnB,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,eAAe,CAAC,CAAC,eAAe,CAAC,CACjC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CACnB,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAC1B,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,iBAAiB,CAAC,MAAM,EAE5B;IAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,GAAG,EAAE,eAAO,CAAC,EAAE;KAChB;IACD,UAAU,EAAE;QACV,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAO,cAAM,CAAC,aAAa;KACjC;IACD,UAAU,EAAE;QACV,eAAe,EAAI,cAAM,CAAC,WAAW;QACrC,YAAY,EAAO,cAAM,CAAC,EAAE;QAC5B,WAAW,EAAQ,CAAC;QACpB,WAAW,EAAQ,cAAM,CAAC,MAAM;QAChC,iBAAiB,EAAE,eAAO,CAAC,EAAE;QAC7B,eAAe,EAAI,eAAO,CAAC,EAAE;QAC7B,QAAQ,EAAW,aAAK,CAAC,EAAE;QAC3B,KAAK,EAAc,cAAM,CAAC,WAAW;QACrC,SAAS,EAAU,EAAE;KACtB;IACD,kBAAkB,EAAE;QAClB,OAAO,EAAE,GAAG;KACb;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EchoLinkButton
|
|
3
|
+
*
|
|
4
|
+
* Presentation-only inline link-style button extracted from the Echo UI Reference.
|
|
5
|
+
* Uses the canonical cyan underline text style.
|
|
6
|
+
*
|
|
7
|
+
* No Expo Router, no auth, no contexts, no services, no app-specific code.
|
|
8
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
9
|
+
*/
|
|
10
|
+
import React from 'react';
|
|
11
|
+
export type EchoLinkButtonProps = {
|
|
12
|
+
label: string;
|
|
13
|
+
onPress: () => void;
|
|
14
|
+
};
|
|
15
|
+
export declare function EchoLinkButton({ label, onPress }: EchoLinkButtonProps): React.JSX.Element;
|
|
16
|
+
//# sourceMappingURL=EchoLinkButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoLinkButton.d.ts","sourceRoot":"","sources":["../../src/components/EchoLinkButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,mBAAmB,GAAG;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,mBAAmB,qBAWrE"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* EchoLinkButton
|
|
4
|
+
*
|
|
5
|
+
* Presentation-only inline link-style button extracted from the Echo UI Reference.
|
|
6
|
+
* Uses the canonical cyan underline text style.
|
|
7
|
+
*
|
|
8
|
+
* No Expo Router, no auth, no contexts, no services, no app-specific code.
|
|
9
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
10
|
+
*/
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.EchoLinkButton = EchoLinkButton;
|
|
16
|
+
const react_1 = __importDefault(require("react"));
|
|
17
|
+
const react_native_1 = require("react-native");
|
|
18
|
+
const theme_1 = require("../theme");
|
|
19
|
+
function EchoLinkButton({ label, onPress }) {
|
|
20
|
+
return (<react_native_1.Pressable onPress={onPress} style={({ pressed }) => [styles.btn, pressed ? styles.btnPressed : null]} accessibilityLabel={label} accessibilityRole="button">
|
|
21
|
+
<react_native_1.Text style={styles.text}>{label}</react_native_1.Text>
|
|
22
|
+
</react_native_1.Pressable>);
|
|
23
|
+
}
|
|
24
|
+
const styles = react_native_1.StyleSheet.create({
|
|
25
|
+
btn: {
|
|
26
|
+
paddingVertical: theme_1.SPACING.xs,
|
|
27
|
+
},
|
|
28
|
+
btnPressed: {
|
|
29
|
+
opacity: 0.65,
|
|
30
|
+
},
|
|
31
|
+
text: {
|
|
32
|
+
fontSize: theme_1.FONTS.sm,
|
|
33
|
+
color: theme_1.COLORS.neonCyan,
|
|
34
|
+
fontWeight: '600',
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=EchoLinkButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoLinkButton.js","sourceRoot":"","sources":["../../src/components/EchoLinkButton.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;AAWH,wCAWC;AApBD,kDAA0B;AAC1B,+CAA2D;AAC3D,oCAAkD;AAOlD,SAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,OAAO,EAAuB;IACpE,OAAO,CACL,CAAC,wBAAS,CACR,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CACzE,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAC1B,iBAAiB,CAAC,QAAQ,CAE1B;MAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,mBAAI,CACzC;IAAA,EAAE,wBAAS,CAAC,CACb,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,GAAG,EAAE;QACH,eAAe,EAAE,eAAO,CAAC,EAAE;KAC5B;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;KACd;IACD,IAAI,EAAE;QACJ,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,KAAK,EAAO,cAAM,CAAC,QAAQ;QAC3B,UAAU,EAAE,KAAK;KAClB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EchoMoreScreen
|
|
3
|
+
*
|
|
4
|
+
* Presentation-only shell for the canonical Echoform "More" screen layout.
|
|
5
|
+
* Provides the dark root, logo/title header, an optional overlay slot,
|
|
6
|
+
* and a padded scrollable content area.
|
|
7
|
+
*
|
|
8
|
+
* The host app is responsible for supplying:
|
|
9
|
+
* - logoSource (any ImageSource accepted by expo-image)
|
|
10
|
+
* - topInset / bottomInset (from useSafeAreaInsets in the host)
|
|
11
|
+
* - overlay (e.g. an UploadPromptModal or similar)
|
|
12
|
+
* - children (sections, rows, cards, etc.)
|
|
13
|
+
*
|
|
14
|
+
* No Expo Router, no safe-area hooks, no auth, no contexts, no services,
|
|
15
|
+
* no storage, no app-specific code.
|
|
16
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
17
|
+
*/
|
|
18
|
+
import React from 'react';
|
|
19
|
+
import { ImageSource } from 'expo-image';
|
|
20
|
+
export type EchoMoreScreenProps = {
|
|
21
|
+
/** Image source for the host-app logo rendered on the left of the header. */
|
|
22
|
+
logoSource: ImageSource;
|
|
23
|
+
/** Accessibility label for the logo image. Defaults to "Echoform Productions Logo". */
|
|
24
|
+
logoAccessibilityLabel?: string;
|
|
25
|
+
/** Title displayed in the centre of the header. Defaults to "More". */
|
|
26
|
+
title?: string;
|
|
27
|
+
/** Optional host-supplied back action. No router dependency is owned here. */
|
|
28
|
+
onBackPress?: () => void;
|
|
29
|
+
/** Accessibility label for the optional back button. Defaults to "Go back". */
|
|
30
|
+
backAccessibilityLabel?: string;
|
|
31
|
+
/** Optional accessibility hint for the back button. */
|
|
32
|
+
backAccessibilityHint?: string;
|
|
33
|
+
/** Safe-area top inset supplied by the host. Defaults to 0. */
|
|
34
|
+
topInset?: number;
|
|
35
|
+
/** Safe-area bottom inset used for scroll padding. Defaults to 0. */
|
|
36
|
+
bottomInset?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Optional overlay rendered between the header and the ScrollView.
|
|
39
|
+
* Intended for modals / prompts that must appear above the scroll content
|
|
40
|
+
* (e.g. UploadPromptModal) without being inside the scroll area.
|
|
41
|
+
*/
|
|
42
|
+
overlay?: React.ReactNode;
|
|
43
|
+
/** Main scrollable content — sections, cards, rows, etc. */
|
|
44
|
+
children: React.ReactNode;
|
|
45
|
+
};
|
|
46
|
+
export declare function EchoMoreScreen({ logoSource, logoAccessibilityLabel, title, onBackPress, backAccessibilityLabel, backAccessibilityHint, topInset, bottomInset, overlay, children, }: EchoMoreScreenProps): React.JSX.Element;
|
|
47
|
+
//# sourceMappingURL=EchoMoreScreen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoMoreScreen.d.ts","sourceRoot":"","sources":["../../src/components/EchoMoreScreen.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAAS,WAAW,EAAE,MAAM,YAAY,CAAC;AAMhD,MAAM,MAAM,mBAAmB,GAAG;IAChC,6EAA6E;IAC7E,UAAU,EAAE,WAAW,CAAC;IACxB,uFAAuF;IACvF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACb,8EAA8E;IAChF,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,+EAA+E;IAC/E,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,uDAAuD;IACvD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4DAA4D;IAC5D,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,sBAAoD,EACpD,KAAc,EACd,WAAW,EACX,sBAAkC,EAClC,qBAAqB,EACrB,QAAY,EACZ,WAAe,EACf,OAAO,EACP,QAAQ,GACT,EAAE,mBAAmB,qBAqErB"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* EchoMoreScreen
|
|
4
|
+
*
|
|
5
|
+
* Presentation-only shell for the canonical Echoform "More" screen layout.
|
|
6
|
+
* Provides the dark root, logo/title header, an optional overlay slot,
|
|
7
|
+
* and a padded scrollable content area.
|
|
8
|
+
*
|
|
9
|
+
* The host app is responsible for supplying:
|
|
10
|
+
* - logoSource (any ImageSource accepted by expo-image)
|
|
11
|
+
* - topInset / bottomInset (from useSafeAreaInsets in the host)
|
|
12
|
+
* - overlay (e.g. an UploadPromptModal or similar)
|
|
13
|
+
* - children (sections, rows, cards, etc.)
|
|
14
|
+
*
|
|
15
|
+
* No Expo Router, no safe-area hooks, no auth, no contexts, no services,
|
|
16
|
+
* no storage, no app-specific code.
|
|
17
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
18
|
+
*/
|
|
19
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.EchoMoreScreen = EchoMoreScreen;
|
|
24
|
+
const react_1 = __importDefault(require("react"));
|
|
25
|
+
const react_native_1 = require("react-native");
|
|
26
|
+
const expo_image_1 = require("expo-image");
|
|
27
|
+
const vector_icons_1 = require("@expo/vector-icons");
|
|
28
|
+
const theme_1 = require("../theme");
|
|
29
|
+
function EchoMoreScreen({ logoSource, logoAccessibilityLabel = 'Echoform Productions Logo', title = 'More', onBackPress, backAccessibilityLabel = 'Go back', backAccessibilityHint, topInset = 0, bottomInset = 0, overlay, children, }) {
|
|
30
|
+
return (<react_native_1.View style={[styles.root, { paddingTop: topInset }]}>
|
|
31
|
+
{onBackPress ? (<react_native_1.View style={styles.navigationRow}>
|
|
32
|
+
<react_native_1.Pressable onPress={onBackPress} style={({ pressed }) => [
|
|
33
|
+
styles.backButton,
|
|
34
|
+
pressed ? styles.backButtonPressed : null,
|
|
35
|
+
]} accessibilityLabel={backAccessibilityLabel} accessibilityHint={backAccessibilityHint} accessibilityRole="button" hitSlop={8}>
|
|
36
|
+
<vector_icons_1.MaterialIcons name="arrow-back" size={22} color={theme_1.COLORS.textPrimary} importantForAccessibility="no" accessibilityElementsHidden/>
|
|
37
|
+
</react_native_1.Pressable>
|
|
38
|
+
</react_native_1.View>) : null}
|
|
39
|
+
{/* ── Header ────────────────────────────────────────────────────── */}
|
|
40
|
+
<react_native_1.View style={styles.header} accessibilityRole="header">
|
|
41
|
+
{/* Logo — left-aligned, 90×90 to match the reference screen */}
|
|
42
|
+
<react_native_1.View accessible accessibilityLabel={logoAccessibilityLabel} accessibilityRole="image" style={styles.logo}>
|
|
43
|
+
<expo_image_1.Image source={logoSource} style={styles.logo} contentFit="contain" accessible={false} importantForAccessibility="no"/>
|
|
44
|
+
</react_native_1.View>
|
|
45
|
+
|
|
46
|
+
{/* Centred title */}
|
|
47
|
+
<react_native_1.View style={styles.titleBlock}>
|
|
48
|
+
<react_native_1.Text style={styles.title}>{title}</react_native_1.Text>
|
|
49
|
+
</react_native_1.View>
|
|
50
|
+
|
|
51
|
+
{/* Right spacer — identical width to the logo so the title is
|
|
52
|
+
visually centred between them. */}
|
|
53
|
+
<react_native_1.View style={styles.headerSpacer}/>
|
|
54
|
+
</react_native_1.View>
|
|
55
|
+
|
|
56
|
+
{/* ── Overlay slot (e.g. upload prompt modal) ───────────────────── */}
|
|
57
|
+
{overlay ? overlay : null}
|
|
58
|
+
|
|
59
|
+
{/* ── Scrollable content ────────────────────────────────────────── */}
|
|
60
|
+
<react_native_1.ScrollView contentContainerStyle={[
|
|
61
|
+
styles.scroll,
|
|
62
|
+
{ paddingBottom: bottomInset + 24 },
|
|
63
|
+
]} showsVerticalScrollIndicator={false}>
|
|
64
|
+
{children}
|
|
65
|
+
</react_native_1.ScrollView>
|
|
66
|
+
</react_native_1.View>);
|
|
67
|
+
}
|
|
68
|
+
const LOGO_SIZE = 90;
|
|
69
|
+
const styles = react_native_1.StyleSheet.create({
|
|
70
|
+
root: {
|
|
71
|
+
flex: 1,
|
|
72
|
+
backgroundColor: theme_1.COLORS.bg,
|
|
73
|
+
},
|
|
74
|
+
navigationRow: {
|
|
75
|
+
paddingHorizontal: theme_1.SPACING.lg,
|
|
76
|
+
paddingTop: theme_1.SPACING.sm,
|
|
77
|
+
alignItems: 'flex-start',
|
|
78
|
+
},
|
|
79
|
+
backButton: {
|
|
80
|
+
width: 40,
|
|
81
|
+
height: 40,
|
|
82
|
+
borderRadius: theme_1.RADIUS.md,
|
|
83
|
+
alignItems: 'center',
|
|
84
|
+
justifyContent: 'center',
|
|
85
|
+
backgroundColor: theme_1.COLORS.surfaceHigh,
|
|
86
|
+
borderWidth: 1,
|
|
87
|
+
borderColor: theme_1.COLORS.border,
|
|
88
|
+
},
|
|
89
|
+
backButtonPressed: {
|
|
90
|
+
opacity: 0.7,
|
|
91
|
+
},
|
|
92
|
+
header: {
|
|
93
|
+
flexDirection: 'row',
|
|
94
|
+
alignItems: 'center',
|
|
95
|
+
paddingHorizontal: theme_1.SPACING.lg,
|
|
96
|
+
paddingVertical: theme_1.SPACING.md,
|
|
97
|
+
gap: theme_1.SPACING.sm,
|
|
98
|
+
},
|
|
99
|
+
logo: {
|
|
100
|
+
width: LOGO_SIZE,
|
|
101
|
+
height: LOGO_SIZE,
|
|
102
|
+
},
|
|
103
|
+
titleBlock: {
|
|
104
|
+
flex: 1,
|
|
105
|
+
alignItems: 'center',
|
|
106
|
+
},
|
|
107
|
+
title: {
|
|
108
|
+
fontSize: theme_1.FONTS.xxl,
|
|
109
|
+
fontWeight: '800',
|
|
110
|
+
color: theme_1.COLORS.textPrimary,
|
|
111
|
+
},
|
|
112
|
+
/** Matches logo width so the centred title block is symmetrical. */
|
|
113
|
+
headerSpacer: {
|
|
114
|
+
width: LOGO_SIZE,
|
|
115
|
+
},
|
|
116
|
+
scroll: {
|
|
117
|
+
padding: theme_1.SPACING.lg,
|
|
118
|
+
gap: theme_1.SPACING.lg,
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
//# sourceMappingURL=EchoMoreScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoMoreScreen.js","sourceRoot":"","sources":["../../src/components/EchoMoreScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EchoPasswordField
|
|
3
|
+
*
|
|
4
|
+
* Presentation-only labeled password input with visibility toggle.
|
|
5
|
+
* Extracted from the Echo UI Reference PasswordField.
|
|
6
|
+
*
|
|
7
|
+
* Preserves the "Show [label]" / "Hide [label]" accessibility labels,
|
|
8
|
+
* 48pt minimum height, eye-icon toggle, and canonical styling.
|
|
9
|
+
*
|
|
10
|
+
* No Expo Router, no auth, no contexts, no services, no app-specific code.
|
|
11
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
12
|
+
*/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import { TextInput } from 'react-native';
|
|
15
|
+
export type EchoPasswordFieldProps = {
|
|
16
|
+
label: string;
|
|
17
|
+
value: string;
|
|
18
|
+
onChangeText: (value: string) => void;
|
|
19
|
+
visible: boolean;
|
|
20
|
+
onToggleVisible: () => void;
|
|
21
|
+
inputRef?: React.RefObject<TextInput | null>;
|
|
22
|
+
returnKeyType?: 'next' | 'done' | 'go';
|
|
23
|
+
onSubmitEditing?: () => void;
|
|
24
|
+
accessibilityHint?: string;
|
|
25
|
+
placeholder?: string;
|
|
26
|
+
};
|
|
27
|
+
export declare function EchoPasswordField({ label, value, onChangeText, visible, onToggleVisible, inputRef, returnKeyType, onSubmitEditing, accessibilityHint, placeholder, }: EchoPasswordFieldProps): React.JSX.Element;
|
|
28
|
+
//# sourceMappingURL=EchoPasswordField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoPasswordField.d.ts","sourceRoot":"","sources":["../../src/components/EchoPasswordField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAGL,SAAS,EAGV,MAAM,cAAc,CAAC;AAItB,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,OAAO,EAAE,OAAO,CAAC;IACjB,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC7C,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACvC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,KAAK,EACL,YAAY,EACZ,OAAO,EACP,eAAe,EACf,QAAQ,EACR,aAAsB,EACtB,eAAe,EACf,iBAAiB,EACjB,WAAwB,GACzB,EAAE,sBAAsB,qBAqCxB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* EchoPasswordField
|
|
4
|
+
*
|
|
5
|
+
* Presentation-only labeled password input with visibility toggle.
|
|
6
|
+
* Extracted from the Echo UI Reference PasswordField.
|
|
7
|
+
*
|
|
8
|
+
* Preserves the "Show [label]" / "Hide [label]" accessibility labels,
|
|
9
|
+
* 48pt minimum height, eye-icon toggle, and canonical styling.
|
|
10
|
+
*
|
|
11
|
+
* No Expo Router, no auth, no contexts, no services, no app-specific code.
|
|
12
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
13
|
+
*/
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.EchoPasswordField = EchoPasswordField;
|
|
19
|
+
const react_1 = __importDefault(require("react"));
|
|
20
|
+
const react_native_1 = require("react-native");
|
|
21
|
+
const vector_icons_1 = require("@expo/vector-icons");
|
|
22
|
+
const theme_1 = require("../theme");
|
|
23
|
+
function EchoPasswordField({ label, value, onChangeText, visible, onToggleVisible, inputRef, returnKeyType = 'done', onSubmitEditing, accessibilityHint, placeholder = '••••••••', }) {
|
|
24
|
+
return (<react_native_1.View style={styles.fieldWrap}>
|
|
25
|
+
<react_native_1.Text style={styles.fieldLabel}>{label}</react_native_1.Text>
|
|
26
|
+
<react_native_1.View style={styles.passwordRow}>
|
|
27
|
+
<react_native_1.TextInput ref={inputRef} style={styles.passwordInput} value={value} onChangeText={onChangeText} placeholder={placeholder} placeholderTextColor={theme_1.COLORS.textMuted} secureTextEntry={!visible} autoCapitalize="none" autoCorrect={false} returnKeyType={returnKeyType} onSubmitEditing={onSubmitEditing} accessibilityLabel={label} accessibilityHint={accessibilityHint} accessibilityRole="none"/>
|
|
28
|
+
<react_native_1.Pressable onPress={onToggleVisible} style={styles.passwordEye} accessibilityLabel={visible ? `Hide ${label}` : `Show ${label}`} accessibilityRole="button" hitSlop={8}>
|
|
29
|
+
<vector_icons_1.MaterialIcons name={visible ? 'visibility-off' : 'visibility'} size={20} color={theme_1.COLORS.textMuted}/>
|
|
30
|
+
</react_native_1.Pressable>
|
|
31
|
+
</react_native_1.View>
|
|
32
|
+
</react_native_1.View>);
|
|
33
|
+
}
|
|
34
|
+
const styles = react_native_1.StyleSheet.create({
|
|
35
|
+
fieldWrap: {
|
|
36
|
+
gap: theme_1.SPACING.xs,
|
|
37
|
+
},
|
|
38
|
+
fieldLabel: {
|
|
39
|
+
fontSize: theme_1.FONTS.sm,
|
|
40
|
+
fontWeight: '600',
|
|
41
|
+
color: theme_1.COLORS.textSecondary,
|
|
42
|
+
},
|
|
43
|
+
passwordRow: {
|
|
44
|
+
flexDirection: 'row',
|
|
45
|
+
alignItems: 'center',
|
|
46
|
+
backgroundColor: theme_1.COLORS.surfaceHigh,
|
|
47
|
+
borderRadius: theme_1.RADIUS.md,
|
|
48
|
+
borderWidth: 1,
|
|
49
|
+
borderColor: theme_1.COLORS.border,
|
|
50
|
+
minHeight: 48,
|
|
51
|
+
overflow: 'hidden',
|
|
52
|
+
},
|
|
53
|
+
passwordInput: {
|
|
54
|
+
flex: 1,
|
|
55
|
+
paddingHorizontal: theme_1.SPACING.md,
|
|
56
|
+
paddingVertical: theme_1.SPACING.sm,
|
|
57
|
+
fontSize: theme_1.FONTS.md,
|
|
58
|
+
color: theme_1.COLORS.textPrimary,
|
|
59
|
+
},
|
|
60
|
+
passwordEye: {
|
|
61
|
+
width: 48,
|
|
62
|
+
height: 48,
|
|
63
|
+
alignItems: 'center',
|
|
64
|
+
justifyContent: 'center',
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
//# sourceMappingURL=EchoPasswordField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoPasswordField.js","sourceRoot":"","sources":["../../src/components/EchoPasswordField.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;AA0BH,8CAgDC;AAxED,kDAA0B;AAC1B,+CAMsB;AACtB,qDAAmD;AACnD,oCAA0D;AAe1D,SAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,KAAK,EACL,YAAY,EACZ,OAAO,EACP,eAAe,EACf,QAAQ,EACR,aAAa,GAAG,MAAM,EACtB,eAAe,EACf,iBAAiB,EACjB,WAAW,GAAG,UAAU,GACD;IACvB,OAAO,CACL,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;MAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,mBAAI,CAC7C;MAAA,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAC9B;QAAA,CAAC,wBAAS,CACR,GAAG,CAAC,CAAC,QAAQ,CAAC,CACd,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAC5B,KAAK,CAAC,CAAC,KAAK,CAAC,CACb,YAAY,CAAC,CAAC,YAAY,CAAC,CAC3B,WAAW,CAAC,CAAC,WAAW,CAAC,CACzB,oBAAoB,CAAC,CAAC,cAAM,CAAC,SAAS,CAAC,CACvC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,CAC1B,cAAc,CAAC,MAAM,CACrB,WAAW,CAAC,CAAC,KAAK,CAAC,CACnB,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,eAAe,CAAC,CAAC,eAAe,CAAC,CACjC,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAC1B,iBAAiB,CAAC,CAAC,iBAAiB,CAAC,CACrC,iBAAiB,CAAC,MAAM,EAE1B;QAAA,CAAC,wBAAS,CACR,OAAO,CAAC,CAAC,eAAe,CAAC,CACzB,KAAK,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAC1B,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,EAAE,CAAC,CAChE,iBAAiB,CAAC,QAAQ,CAC1B,OAAO,CAAC,CAAC,CAAC,CAAC,CAEX;UAAA,CAAC,4BAAa,CACZ,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAChD,IAAI,CAAC,CAAC,EAAE,CAAC,CACT,KAAK,CAAC,CAAC,cAAM,CAAC,SAAS,CAAC,EAE5B;QAAA,EAAE,wBAAS,CACb;MAAA,EAAE,mBAAI,CACR;IAAA,EAAE,mBAAI,CAAC,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,GAAG,EAAE,eAAO,CAAC,EAAE;KAChB;IACD,UAAU,EAAE;QACV,QAAQ,EAAI,aAAK,CAAC,EAAE;QACpB,UAAU,EAAE,KAAK;QACjB,KAAK,EAAO,cAAM,CAAC,aAAa;KACjC;IACD,WAAW,EAAE;QACX,aAAa,EAAI,KAAK;QACtB,UAAU,EAAO,QAAQ;QACzB,eAAe,EAAE,cAAM,CAAC,WAAW;QACnC,YAAY,EAAK,cAAM,CAAC,EAAE;QAC1B,WAAW,EAAM,CAAC;QAClB,WAAW,EAAM,cAAM,CAAC,MAAM;QAC9B,SAAS,EAAQ,EAAE;QACnB,QAAQ,EAAS,QAAQ;KAC1B;IACD,aAAa,EAAE;QACb,IAAI,EAAe,CAAC;QACpB,iBAAiB,EAAE,eAAO,CAAC,EAAE;QAC7B,eAAe,EAAI,eAAO,CAAC,EAAE;QAC7B,QAAQ,EAAW,aAAK,CAAC,EAAE;QAC3B,KAAK,EAAc,cAAM,CAAC,WAAW;KACtC;IACD,WAAW,EAAE;QACX,KAAK,EAAW,EAAE;QAClB,MAAM,EAAU,EAAE;QAClB,UAAU,EAAM,QAAQ;QACxB,cAAc,EAAE,QAAQ;KACzB;CACF,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EchoPrimaryButton
|
|
3
|
+
*
|
|
4
|
+
* Presentation-only primary action button extracted from the Echo UI Reference.
|
|
5
|
+
* Supports a loading spinner, disabled state, and custom accent color.
|
|
6
|
+
*
|
|
7
|
+
* Preserves the 52pt minimum height, border treatment, pressed opacity,
|
|
8
|
+
* loading/disabled accessibility states, and canonical typography.
|
|
9
|
+
*
|
|
10
|
+
* No Expo Router, no auth, no contexts, no services, no app-specific code.
|
|
11
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
12
|
+
*/
|
|
13
|
+
import React from 'react';
|
|
14
|
+
export type EchoPrimaryButtonProps = {
|
|
15
|
+
label: string;
|
|
16
|
+
onPress: () => void;
|
|
17
|
+
loading?: boolean;
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
/** Accent color for border, background tint, and text. Defaults to COLORS.neonCyan. */
|
|
20
|
+
color?: string;
|
|
21
|
+
};
|
|
22
|
+
export declare function EchoPrimaryButton({ label, onPress, loading, disabled, color, }: EchoPrimaryButtonProps): React.JSX.Element;
|
|
23
|
+
//# sourceMappingURL=EchoPrimaryButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoPrimaryButton.d.ts","sourceRoot":"","sources":["../../src/components/EchoPrimaryButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,OAAO,EACP,OAAe,EACf,QAAgB,EAChB,KAAuB,GACxB,EAAE,sBAAsB,qBAwBxB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* EchoPrimaryButton
|
|
4
|
+
*
|
|
5
|
+
* Presentation-only primary action button extracted from the Echo UI Reference.
|
|
6
|
+
* Supports a loading spinner, disabled state, and custom accent color.
|
|
7
|
+
*
|
|
8
|
+
* Preserves the 52pt minimum height, border treatment, pressed opacity,
|
|
9
|
+
* loading/disabled accessibility states, and canonical typography.
|
|
10
|
+
*
|
|
11
|
+
* No Expo Router, no auth, no contexts, no services, no app-specific code.
|
|
12
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
13
|
+
*/
|
|
14
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
15
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.EchoPrimaryButton = EchoPrimaryButton;
|
|
19
|
+
const react_1 = __importDefault(require("react"));
|
|
20
|
+
const react_native_1 = require("react-native");
|
|
21
|
+
const theme_1 = require("../theme");
|
|
22
|
+
function EchoPrimaryButton({ label, onPress, loading = false, disabled = false, color = theme_1.COLORS.neonCyan, }) {
|
|
23
|
+
const isDisabled = disabled || loading;
|
|
24
|
+
return (<react_native_1.Pressable onPress={onPress} disabled={isDisabled} style={({ pressed }) => [
|
|
25
|
+
styles.btn,
|
|
26
|
+
{ borderColor: color, backgroundColor: color + '1A' },
|
|
27
|
+
pressed ? styles.btnPressed : null,
|
|
28
|
+
isDisabled ? styles.btnDisabled : null,
|
|
29
|
+
]} accessibilityLabel={label} accessibilityRole="button" accessibilityState={{ busy: loading, disabled: isDisabled }}>
|
|
30
|
+
{loading ? (<react_native_1.ActivityIndicator size="small" color={color}/>) : (<react_native_1.Text style={[styles.btnText, { color }]}>{label}</react_native_1.Text>)}
|
|
31
|
+
</react_native_1.Pressable>);
|
|
32
|
+
}
|
|
33
|
+
const styles = react_native_1.StyleSheet.create({
|
|
34
|
+
btn: {
|
|
35
|
+
borderRadius: theme_1.RADIUS.lg,
|
|
36
|
+
borderWidth: 1.5,
|
|
37
|
+
paddingVertical: theme_1.SPACING.md,
|
|
38
|
+
alignItems: 'center',
|
|
39
|
+
justifyContent: 'center',
|
|
40
|
+
minHeight: 52,
|
|
41
|
+
},
|
|
42
|
+
btnPressed: {
|
|
43
|
+
opacity: 0.75,
|
|
44
|
+
},
|
|
45
|
+
btnDisabled: {
|
|
46
|
+
opacity: 0.5,
|
|
47
|
+
},
|
|
48
|
+
btnText: {
|
|
49
|
+
fontSize: theme_1.FONTS.md,
|
|
50
|
+
fontWeight: '700',
|
|
51
|
+
letterSpacing: 0.3,
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=EchoPrimaryButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoPrimaryButton.js","sourceRoot":"","sources":["../../src/components/EchoPrimaryButton.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;;;AAoBH,8CA8BC;AAhDD,kDAA0B;AAC1B,+CAKsB;AACtB,oCAA0D;AAW1D,SAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,OAAO,EACP,OAAO,GAAG,KAAK,EACf,QAAQ,GAAG,KAAK,EAChB,KAAK,GAAG,cAAM,CAAC,QAAQ,GACA;IACvB,MAAM,UAAU,GAAG,QAAQ,IAAI,OAAO,CAAC;IAEvC,OAAO,CACL,CAAC,wBAAS,CACR,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,QAAQ,CAAC,CAAC,UAAU,CAAC,CACrB,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG;YACV,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE;YACrD,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;YAClC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;SACvC,CAAC,CACF,kBAAkB,CAAC,CAAC,KAAK,CAAC,CAC1B,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAE5D;MAAA,CAAC,OAAO,CAAC,CAAC,CAAC,CACT,CAAC,gCAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAG,CACjD,CAAC,CAAC,CAAC,CACF,CAAC,mBAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,mBAAI,CAAC,CACzD,CACH;IAAA,EAAE,wBAAS,CAAC,CACb,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,yBAAU,CAAC,MAAM,CAAC;IAC/B,GAAG,EAAE;QACH,YAAY,EAAO,cAAM,CAAC,EAAE;QAC5B,WAAW,EAAQ,GAAG;QACtB,eAAe,EAAI,eAAO,CAAC,EAAE;QAC7B,UAAU,EAAS,QAAQ;QAC3B,cAAc,EAAK,QAAQ;QAC3B,SAAS,EAAU,EAAE;KACtB;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;KACd;IACD,WAAW,EAAE;QACX,OAAO,EAAE,GAAG;KACb;IACD,OAAO,EAAE;QACP,QAAQ,EAAO,aAAK,CAAC,EAAE;QACvB,UAAU,EAAK,KAAK;QACpB,aAAa,EAAE,GAAG;KACnB;CACF,CAAC,CAAC"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* No Supabase, no Expo Router, no app-specific services or contexts.
|
|
6
6
|
*
|
|
7
7
|
* Canonical shared component for @echoform/echo-ui.
|
|
8
|
-
*
|
|
8
|
+
* Source: Echo UI Reference – theme/rarity imports only changed.
|
|
9
9
|
*/
|
|
10
10
|
import React from 'react';
|
|
11
11
|
import { ImageSource } from 'expo-image';
|
|
@@ -23,9 +23,13 @@ export type EchoProfileCardProps = {
|
|
|
23
23
|
rarity: EchoTitleRarity;
|
|
24
24
|
} | null;
|
|
25
25
|
accentColor?: string;
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* Optional host-supplied secondary text shown in guest mode.
|
|
28
|
+
* Examples are owned by the consuming app.
|
|
29
|
+
*/
|
|
30
|
+
guestDetail?: string | null;
|
|
27
31
|
onPress: () => void;
|
|
28
32
|
accessibilityHint?: string;
|
|
29
33
|
};
|
|
30
|
-
export declare function EchoProfileCard({ signedIn, loading, profileName, email, emailVerified, emblemSource, emblemDisplayName, title, accentColor,
|
|
34
|
+
export declare function EchoProfileCard({ signedIn, loading, profileName, email, emailVerified, emblemSource, emblemDisplayName, title, accentColor, guestDetail, onPress, accessibilityHint, }: EchoProfileCardProps): React.JSX.Element;
|
|
31
35
|
//# sourceMappingURL=EchoProfileCard.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EchoProfileCard.d.ts","sourceRoot":"","sources":["../../src/components/EchoProfileCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,OAAO,EAAE,eAAe,EAAgC,MAAM,gBAAgB,CAAC;AAM/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,eAAe,CAAC;KACzB,GAAG,IAAI,CAAC;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,
|
|
1
|
+
{"version":3,"file":"EchoProfileCard.d.ts","sourceRoot":"","sources":["../../src/components/EchoProfileCard.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAIzC,OAAO,EAAE,eAAe,EAAgC,MAAM,gBAAgB,CAAC;AAM/E,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,eAAe,CAAC;KACzB,GAAG,IAAI,CAAC;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,OAAe,EACf,WAAW,EACX,KAAK,EACL,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,KAAK,EACL,WAA6B,EAC7B,WAAW,EACX,OAAO,EACP,iBAAiB,GAClB,EAAE,oBAAoB,qBAsGtB"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* No Supabase, no Expo Router, no app-specific services or contexts.
|
|
7
7
|
*
|
|
8
8
|
* Canonical shared component for @echoform/echo-ui.
|
|
9
|
-
*
|
|
9
|
+
* Source: Echo UI Reference – theme/rarity imports only changed.
|
|
10
10
|
*/
|
|
11
11
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
@@ -21,7 +21,7 @@ const titleRarity_1 = require("../titleRarity");
|
|
|
21
21
|
const EchoEmblem_1 = require("./EchoEmblem");
|
|
22
22
|
const EMBLEM_SIZE = 84;
|
|
23
23
|
const GUEST_AVATAR_SIZE = 52;
|
|
24
|
-
function EchoProfileCard({ signedIn, loading = false, profileName, email, emailVerified, emblemSource, emblemDisplayName, title, accentColor = theme_1.COLORS.neonCyan,
|
|
24
|
+
function EchoProfileCard({ signedIn, loading = false, profileName, email, emailVerified, emblemSource, emblemDisplayName, title, accentColor = theme_1.COLORS.neonCyan, guestDetail, onPress, accessibilityHint, }) {
|
|
25
25
|
var _a;
|
|
26
26
|
// ── Accessibility label ───────────────────────────────────────────────────
|
|
27
27
|
const a11yLabel = signedIn
|
|
@@ -64,7 +64,7 @@ function EchoProfileCard({ signedIn, loading = false, profileName, email, emailV
|
|
|
64
64
|
|
|
65
65
|
{/* ── Text block ── */}
|
|
66
66
|
<react_native_1.View style={styles.textBlock}>
|
|
67
|
-
{signedIn ? (<SignedInText profileName={profileName} email={email} emailVerified={emailVerified} title={title}/>) : (<GuestText
|
|
67
|
+
{signedIn ? (<SignedInText profileName={profileName} email={email} emailVerified={emailVerified} title={title}/>) : (<GuestText guestDetail={guestDetail}/>)}
|
|
68
68
|
</react_native_1.View>
|
|
69
69
|
|
|
70
70
|
{/* ── Chevron ── */}
|
|
@@ -106,16 +106,11 @@ function SignedInText({ profileName, email, emailVerified, title, }) {
|
|
|
106
106
|
</react_native_1.Text>
|
|
107
107
|
</>);
|
|
108
108
|
}
|
|
109
|
-
function GuestText({
|
|
110
|
-
const countText = typeof guestItemCount === 'number'
|
|
111
|
-
? guestItemCount === 1
|
|
112
|
-
? '1 item in vault'
|
|
113
|
-
: `${guestItemCount} items in vault`
|
|
114
|
-
: null;
|
|
109
|
+
function GuestText({ guestDetail }) {
|
|
115
110
|
return (<>
|
|
116
111
|
<react_native_1.Text style={styles.profileName}>Guest (This Device)</react_native_1.Text>
|
|
117
112
|
|
|
118
|
-
{
|
|
113
|
+
{guestDetail ? (<react_native_1.Text style={styles.guestItemCount}>{guestDetail}</react_native_1.Text>) : null}
|
|
119
114
|
|
|
120
115
|
<react_native_1.Text style={styles.accountNote}>
|
|
121
116
|
Tap to sign in or create an Echo Profile
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EchoProfileCard.js","sourceRoot":"","sources":["../../src/components/EchoProfileCard.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;
|
|
1
|
+
{"version":3,"file":"EchoProfileCard.js","sourceRoot":"","sources":["../../src/components/EchoProfileCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* EchoProfileDivider
|
|
3
|
+
*
|
|
4
|
+
* 1px horizontal rule used between rows in Echo Profile section cards.
|
|
5
|
+
* Extracted from the Echo UI Reference rowDivider pattern.
|
|
6
|
+
*
|
|
7
|
+
* No props required.
|
|
8
|
+
*
|
|
9
|
+
* No Expo Router, no auth, no contexts, no services, no app-specific code.
|
|
10
|
+
* Canonical shared component for @echoform/echo-ui.
|
|
11
|
+
*/
|
|
12
|
+
import React from 'react';
|
|
13
|
+
export declare function EchoProfileDivider(): React.JSX.Element;
|
|
14
|
+
//# sourceMappingURL=EchoProfileDivider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EchoProfileDivider.d.ts","sourceRoot":"","sources":["../../src/components/EchoProfileDivider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,wBAAgB,kBAAkB,sBAEjC"}
|