hackmate-cli 1.0.8 → 1.0.10
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/dist/features/group/hooks/useGroup.d.ts +1 -1
- package/dist/features/profile/components/index.d.ts.map +1 -1
- package/dist/features/profile/components/index.js +3 -4
- package/dist/features/profile/components/index.js.map +1 -1
- package/dist/features/profile/components/profile-edit-v2.screen.d.ts +12 -0
- package/dist/features/profile/components/profile-edit-v2.screen.d.ts.map +1 -0
- package/dist/features/profile/components/profile-edit-v2.screen.js +111 -0
- package/dist/features/profile/components/profile-edit-v2.screen.js.map +1 -0
- package/dist/features/profile/components/profile-edit-v3.screen.d.ts +2 -0
- package/dist/features/profile/components/profile-edit-v3.screen.d.ts.map +1 -0
- package/dist/features/profile/components/profile-edit-v3.screen.js +175 -0
- package/dist/features/profile/components/profile-edit-v3.screen.js.map +1 -0
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ interface UseGroupLogicProps {
|
|
|
4
4
|
extraArg?: string;
|
|
5
5
|
}
|
|
6
6
|
export declare const useGroupLogic: ({ action, id, extraArg }: UseGroupLogicProps) => {
|
|
7
|
-
action: "
|
|
7
|
+
action: "join" | "list" | "view" | "accept" | "create";
|
|
8
8
|
data: any;
|
|
9
9
|
error: string | null;
|
|
10
10
|
loading: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/profile/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/profile/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAM1B,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAGvD,CAAC;AAEF,eAAO,MAAM,WAAW,+CAEvB,CAAC"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import { useProfileViewLogic
|
|
2
|
+
import { useProfileViewLogic } from '../hooks/useProfile.js';
|
|
3
3
|
import { ProfileViewScreen } from './profile-view.screen.js';
|
|
4
|
-
import {
|
|
4
|
+
import { ProfileEditV3 } from './profile-edit-v3.screen.js';
|
|
5
5
|
export const ProfileView = ({ username }) => {
|
|
6
6
|
const logic = useProfileViewLogic(username);
|
|
7
7
|
return _jsx(ProfileViewScreen, { ...logic });
|
|
8
8
|
};
|
|
9
9
|
export const ProfileEdit = () => {
|
|
10
|
-
|
|
11
|
-
return _jsx(ProfileEditScreen, { ...logic });
|
|
10
|
+
return _jsx(ProfileEditV3, {});
|
|
12
11
|
};
|
|
13
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/profile/components/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/features/profile/components/index.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,mBAAmB,EAAuB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,MAAM,CAAC,MAAM,WAAW,GAAoC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;IACzE,MAAM,KAAK,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,KAAC,iBAAiB,OAAK,KAAK,GAAI,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,GAAG,EAAE;IAC5B,OAAO,KAAC,aAAa,KAAG,CAAC;AAC7B,CAAC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface ProfileEditScreenProps {
|
|
3
|
+
profile: any;
|
|
4
|
+
setProfile: (profile: any) => void;
|
|
5
|
+
loading: boolean;
|
|
6
|
+
handleSubmit: () => void;
|
|
7
|
+
authError?: string | null;
|
|
8
|
+
authLoading?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const ProfileEditScreen: React.FC<ProfileEditScreenProps>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=profile-edit-v2.screen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-edit-v2.screen.d.ts","sourceRoot":"","sources":["../../../../src/features/profile/components/profile-edit-v2.screen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAInD,UAAU,sBAAsB;IAC5B,OAAO,EAAE,GAAG,CAAC;IACb,UAAU,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAsJ9D,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Text, Box, useInput, useApp } from 'ink';
|
|
4
|
+
import TextInput from 'ink-text-input';
|
|
5
|
+
export const ProfileEditScreen = ({ profile, setProfile, loading, handleSubmit, authLoading, authError }) => {
|
|
6
|
+
const { exit } = useApp();
|
|
7
|
+
const [cursor, setCursor] = useState(0);
|
|
8
|
+
const [editing, setEditing] = useState(false);
|
|
9
|
+
const [editValue, setEditValue] = useState('');
|
|
10
|
+
const [selectMode, setSelectMode] = useState(false);
|
|
11
|
+
const [selectCursor, setSelectCursor] = useState(0);
|
|
12
|
+
// Early returns for loading states
|
|
13
|
+
if (authLoading)
|
|
14
|
+
return _jsx(Text, { children: "Checking auth..." });
|
|
15
|
+
if (authError)
|
|
16
|
+
return _jsx(Text, { color: "red", children: authError });
|
|
17
|
+
if (loading)
|
|
18
|
+
return _jsx(Text, { children: "Saving..." });
|
|
19
|
+
if (!profile)
|
|
20
|
+
return _jsx(Text, { children: "Loading..." });
|
|
21
|
+
const fields = [
|
|
22
|
+
{ key: 'fullName', label: 'Full Name', type: 'text' },
|
|
23
|
+
{ key: 'bio', label: 'Bio', type: 'text' },
|
|
24
|
+
{ key: 'intent', label: 'Intent', type: 'select', options: ['startup', 'collab', 'friends', 'mentorship', 'dating'] },
|
|
25
|
+
{ key: 'age', label: 'Age', type: 'number' },
|
|
26
|
+
{ key: 'gender', label: 'Gender', type: 'select', options: ['male', 'female', 'other', 'prefer-not-to-say'] },
|
|
27
|
+
{ key: 'city', label: 'City', type: 'text' },
|
|
28
|
+
{ key: 'country', label: 'Country', type: 'text' },
|
|
29
|
+
{ key: 'github', label: 'GitHub', type: 'text' },
|
|
30
|
+
{ key: 'linkedin', label: 'LinkedIn', type: 'text' },
|
|
31
|
+
{ key: 'stack', label: 'Tech Stack (comma-separated)', type: 'text' },
|
|
32
|
+
];
|
|
33
|
+
const items = [...fields, { key: 'SAVE', label: '✅ SAVE', type: 'action' }];
|
|
34
|
+
useInput((input, key) => {
|
|
35
|
+
if (editing && !selectMode) {
|
|
36
|
+
// Text input mode - let TextInput handle it
|
|
37
|
+
if (key.escape) {
|
|
38
|
+
setEditing(false);
|
|
39
|
+
setEditValue('');
|
|
40
|
+
}
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (selectMode) {
|
|
44
|
+
const field = fields[cursor];
|
|
45
|
+
const options = field.type === 'select' ? field.options || [] : [];
|
|
46
|
+
if (key.upArrow) {
|
|
47
|
+
setSelectCursor(Math.max(0, selectCursor - 1));
|
|
48
|
+
}
|
|
49
|
+
else if (key.downArrow) {
|
|
50
|
+
setSelectCursor(Math.min(options.length - 1, selectCursor + 1));
|
|
51
|
+
}
|
|
52
|
+
else if (key.return) {
|
|
53
|
+
setProfile({ ...profile, [field.key]: options[selectCursor] });
|
|
54
|
+
setSelectMode(false);
|
|
55
|
+
setSelectCursor(0);
|
|
56
|
+
}
|
|
57
|
+
else if (key.escape) {
|
|
58
|
+
setSelectMode(false);
|
|
59
|
+
setSelectCursor(0);
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
// Menu navigation
|
|
64
|
+
if (key.upArrow) {
|
|
65
|
+
setCursor(Math.max(0, cursor - 1));
|
|
66
|
+
}
|
|
67
|
+
else if (key.downArrow) {
|
|
68
|
+
setCursor(Math.min(items.length - 1, cursor + 1));
|
|
69
|
+
}
|
|
70
|
+
else if (key.return) {
|
|
71
|
+
const item = items[cursor];
|
|
72
|
+
if (item.key === 'SAVE') {
|
|
73
|
+
handleSubmit();
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
const field = item;
|
|
77
|
+
if (field.type === 'select') {
|
|
78
|
+
setSelectMode(true);
|
|
79
|
+
setSelectCursor(0);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
setEditValue(String(profile[field.key] || ''));
|
|
83
|
+
setEditing(true);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
else if (key.escape) {
|
|
88
|
+
exit();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
if (selectMode) {
|
|
92
|
+
const field = fields[cursor];
|
|
93
|
+
const options = field.options || [];
|
|
94
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "cyan", children: [_jsxs(Text, { bold: true, color: "cyan", children: ["Select ", field.label] }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: options.map((opt, i) => (_jsxs(Text, { color: i === selectCursor ? 'green' : 'white', children: [i === selectCursor ? '❯ ' : ' ', opt] }, opt))) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "\u2191\u2193 arrows, Enter to select, Esc to cancel" }) })] }));
|
|
95
|
+
}
|
|
96
|
+
if (editing) {
|
|
97
|
+
const field = fields[cursor];
|
|
98
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "cyan", children: [_jsxs(Text, { bold: true, color: "cyan", children: ["Edit ", field.label] }), _jsx(Box, { marginTop: 1, children: _jsx(TextInput, { value: editValue, onChange: setEditValue, onSubmit: () => {
|
|
99
|
+
const val = field.type === 'number' ? (editValue ? parseInt(editValue) : undefined) : editValue;
|
|
100
|
+
setProfile({ ...profile, [field.key]: val });
|
|
101
|
+
setEditing(false);
|
|
102
|
+
setEditValue('');
|
|
103
|
+
} }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Enter to save, Esc to cancel" }) })] }));
|
|
104
|
+
}
|
|
105
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "yellow", children: [_jsx(Text, { bold: true, color: "yellow", children: "\u270F\uFE0F Edit Profile" }), _jsx(Text, { color: "gray", children: "\u2191\u2193 arrows, Enter to edit, Esc to exit" }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: items.map((item, i) => {
|
|
106
|
+
const val = profile[item.key];
|
|
107
|
+
const display = val !== undefined && val !== '' && val !== null ? String(val) : '(not set)';
|
|
108
|
+
return (_jsxs(Text, { color: i === cursor ? 'green' : 'white', children: [i === cursor ? '❯ ' : ' ', item.label, " \u2014 ", item.key === 'SAVE' ? '' : display] }, item.key));
|
|
109
|
+
}) })] }));
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=profile-edit-v2.screen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-edit-v2.screen.js","sourceRoot":"","sources":["../../../../src/features/profile/components/profile-edit-v2.screen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-edit-v3.screen.d.ts","sourceRoot":"","sources":["../../../../src/features/profile/components/profile-edit-v3.screen.tsx"],"names":[],"mappings":"AA2BA,eAAO,MAAM,aAAa,+CA2NzB,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { Box, Text, useInput, useApp } from 'ink';
|
|
4
|
+
import TextInput from 'ink-text-input';
|
|
5
|
+
import api from '../../../api.js';
|
|
6
|
+
import { useAuth } from '../../../context/index.js';
|
|
7
|
+
const FIELDS = [
|
|
8
|
+
{ key: 'fullName', label: 'Full Name', type: 'text', placeholder: 'John Doe' },
|
|
9
|
+
{ key: 'bio', label: 'Bio', type: 'text', placeholder: 'Full-stack developer who loves React' },
|
|
10
|
+
{ key: 'intent', label: 'Intent', type: 'select', options: ['dating', 'networking', 'collab', 'friends', 'mentorship'] },
|
|
11
|
+
{ key: 'age', label: 'Age', type: 'number', placeholder: '25' },
|
|
12
|
+
{ key: 'gender', label: 'Gender', type: 'select', options: ['male', 'female', 'non-binary', 'other'] },
|
|
13
|
+
{ key: 'city', label: 'City', type: 'text', placeholder: 'Mumbai' },
|
|
14
|
+
{ key: 'country', label: 'Country', type: 'text', placeholder: 'India' },
|
|
15
|
+
{ key: 'github', label: 'GitHub Username', type: 'text', placeholder: 'johndoe' },
|
|
16
|
+
{ key: 'linkedin', label: 'LinkedIn', type: 'text', placeholder: 'john-doe' },
|
|
17
|
+
{ key: 'stack', label: 'Tech Stack (comma separated)', type: 'text', placeholder: 'React, Node.js, MongoDB' },
|
|
18
|
+
];
|
|
19
|
+
export const ProfileEditV3 = () => {
|
|
20
|
+
const { exit } = useApp();
|
|
21
|
+
const { isAuthenticated, isLoading: authLoading } = useAuth();
|
|
22
|
+
// Profile data
|
|
23
|
+
const [profile, setProfile] = useState(null);
|
|
24
|
+
const [loading, setLoading] = useState(true);
|
|
25
|
+
const [error, setError] = useState(null);
|
|
26
|
+
// Navigation state
|
|
27
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
28
|
+
const [isEditing, setIsEditing] = useState(false);
|
|
29
|
+
const [editValue, setEditValue] = useState('');
|
|
30
|
+
const [isSelectMode, setIsSelectMode] = useState(false);
|
|
31
|
+
const [selectIndex, setSelectIndex] = useState(0);
|
|
32
|
+
// Fetch profile on mount
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
if (authLoading)
|
|
35
|
+
return;
|
|
36
|
+
if (!isAuthenticated) {
|
|
37
|
+
setError('Please login first using "hackmate auth login"');
|
|
38
|
+
setLoading(false);
|
|
39
|
+
setTimeout(() => exit(), 100);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const fetchProfile = async () => {
|
|
43
|
+
try {
|
|
44
|
+
const { data } = await api.get('/profile');
|
|
45
|
+
setProfile(data);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
setError(err.response?.data?.message || 'Failed to load profile');
|
|
49
|
+
setTimeout(() => exit(), 100);
|
|
50
|
+
}
|
|
51
|
+
finally {
|
|
52
|
+
setLoading(false);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
fetchProfile();
|
|
56
|
+
}, [isAuthenticated, authLoading]);
|
|
57
|
+
// Handle keyboard input
|
|
58
|
+
useInput((input, key) => {
|
|
59
|
+
// In select mode (choosing from dropdown)
|
|
60
|
+
if (isSelectMode) {
|
|
61
|
+
const field = FIELDS[selectedIndex];
|
|
62
|
+
const options = field.options || [];
|
|
63
|
+
if (key.upArrow) {
|
|
64
|
+
setSelectIndex(Math.max(0, selectIndex - 1));
|
|
65
|
+
}
|
|
66
|
+
else if (key.downArrow) {
|
|
67
|
+
setSelectIndex(Math.min(options.length - 1, selectIndex + 1));
|
|
68
|
+
}
|
|
69
|
+
else if (key.return) {
|
|
70
|
+
const selectedValue = options[selectIndex];
|
|
71
|
+
handleSave(field.key, selectedValue);
|
|
72
|
+
setIsSelectMode(false);
|
|
73
|
+
setSelectIndex(0);
|
|
74
|
+
}
|
|
75
|
+
else if (key.escape) {
|
|
76
|
+
setIsSelectMode(false);
|
|
77
|
+
setSelectIndex(0);
|
|
78
|
+
}
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// In editing mode (typing text)
|
|
82
|
+
if (isEditing) {
|
|
83
|
+
// TextInput handles typing, we just handle Enter/Escape
|
|
84
|
+
if (key.return) {
|
|
85
|
+
const field = FIELDS[selectedIndex];
|
|
86
|
+
handleSave(field.key, editValue);
|
|
87
|
+
setIsEditing(false);
|
|
88
|
+
setEditValue('');
|
|
89
|
+
}
|
|
90
|
+
else if (key.escape) {
|
|
91
|
+
setIsEditing(false);
|
|
92
|
+
setEditValue('');
|
|
93
|
+
}
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// In navigation mode (moving between fields)
|
|
97
|
+
if (key.upArrow) {
|
|
98
|
+
setSelectedIndex(Math.max(0, selectedIndex - 1));
|
|
99
|
+
}
|
|
100
|
+
else if (key.downArrow) {
|
|
101
|
+
setSelectedIndex(Math.min(FIELDS.length - 1, selectedIndex + 1));
|
|
102
|
+
}
|
|
103
|
+
else if (key.return) {
|
|
104
|
+
const field = FIELDS[selectedIndex];
|
|
105
|
+
if (field.type === 'select') {
|
|
106
|
+
setIsSelectMode(true);
|
|
107
|
+
// Set initial select index to current value if it exists
|
|
108
|
+
const currentValue = profile?.[field.key];
|
|
109
|
+
if (currentValue && field.options) {
|
|
110
|
+
const idx = field.options.indexOf(String(currentValue));
|
|
111
|
+
setSelectIndex(idx >= 0 ? idx : 0);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
const currentValue = profile?.[field.key];
|
|
116
|
+
setEditValue(currentValue ? String(currentValue) : '');
|
|
117
|
+
setIsEditing(true);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else if (key.escape) {
|
|
121
|
+
exit();
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
const handleSave = async (key, value) => {
|
|
125
|
+
const updates = { [key]: value };
|
|
126
|
+
// Handle special fields
|
|
127
|
+
if (key === 'age') {
|
|
128
|
+
updates.age = parseInt(value) || 0;
|
|
129
|
+
}
|
|
130
|
+
else if (key === 'stack') {
|
|
131
|
+
updates.stack = value.split(',').map(s => s.trim()).filter(Boolean);
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
await api.put('/profile', updates);
|
|
135
|
+
// Refresh profile
|
|
136
|
+
const { data } = await api.get('/profile');
|
|
137
|
+
setProfile(data);
|
|
138
|
+
}
|
|
139
|
+
catch (err) {
|
|
140
|
+
setError(err.response?.data?.message || 'Failed to save');
|
|
141
|
+
}
|
|
142
|
+
};
|
|
143
|
+
if (loading) {
|
|
144
|
+
return _jsx(Text, { children: "Loading profile..." });
|
|
145
|
+
}
|
|
146
|
+
if (error) {
|
|
147
|
+
return _jsxs(Text, { color: "red", children: ["Error: ", error] });
|
|
148
|
+
}
|
|
149
|
+
if (!profile) {
|
|
150
|
+
return _jsx(Text, { color: "red", children: "Profile not found" });
|
|
151
|
+
}
|
|
152
|
+
// Render select dropdown
|
|
153
|
+
if (isSelectMode) {
|
|
154
|
+
const field = FIELDS[selectedIndex];
|
|
155
|
+
const options = field.options || [];
|
|
156
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "yellow", children: [_jsxs(Text, { bold: true, color: "yellow", children: ["Select ", field.label, ":"] }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: options.map((option, i) => (_jsxs(Text, { color: i === selectIndex ? 'green' : 'white', children: [i === selectIndex ? '> ' : ' ', option] }, option))) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "\u2191\u2193 Navigate \u2022 Enter to select \u2022 ESC to cancel" }) })] }));
|
|
157
|
+
}
|
|
158
|
+
// Render text input editor
|
|
159
|
+
if (isEditing) {
|
|
160
|
+
const field = FIELDS[selectedIndex];
|
|
161
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, borderStyle: "round", borderColor: "cyan", children: [_jsxs(Text, { bold: true, color: "cyan", children: ["Edit ", field.label, ":"] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: field.placeholder }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "white", children: _jsx(TextInput, { value: editValue, onChange: setEditValue, placeholder: field.placeholder }) }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "Enter to save \u2022 ESC to cancel" }) })] }));
|
|
162
|
+
}
|
|
163
|
+
// Render field list (navigation mode)
|
|
164
|
+
return (_jsxs(Box, { flexDirection: "column", padding: 1, borderStyle: "double", borderColor: "magenta", children: [_jsx(Text, { bold: true, color: "magenta", children: "\u270F\uFE0F Edit Profile" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: "\u2191\u2193 Navigate \u2022 Enter to edit \u2022 ESC to exit" }) }), _jsx(Box, { marginTop: 1, flexDirection: "column", children: FIELDS.map((field, i) => {
|
|
165
|
+
const isSelected = i === selectedIndex;
|
|
166
|
+
const currentValue = profile?.[field.key];
|
|
167
|
+
let displayValue = currentValue ? String(currentValue) : '(not set)';
|
|
168
|
+
// Special formatting
|
|
169
|
+
if (field.key === 'stack' && Array.isArray(currentValue)) {
|
|
170
|
+
displayValue = currentValue.join(', ') || '(not set)';
|
|
171
|
+
}
|
|
172
|
+
return (_jsxs(Box, { marginBottom: 0, children: [_jsx(Box, { width: 35, children: _jsxs(Text, { color: isSelected ? 'green' : 'white', bold: isSelected, children: [isSelected ? '> ' : ' ', field.label, ":"] }) }), _jsx(Text, { color: isSelected ? 'cyan' : 'gray', italic: !currentValue, children: displayValue })] }, field.key));
|
|
173
|
+
}) })] }));
|
|
174
|
+
};
|
|
175
|
+
//# sourceMappingURL=profile-edit-v3.screen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-edit-v3.screen.js","sourceRoot":"","sources":["../../../../src/features/profile/components/profile-edit-v3.screen.tsx"],"names":[],"mappings":"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"}
|