zelune 1.6.2 → 1.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/bin/cli.mjs +13 -54
  3. package/dist/assets/CheckoutScreen-6IdrpKgm.js +229 -0
  4. package/dist/assets/HomeScreen-Dxe9L4I2.js +316 -0
  5. package/dist/assets/LoginScreen-Dp1awI4F.js +189 -0
  6. package/dist/assets/ProductDetailScreen-Wa5_nlRP.js +196 -0
  7. package/dist/assets/ProfileScreen-riAU6vVh.js +185 -0
  8. package/dist/assets/index-hEzd4JVy.js +44697 -0
  9. package/{index.html → dist/index.html} +3 -7
  10. package/mcp/server.mjs +1370 -34
  11. package/package.json +10 -17
  12. package/plugin.json +1 -1
  13. package/socket.yml +11 -0
  14. package/mcp/server.ts +0 -446
  15. package/plugins/viteReactNativeFallbackPlugin.ts +0 -519
  16. package/plugins/viteRnSourceInject.ts +0 -117
  17. package/plugins/viteVirtualScreensPlugin.ts +0 -216
  18. package/src/canvas/CanvasApp.tsx +0 -1655
  19. package/src/canvas/FlowArrowsLayer.tsx +0 -239
  20. package/src/canvas/InspectorPanel.tsx +0 -1494
  21. package/src/canvas/ScreenArtboard.tsx +0 -1491
  22. package/src/canvas/types.ts +0 -23
  23. package/src/main.tsx +0 -80
  24. package/src/runtime/MockNavigationContext.tsx +0 -1795
  25. package/src/runtime/ScreenErrorBoundary.tsx +0 -86
  26. package/src/runtime/nativewindShim.ts +0 -997
  27. package/src/runtime/reactNativeShim.ts +0 -240
  28. package/src/screens/CheckoutScreen.tsx +0 -229
  29. package/src/screens/HomeScreen.tsx +0 -288
  30. package/src/screens/LoginScreen.tsx +0 -176
  31. package/src/screens/ProductDetailScreen.tsx +0 -207
  32. package/src/screens/ProfileScreen.tsx +0 -172
  33. package/src/screens/index.ts +0 -1
  34. package/src/server/apiMiddleware.ts +0 -375
  35. package/src/server/astEngine.ts +0 -2553
  36. package/src/vite-env.d.ts +0 -7
  37. package/tsconfig.json +0 -23
  38. package/vite.config.ts +0 -340
  39. /package/{src/styles.css → dist/assets/index-C7nrS82N.css} +0 -0
@@ -1,288 +0,0 @@
1
- import React, { useState } from 'react';
2
- import {
3
- View,
4
- Text,
5
- TouchableOpacity,
6
- ScrollView,
7
- StyleSheet,
8
- } from 'react-native';
9
- import { useNavigation } from '../runtime/MockNavigationContext';
10
-
11
- export default function HomeScreen() {
12
- const navigation = useNavigation();
13
- const [activeTab, setActiveTab] = useState<'Featured' | 'Hardware' | 'Audio'>('Featured');
14
-
15
- return (
16
- <ScrollView style={styles.container} contentContainerStyle={styles.content}>
17
- <View style={styles.topBar}>
18
- <View>
19
- <Text style={styles.greetingLabel}>CHRONOS ACOUSTIC DIVISION</Text>
20
- <Text style={styles.headerTitle}>Reference Hardware</Text>
21
- </View>
22
- <TouchableOpacity
23
- activeOpacity={0.78}
24
- style={styles.avatarButton}
25
- onPress={() => navigation.navigate('Profile')}
26
- >
27
- <Text style={styles.avatarButtonText}>AX</Text>
28
- </TouchableOpacity>
29
- </View>
30
-
31
- <View style={styles.heroBanner}>
32
- <View style={styles.heroMetaRow}>
33
- <Text style={styles.heroBadge}>SERIES 04 // BERYLLIUM</Text>
34
- <Text style={styles.heroSerial}>48H DAC</Text>
35
- </View>
36
- <Text style={styles.heroTitle}>Chronos Spatial Studio Reference</Text>
37
- <Text style={styles.heroSubtitle}>
38
- Planar-magnetic acoustic architecture with zero-latency DSP room calibration.
39
- </Text>
40
- <TouchableOpacity
41
- activeOpacity={0.78}
42
- style={styles.heroCta}
43
- onPress={() => navigation.navigate('ProductDetail')}
44
- >
45
- <Text style={styles.heroCtaText}>Inspect Spec Sheet — $349</Text>
46
- </TouchableOpacity>
47
- </View>
48
-
49
- <View style={styles.categoryRow}>
50
- {(['Featured', 'Hardware', 'Audio'] as const).map((cat) => (
51
- <TouchableOpacity
52
- key={cat}
53
- activeOpacity={0.78}
54
- style={activeTab === cat ? styles.categoryPillActive : styles.categoryPill}
55
- onPress={() => setActiveTab(cat)}
56
- >
57
- <Text
58
- style={
59
- activeTab === cat ? styles.categoryTextActive : styles.categoryText
60
- }
61
- >
62
- {cat}
63
- </Text>
64
- </TouchableOpacity>
65
- ))}
66
- </View>
67
-
68
- <View style={styles.productList}>
69
- <TouchableOpacity
70
- activeOpacity={0.78}
71
- style={styles.productCard}
72
- onPress={() => navigation.navigate('ProductDetail')}
73
- >
74
- <View style={styles.productIconBox}>
75
- <Text style={styles.productMonogram}>CH-01</Text>
76
- </View>
77
- <View style={styles.productInfo}>
78
- <Text style={styles.productName}>Chronos Studio Pro</Text>
79
- <Text style={styles.productMeta}>45mm Beryllium · Titanium Matte</Text>
80
- </View>
81
- <Text style={styles.productPrice}>$349</Text>
82
- </TouchableOpacity>
83
-
84
- <TouchableOpacity
85
- activeOpacity={0.78}
86
- style={styles.productCard}
87
- onPress={() => navigation.navigate('Checkout')}
88
- >
89
- <View style={styles.productIconBoxAlt}>
90
- <Text style={styles.productMonogramAlt}>KS-75</Text>
91
- </View>
92
- <View style={styles.productInfo}>
93
- <Text style={styles.productName}>Keystone Field Controller</Text>
94
- <Text style={styles.productMeta}>CNC Aluminum · Optical Hall Switches</Text>
95
- </View>
96
- <Text style={styles.productPrice}>$219</Text>
97
- </TouchableOpacity>
98
- </View>
99
- </ScrollView>
100
- );
101
- }
102
-
103
- const styles = StyleSheet.create({
104
- container: {
105
- flex: 1,
106
- backgroundColor: '#0A0B0E',
107
- },
108
- content: {
109
- padding: 20,
110
- gap: 20,
111
- },
112
- topBar: {
113
- flexDirection: 'row',
114
- justifyContent: 'space-between',
115
- alignItems: 'center',
116
- marginTop: 6,
117
- },
118
- greetingLabel: {
119
- color: '#38BDF8',
120
- fontSize: 10,
121
- fontWeight: '700',
122
- letterSpacing: 1.1,
123
- },
124
- headerTitle: {
125
- color: '#F8FAFC',
126
- fontSize: 24,
127
- fontWeight: '700',
128
- letterSpacing: -0.4,
129
- marginTop: 2,
130
- },
131
- avatarButton: {
132
- width: 42,
133
- height: 42,
134
- borderRadius: 10,
135
- backgroundColor: '#13161E',
136
- alignItems: 'center',
137
- justifyContent: 'center',
138
- borderWidth: 1,
139
- borderColor: '#222836',
140
- },
141
- avatarButtonText: {
142
- color: '#F8FAFC',
143
- fontSize: 12,
144
- fontWeight: '700',
145
- },
146
- heroBanner: {
147
- backgroundColor: '#11141C',
148
- borderRadius: 16,
149
- padding: 20,
150
- gap: 10,
151
- borderWidth: 1,
152
- borderColor: '#262D3D',
153
- },
154
- heroMetaRow: {
155
- flexDirection: 'row',
156
- justifyContent: 'space-between',
157
- alignItems: 'center',
158
- },
159
- heroBadge: {
160
- color: '#38BDF8',
161
- fontSize: 10,
162
- fontWeight: '700',
163
- letterSpacing: 1,
164
- },
165
- heroSerial: {
166
- color: '#10B981',
167
- fontSize: 10,
168
- fontWeight: '700',
169
- letterSpacing: 0.8,
170
- },
171
- heroTitle: {
172
- color: '#F8FAFC',
173
- fontSize: 22,
174
- fontWeight: '700',
175
- letterSpacing: -0.3,
176
- },
177
- heroSubtitle: {
178
- color: '#94A3B8',
179
- fontSize: 13,
180
- lineHeight: 19,
181
- },
182
- heroCta: {
183
- backgroundColor: '#F8FAFC',
184
- borderRadius: 9,
185
- paddingVertical: 12,
186
- paddingHorizontal: 16,
187
- alignSelf: 'flex-start',
188
- marginTop: 6,
189
- },
190
- heroCtaText: {
191
- color: '#08090C',
192
- fontSize: 13,
193
- fontWeight: '700',
194
- },
195
- categoryRow: {
196
- flexDirection: 'row',
197
- gap: 8,
198
- },
199
- categoryPillActive: {
200
- backgroundColor: '#191D28',
201
- paddingHorizontal: 16,
202
- paddingVertical: 10,
203
- borderRadius: 8,
204
- borderWidth: 1,
205
- borderColor: '#38BDF8',
206
- },
207
- categoryPill: {
208
- backgroundColor: '#11141C',
209
- paddingHorizontal: 16,
210
- paddingVertical: 10,
211
- borderRadius: 8,
212
- borderWidth: 1,
213
- borderColor: '#1E2433',
214
- },
215
- categoryTextActive: {
216
- color: '#F8FAFC',
217
- fontSize: 12,
218
- fontWeight: '700',
219
- },
220
- categoryText: {
221
- color: '#94A3B8',
222
- fontSize: 12,
223
- fontWeight: '500',
224
- },
225
- productList: {
226
- gap: 12,
227
- },
228
- productCard: {
229
- backgroundColor: '#11141C',
230
- borderRadius: 14,
231
- padding: 14,
232
- flexDirection: 'row',
233
- alignItems: 'center',
234
- gap: 14,
235
- borderWidth: 1,
236
- borderColor: '#1E2433',
237
- },
238
- productIconBox: {
239
- width: 52,
240
- height: 52,
241
- borderRadius: 10,
242
- backgroundColor: '#161A26',
243
- borderWidth: 1,
244
- borderColor: '#262D3D',
245
- alignItems: 'center',
246
- justifyContent: 'center',
247
- },
248
- productIconBoxAlt: {
249
- width: 52,
250
- height: 52,
251
- borderRadius: 10,
252
- backgroundColor: '#131720',
253
- borderWidth: 1,
254
- borderColor: '#222836',
255
- alignItems: 'center',
256
- justifyContent: 'center',
257
- },
258
- productMonogram: {
259
- color: '#38BDF8',
260
- fontSize: 11,
261
- fontWeight: '700',
262
- letterSpacing: 0.5,
263
- },
264
- productMonogramAlt: {
265
- color: '#10B981',
266
- fontSize: 11,
267
- fontWeight: '700',
268
- letterSpacing: 0.5,
269
- },
270
- productInfo: {
271
- flex: 1,
272
- gap: 3,
273
- },
274
- productName: {
275
- color: '#F8FAFC',
276
- fontSize: 15,
277
- fontWeight: '600',
278
- },
279
- productMeta: {
280
- color: '#64748B',
281
- fontSize: 12,
282
- },
283
- productPrice: {
284
- color: '#F8FAFC',
285
- fontSize: 15,
286
- fontWeight: '700',
287
- },
288
- });
@@ -1,176 +0,0 @@
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
- });
@@ -1,207 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
3
- import { useNavigation } from '../runtime/MockNavigationContext';
4
- export default function ProductDetailScreen() {
5
- const navigation = useNavigation();
6
- const [selectedFinish, setSelectedFinish] = useState<'Obsidian' | 'Silver'>('Obsidian');
7
- return <View style={styles.container}>
8
- <View style={styles.headerRow}>
9
- <TouchableOpacity activeOpacity={0.78} style={styles.backButton} onPress={() => navigation.navigate('Home')}>
10
- <Text style={styles.backButtonText}>← Catalog</Text>
11
- </TouchableOpacity>
12
- <Text style={styles.headerBadge}>MODEL CH-01 // PRO</Text>
13
- </View>
14
-
15
- <View style={styles.showcaseCard}>
16
- <Text style={styles.showcaseSpecCode}>45MM BERYLLIUM TRANSDUCER</Text>
17
- <Text style={styles.showcaseMonogram}>CH // 01</Text>
18
- <Text style={styles.showcaseTag}>48-HOUR BATTERY · DUAL USB-C LOSS-ZERO DAC</Text>
19
- </View>
20
-
21
- <View style={styles.detailsSection}>
22
- <View style={styles.titlePriceRow}>
23
- <Text style={styles.productTitle}>Chronos Studio Pro</Text>
24
- <Text style={styles.productPrice}>$349</Text>
25
- </View>
26
- <Text style={styles.productDescription}>
27
- Custom 45mm beryllium drivers paired with dual-chip room calibration and ultra-soft memory foam ear cushions.
28
- </Text>
29
-
30
- <View style={styles.specGrid}>
31
- <View style={styles.specBox}>
32
- <Text style={styles.specValue}>-46 dB</Text>
33
- <Text style={styles.specLabel}>HYBRID ANC</Text>
34
- </View>
35
- <View style={styles.specBox}>
36
- <Text style={styles.specValue}>24-bit</Text>
37
- <Text style={styles.specLabel}>96KHZ PCM</Text>
38
- </View>
39
- <View style={styles.specBox}>
40
- <Text style={styles.specValue}>265 g</Text>
41
- <Text style={styles.specLabel}>MACHINED TI</Text>
42
- </View>
43
- </View>
44
-
45
- <View style={styles.finishRow}>
46
- {(['Obsidian', 'Silver'] as const).map(finish => <TouchableOpacity key={finish} activeOpacity={0.78} style={selectedFinish === finish ? styles.finishPillActive : styles.finishPill} onPress={() => setSelectedFinish(finish)}>
47
- <Text style={styles.finishPillText}>{finish} Anodized</Text>
48
- </TouchableOpacity>)}
49
- </View>
50
- </View>
51
-
52
- <TouchableOpacity activeOpacity={0.78} style={styles.buyButton} onPress={() => navigation.navigate('Checkout')}>
53
- <Text style={styles.buyButtonText}>Reserve Unit &amp; Express Checkout</Text>
54
- </TouchableOpacity>
55
- </View>;
56
- }
57
- const styles = StyleSheet.create({
58
- container: {
59
- flex: 1,
60
- backgroundColor: '#0A0B0E',
61
- padding: 20,
62
- justifyContent: 'space-between'
63
- },
64
- headerRow: {
65
- flexDirection: 'row',
66
- justifyContent: 'space-between',
67
- alignItems: 'center',
68
- marginTop: 6
69
- },
70
- backButton: {
71
- backgroundColor: '#13161E',
72
- paddingHorizontal: 14,
73
- paddingVertical: 9,
74
- borderRadius: 8,
75
- borderWidth: 1,
76
- borderColor: '#222836'
77
- },
78
- backButtonText: {
79
- color: '#E2E8F0',
80
- fontSize: 12,
81
- fontWeight: '600'
82
- },
83
- headerBadge: {
84
- color: '#38BDF8',
85
- fontSize: 10,
86
- fontWeight: '700',
87
- letterSpacing: 1
88
- },
89
- showcaseCard: {
90
- backgroundColor: '#11141C',
91
- borderRadius: 16,
92
- paddingVertical: 26,
93
- paddingHorizontal: 18,
94
- alignItems: 'center',
95
- gap: 10,
96
- borderWidth: 1,
97
- borderColor: '#1E2433'
98
- },
99
- showcaseSpecCode: {
100
- color: '#64748B',
101
- fontSize: 10,
102
- fontWeight: '700',
103
- letterSpacing: 1.2
104
- },
105
- showcaseMonogram: {
106
- color: '#F8FAFC',
107
- fontSize: 34,
108
- fontWeight: '800',
109
- letterSpacing: 2
110
- },
111
- showcaseTag: {
112
- color: '#38BDF8',
113
- fontSize: 10,
114
- fontWeight: '600',
115
- letterSpacing: 0.8
116
- },
117
- detailsSection: {
118
- gap: 12
119
- },
120
- titlePriceRow: {
121
- flexDirection: 'row',
122
- justifyContent: 'space-between',
123
- alignItems: 'baseline'
124
- },
125
- productTitle: {
126
- color: '#F8FAFC',
127
- fontSize: 24,
128
- fontWeight: '700',
129
- letterSpacing: -0.4
130
- },
131
- productPrice: {
132
- color: '#10B981',
133
- fontSize: 20,
134
- fontWeight: '700'
135
- },
136
- productDescription: {
137
- color: '#94A3B8',
138
- fontSize: 13,
139
- lineHeight: 19
140
- },
141
- specGrid: {
142
- flexDirection: 'row',
143
- gap: 8,
144
- marginTop: 2
145
- },
146
- specBox: {
147
- flex: 1,
148
- backgroundColor: '#11141C',
149
- borderRadius: 10,
150
- paddingVertical: 12,
151
- paddingHorizontal: 8,
152
- alignItems: 'center',
153
- borderWidth: 1,
154
- borderColor: '#1E2433'
155
- },
156
- specValue: {
157
- color: '#F8FAFC',
158
- fontSize: 15,
159
- fontWeight: '700'
160
- },
161
- specLabel: {
162
- color: '#64748B',
163
- fontSize: 9,
164
- fontWeight: '700',
165
- letterSpacing: 0.8,
166
- marginTop: 3
167
- },
168
- finishRow: {
169
- flexDirection: 'row',
170
- gap: 10,
171
- marginTop: 2
172
- },
173
- finishPillActive: {
174
- flex: 1,
175
- backgroundColor: '#161A26',
176
- borderRadius: 10,
177
- paddingVertical: 11,
178
- alignItems: 'center',
179
- borderWidth: 1,
180
- borderColor: '#38BDF8'
181
- },
182
- finishPill: {
183
- flex: 1,
184
- backgroundColor: '#11141C',
185
- borderRadius: 10,
186
- paddingVertical: 11,
187
- alignItems: 'center',
188
- borderWidth: 1,
189
- borderColor: '#1E2433'
190
- },
191
- finishPillText: {
192
- color: '#E2E8F0',
193
- fontSize: 12,
194
- fontWeight: '600'
195
- },
196
- buyButton: {
197
- backgroundColor: '#10B981',
198
- borderRadius: 10,
199
- paddingVertical: 15,
200
- alignItems: 'center'
201
- },
202
- buyButtonText: {
203
- color: '#052E16',
204
- fontSize: 14,
205
- fontWeight: '700'
206
- }
207
- });