zelune 0.0.0-stage → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,176 @@
1
+ import React, { useState } from 'react';
2
+ import {
3
+ View,
4
+ Text,
5
+ TextInput,
6
+ TouchableOpacity,
7
+ StyleSheet,
8
+ } from 'react-native';
9
+ import { useNavigation } from '../runtime/MockNavigationContext';
10
+
11
+ export default function LoginScreen() {
12
+ const navigation = useNavigation();
13
+ const [email, setEmail] = useState('alex@zelune.studio');
14
+ const [password, setPassword] = useState('••••••••••••');
15
+
16
+ return (
17
+ <View style={styles.container}>
18
+ <View style={styles.brandSection}>
19
+ <View style={styles.logoBadge}>
20
+ <Text style={styles.logoText}>CH//01</Text>
21
+ </View>
22
+ <Text style={styles.title}>Welcome back</Text>
23
+ <Text style={styles.subtitle}>
24
+ Authenticate to access Chronos Acoustic Lab &amp; hardware telemetry
25
+ </Text>
26
+ </View>
27
+
28
+ <View style={styles.formCard}>
29
+ <View style={styles.fieldGroup}>
30
+ <Text style={styles.fieldLabel}>OPERATOR ID / EMAIL</Text>
31
+ <TextInput
32
+ style={styles.input}
33
+ value={email}
34
+ onChangeText={setEmail}
35
+ placeholder="operator@chronos.audio"
36
+ placeholderTextColor="#64748B"
37
+ />
38
+ </View>
39
+
40
+ <View style={styles.fieldGroup}>
41
+ <Text style={styles.fieldLabel}>SECURITY KEY</Text>
42
+ <TextInput
43
+ style={styles.input}
44
+ value={password}
45
+ onChangeText={setPassword}
46
+ secureTextEntry
47
+ placeholderTextColor="#64748B"
48
+ />
49
+ </View>
50
+
51
+ <TouchableOpacity
52
+ activeOpacity={0.78}
53
+ style={styles.primaryButton}
54
+ onPress={() => navigation.navigate('Home')}
55
+ >
56
+ <Text style={styles.primaryButtonText}>Enter Acoustic Studio</Text>
57
+ </TouchableOpacity>
58
+
59
+ <TouchableOpacity
60
+ activeOpacity={0.78}
61
+ style={styles.secondaryButton}
62
+ onPress={() => navigation.navigate('Profile')}
63
+ >
64
+ <Text style={styles.secondaryButtonText}>Hardware Passkey Handshake</Text>
65
+ </TouchableOpacity>
66
+ </View>
67
+
68
+ <View style={styles.footerRow}>
69
+ <Text style={styles.footerHint}>SYS-AUTH · ENCRYPTED SESSION 256-GCM</Text>
70
+ </View>
71
+ </View>
72
+ );
73
+ }
74
+
75
+ const styles = StyleSheet.create({
76
+ container: {
77
+ flex: 1,
78
+ backgroundColor: '#0A0B0E',
79
+ paddingHorizontal: 24,
80
+ paddingVertical: 38,
81
+ justifyContent: 'space-between',
82
+ },
83
+ brandSection: {
84
+ marginTop: 22,
85
+ gap: 10,
86
+ },
87
+ logoBadge: {
88
+ alignSelf: 'flex-start',
89
+ paddingHorizontal: 12,
90
+ paddingVertical: 8,
91
+ borderRadius: 8,
92
+ backgroundColor: '#13161E',
93
+ borderWidth: 1,
94
+ borderColor: '#262D3D',
95
+ marginBottom: 6,
96
+ },
97
+ logoText: {
98
+ color: '#38BDF8',
99
+ fontSize: 12,
100
+ fontWeight: '700',
101
+ letterSpacing: 1.2,
102
+ },
103
+ title: {
104
+ color: '#F8FAFC',
105
+ fontSize: 28,
106
+ fontWeight: '700',
107
+ letterSpacing: -0.5,
108
+ },
109
+ subtitle: {
110
+ color: '#94A3B8',
111
+ fontSize: 14,
112
+ lineHeight: 20,
113
+ },
114
+ formCard: {
115
+ backgroundColor: '#11141C',
116
+ borderRadius: 16,
117
+ padding: 20,
118
+ gap: 16,
119
+ borderWidth: 1,
120
+ borderColor: '#1E2433',
121
+ },
122
+ fieldGroup: {
123
+ gap: 6,
124
+ },
125
+ fieldLabel: {
126
+ color: '#64748B',
127
+ fontSize: 10,
128
+ fontWeight: '700',
129
+ letterSpacing: 1,
130
+ },
131
+ input: {
132
+ backgroundColor: '#08090C',
133
+ borderWidth: 1,
134
+ borderColor: '#222836',
135
+ borderRadius: 10,
136
+ paddingHorizontal: 14,
137
+ paddingVertical: 13,
138
+ color: '#F8FAFC',
139
+ fontSize: 14,
140
+ },
141
+ primaryButton: {
142
+ backgroundColor: '#F8FAFC',
143
+ borderRadius: 10,
144
+ paddingVertical: 15,
145
+ alignItems: 'center',
146
+ marginTop: 4,
147
+ },
148
+ primaryButtonText: {
149
+ color: '#08090C',
150
+ fontSize: 14,
151
+ fontWeight: '700',
152
+ },
153
+ secondaryButton: {
154
+ backgroundColor: '#161A24',
155
+ borderRadius: 10,
156
+ paddingVertical: 14,
157
+ alignItems: 'center',
158
+ borderWidth: 1,
159
+ borderColor: '#262D3D',
160
+ },
161
+ secondaryButtonText: {
162
+ color: '#CBD5E1',
163
+ fontSize: 13,
164
+ fontWeight: '600',
165
+ },
166
+ footerRow: {
167
+ alignItems: 'center',
168
+ paddingBottom: 6,
169
+ },
170
+ footerHint: {
171
+ color: '#475569',
172
+ fontSize: 10,
173
+ fontWeight: '600',
174
+ letterSpacing: 1,
175
+ },
176
+ });
@@ -0,0 +1,234 @@
1
+ import React, { useState } from 'react';
2
+ import {
3
+ View,
4
+ Text,
5
+ TouchableOpacity,
6
+ StyleSheet,
7
+ } from 'react-native';
8
+ import { useNavigation } from '../runtime/MockNavigationContext';
9
+
10
+ export default function ProductDetailScreen() {
11
+ const navigation = useNavigation();
12
+ const [selectedFinish, setSelectedFinish] = useState<'Obsidian' | 'Silver'>('Obsidian');
13
+
14
+ return (
15
+ <View style={styles.container}>
16
+ <View style={styles.headerRow}>
17
+ <TouchableOpacity
18
+ activeOpacity={0.78}
19
+ style={styles.backButton}
20
+ onPress={() => navigation.navigate('Home')}
21
+ >
22
+ <Text style={styles.backButtonText}>← Catalog</Text>
23
+ </TouchableOpacity>
24
+ <Text style={styles.headerBadge}>MODEL CH-01 // PRO</Text>
25
+ </View>
26
+
27
+ <View style={styles.showcaseCard}>
28
+ <Text style={styles.showcaseSpecCode}>45MM BERYLLIUM TRANSDUCER</Text>
29
+ <Text style={styles.showcaseMonogram}>CH // 01</Text>
30
+ <Text style={styles.showcaseTag}>48-HOUR BATTERY · DUAL USB-C LOSS-ZERO DAC</Text>
31
+ </View>
32
+
33
+ <View style={styles.detailsSection}>
34
+ <View style={styles.titlePriceRow}>
35
+ <Text style={styles.productTitle}>Chronos Studio Pro</Text>
36
+ <Text style={styles.productPrice}>$349</Text>
37
+ </View>
38
+ <Text style={styles.productDescription}>
39
+ Custom 45mm beryllium drivers paired with dual-chip room calibration and ultra-soft memory foam ear cushions.
40
+ </Text>
41
+
42
+ <View style={styles.specGrid}>
43
+ <View style={styles.specBox}>
44
+ <Text style={styles.specValue}>-46 dB</Text>
45
+ <Text style={styles.specLabel}>HYBRID ANC</Text>
46
+ </View>
47
+ <View style={styles.specBox}>
48
+ <Text style={styles.specValue}>24-bit</Text>
49
+ <Text style={styles.specLabel}>96KHZ PCM</Text>
50
+ </View>
51
+ <View style={styles.specBox}>
52
+ <Text style={styles.specValue}>265 g</Text>
53
+ <Text style={styles.specLabel}>MACHINED TI</Text>
54
+ </View>
55
+ </View>
56
+
57
+ <View style={styles.finishRow}>
58
+ {(['Obsidian', 'Silver'] as const).map((finish) => (
59
+ <TouchableOpacity
60
+ key={finish}
61
+ activeOpacity={0.78}
62
+ style={
63
+ selectedFinish === finish ? styles.finishPillActive : styles.finishPill
64
+ }
65
+ onPress={() => setSelectedFinish(finish)}
66
+ >
67
+ <Text style={styles.finishPillText}>{finish} Anodized</Text>
68
+ </TouchableOpacity>
69
+ ))}
70
+ </View>
71
+ </View>
72
+
73
+ <TouchableOpacity
74
+ activeOpacity={0.78}
75
+ style={styles.buyButton}
76
+ onPress={() => navigation.navigate('Checkout')}
77
+ >
78
+ <Text style={styles.buyButtonText}>Reserve Unit &amp; Express Checkout</Text>
79
+ </TouchableOpacity>
80
+ </View>
81
+ );
82
+ }
83
+
84
+ const styles = StyleSheet.create({
85
+ container: {
86
+ flex: 1,
87
+ backgroundColor: '#0A0B0E',
88
+ padding: 20,
89
+ justifyContent: 'space-between',
90
+ },
91
+ headerRow: {
92
+ flexDirection: 'row',
93
+ justifyContent: 'space-between',
94
+ alignItems: 'center',
95
+ marginTop: 6,
96
+ },
97
+ backButton: {
98
+ backgroundColor: '#13161E',
99
+ paddingHorizontal: 14,
100
+ paddingVertical: 9,
101
+ borderRadius: 8,
102
+ borderWidth: 1,
103
+ borderColor: '#222836',
104
+ },
105
+ backButtonText: {
106
+ color: '#E2E8F0',
107
+ fontSize: 12,
108
+ fontWeight: '600',
109
+ },
110
+ headerBadge: {
111
+ color: '#38BDF8',
112
+ fontSize: 10,
113
+ fontWeight: '700',
114
+ letterSpacing: 1,
115
+ },
116
+ showcaseCard: {
117
+ backgroundColor: '#11141C',
118
+ borderRadius: 16,
119
+ paddingVertical: 26,
120
+ paddingHorizontal: 18,
121
+ alignItems: 'center',
122
+ gap: 10,
123
+ borderWidth: 1,
124
+ borderColor: '#1E2433',
125
+ },
126
+ showcaseSpecCode: {
127
+ color: '#64748B',
128
+ fontSize: 10,
129
+ fontWeight: '700',
130
+ letterSpacing: 1.2,
131
+ },
132
+ showcaseMonogram: {
133
+ color: '#F8FAFC',
134
+ fontSize: 34,
135
+ fontWeight: '800',
136
+ letterSpacing: 2,
137
+ },
138
+ showcaseTag: {
139
+ color: '#38BDF8',
140
+ fontSize: 10,
141
+ fontWeight: '600',
142
+ letterSpacing: 0.8,
143
+ },
144
+ detailsSection: {
145
+ gap: 12,
146
+ },
147
+ titlePriceRow: {
148
+ flexDirection: 'row',
149
+ justifyContent: 'space-between',
150
+ alignItems: 'baseline',
151
+ },
152
+ productTitle: {
153
+ color: '#F8FAFC',
154
+ fontSize: 24,
155
+ fontWeight: '700',
156
+ letterSpacing: -0.4,
157
+ },
158
+ productPrice: {
159
+ color: '#10B981',
160
+ fontSize: 20,
161
+ fontWeight: '700',
162
+ },
163
+ productDescription: {
164
+ color: '#94A3B8',
165
+ fontSize: 13,
166
+ lineHeight: 19,
167
+ },
168
+ specGrid: {
169
+ flexDirection: 'row',
170
+ gap: 8,
171
+ marginTop: 2,
172
+ },
173
+ specBox: {
174
+ flex: 1,
175
+ backgroundColor: '#11141C',
176
+ borderRadius: 10,
177
+ paddingVertical: 12,
178
+ paddingHorizontal: 8,
179
+ alignItems: 'center',
180
+ borderWidth: 1,
181
+ borderColor: '#1E2433',
182
+ },
183
+ specValue: {
184
+ color: '#F8FAFC',
185
+ fontSize: 15,
186
+ fontWeight: '700',
187
+ },
188
+ specLabel: {
189
+ color: '#64748B',
190
+ fontSize: 9,
191
+ fontWeight: '700',
192
+ letterSpacing: 0.8,
193
+ marginTop: 3,
194
+ },
195
+ finishRow: {
196
+ flexDirection: 'row',
197
+ gap: 10,
198
+ marginTop: 2,
199
+ },
200
+ finishPillActive: {
201
+ flex: 1,
202
+ backgroundColor: '#161A26',
203
+ borderRadius: 10,
204
+ paddingVertical: 11,
205
+ alignItems: 'center',
206
+ borderWidth: 1,
207
+ borderColor: '#38BDF8',
208
+ },
209
+ finishPill: {
210
+ flex: 1,
211
+ backgroundColor: '#11141C',
212
+ borderRadius: 10,
213
+ paddingVertical: 11,
214
+ alignItems: 'center',
215
+ borderWidth: 1,
216
+ borderColor: '#1E2433',
217
+ },
218
+ finishPillText: {
219
+ color: '#E2E8F0',
220
+ fontSize: 12,
221
+ fontWeight: '600',
222
+ },
223
+ buyButton: {
224
+ backgroundColor: '#10B981',
225
+ borderRadius: 10,
226
+ paddingVertical: 15,
227
+ alignItems: 'center',
228
+ },
229
+ buyButtonText: {
230
+ color: '#052E16',
231
+ fontSize: 14,
232
+ fontWeight: '700',
233
+ },
234
+ });
@@ -0,0 +1,172 @@
1
+ import React from 'react';
2
+ import {
3
+ View,
4
+ Text,
5
+ TouchableOpacity,
6
+ StyleSheet,
7
+ } from 'react-native';
8
+ import { useNavigation } from '../runtime/MockNavigationContext';
9
+
10
+ export default function ProfileScreen() {
11
+ const navigation = useNavigation();
12
+
13
+ return (
14
+ <View style={styles.container}>
15
+ <View style={styles.profileHeader}>
16
+ <View style={styles.avatarLarge}>
17
+ <Text style={styles.avatarInitials}>AX</Text>
18
+ </View>
19
+ <Text style={styles.memberName}>Alex Mercer</Text>
20
+ <Text style={styles.memberTier}>LEAD ACOUSTIC ENGINEER · TIER 01</Text>
21
+ </View>
22
+
23
+ <View style={styles.statsRow}>
24
+ <View style={styles.statCard}>
25
+ <Text style={styles.statNumber}>14</Text>
26
+ <Text style={styles.statCaption}>UNITS</Text>
27
+ </View>
28
+ <View style={styles.statCard}>
29
+ <Text style={styles.statNumber}>4,820</Text>
30
+ <Text style={styles.statCaption}>CREDITS</Text>
31
+ </View>
32
+ <View style={styles.statCard}>
33
+ <Text style={styles.statNumber}>LAB</Text>
34
+ <Text style={styles.statCaption}>ACCESS</Text>
35
+ </View>
36
+ </View>
37
+
38
+ <View style={styles.menuList}>
39
+ <TouchableOpacity
40
+ activeOpacity={0.78}
41
+ style={styles.menuItem}
42
+ onPress={() => navigation.navigate('Home')}
43
+ >
44
+ <Text style={styles.menuItemTitle}>Reference Hardware Catalog</Text>
45
+ <Text style={styles.menuItemArrow}>→</Text>
46
+ </TouchableOpacity>
47
+
48
+ <TouchableOpacity
49
+ activeOpacity={0.78}
50
+ style={styles.menuItem}
51
+ onPress={() => navigation.navigate('Checkout')}
52
+ >
53
+ <Text style={styles.menuItemTitle}>Active Allocation &amp; Settlement</Text>
54
+ <Text style={styles.menuItemArrow}>→</Text>
55
+ </TouchableOpacity>
56
+ </View>
57
+
58
+ <TouchableOpacity
59
+ activeOpacity={0.78}
60
+ style={styles.signOutButton}
61
+ onPress={() => navigation.navigate('Login')}
62
+ >
63
+ <Text style={styles.signOutText}>Terminate Studio Session</Text>
64
+ </TouchableOpacity>
65
+ </View>
66
+ );
67
+ }
68
+
69
+ const styles = StyleSheet.create({
70
+ container: {
71
+ flex: 1,
72
+ backgroundColor: '#0A0B0E',
73
+ padding: 20,
74
+ justifyContent: 'space-between',
75
+ },
76
+ profileHeader: {
77
+ alignItems: 'center',
78
+ marginTop: 14,
79
+ gap: 6,
80
+ },
81
+ avatarLarge: {
82
+ width: 68,
83
+ height: 68,
84
+ borderRadius: 16,
85
+ backgroundColor: '#13161E',
86
+ borderWidth: 1,
87
+ borderColor: '#262D3D',
88
+ alignItems: 'center',
89
+ justifyContent: 'center',
90
+ marginBottom: 6,
91
+ },
92
+ avatarInitials: {
93
+ color: '#38BDF8',
94
+ fontSize: 22,
95
+ fontWeight: '700',
96
+ letterSpacing: 1,
97
+ },
98
+ memberName: {
99
+ color: '#F8FAFC',
100
+ fontSize: 22,
101
+ fontWeight: '700',
102
+ letterSpacing: -0.3,
103
+ },
104
+ memberTier: {
105
+ color: '#64748B',
106
+ fontSize: 10,
107
+ fontWeight: '700',
108
+ letterSpacing: 1,
109
+ },
110
+ statsRow: {
111
+ flexDirection: 'row',
112
+ gap: 8,
113
+ },
114
+ statCard: {
115
+ flex: 1,
116
+ backgroundColor: '#11141C',
117
+ borderRadius: 12,
118
+ paddingVertical: 14,
119
+ alignItems: 'center',
120
+ borderWidth: 1,
121
+ borderColor: '#1E2433',
122
+ },
123
+ statNumber: {
124
+ color: '#F8FAFC',
125
+ fontSize: 17,
126
+ fontWeight: '700',
127
+ },
128
+ statCaption: {
129
+ color: '#64748B',
130
+ fontSize: 9,
131
+ fontWeight: '700',
132
+ letterSpacing: 0.8,
133
+ marginTop: 3,
134
+ },
135
+ menuList: {
136
+ gap: 10,
137
+ },
138
+ menuItem: {
139
+ backgroundColor: '#11141C',
140
+ borderRadius: 12,
141
+ paddingHorizontal: 16,
142
+ paddingVertical: 15,
143
+ flexDirection: 'row',
144
+ justifyContent: 'space-between',
145
+ alignItems: 'center',
146
+ borderWidth: 1,
147
+ borderColor: '#1E2433',
148
+ },
149
+ menuItemTitle: {
150
+ color: '#E2E8F0',
151
+ fontSize: 13,
152
+ fontWeight: '600',
153
+ },
154
+ menuItemArrow: {
155
+ color: '#38BDF8',
156
+ fontSize: 15,
157
+ fontWeight: '700',
158
+ },
159
+ signOutButton: {
160
+ backgroundColor: '#16131A',
161
+ borderRadius: 10,
162
+ paddingVertical: 14,
163
+ alignItems: 'center',
164
+ borderWidth: 1,
165
+ borderColor: '#3B1D2A',
166
+ },
167
+ signOutText: {
168
+ color: '#FB7185',
169
+ fontSize: 13,
170
+ fontWeight: '600',
171
+ },
172
+ });
@@ -0,0 +1 @@
1
+ export { SCREEN_COMPONENTS, SCREEN_ORDER } from 'virtual:zelune-screens';