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,240 +0,0 @@
1
- import React, { useRef } from 'react';
2
- import * as RNW from 'react-native-web';
3
- import { withNativeWind } from './nativewindShim';
4
-
5
- export * from 'react-native-web';
6
-
7
- // Wrap core React Native primitives with NativeWind className -> style support
8
- export const View = withNativeWind(RNW.View as unknown as React.ComponentType<Record<string, unknown>>, 'View');
9
- export const Text = withNativeWind(RNW.Text as unknown as React.ComponentType<Record<string, unknown>>, 'Text');
10
- export const Pressable = withNativeWind(
11
- RNW.Pressable as unknown as React.ComponentType<Record<string, unknown>>,
12
- 'Pressable'
13
- );
14
- export const TouchableOpacity = withNativeWind(
15
- RNW.TouchableOpacity as unknown as React.ComponentType<Record<string, unknown>>,
16
- 'TouchableOpacity'
17
- );
18
- export const TouchableHighlight = withNativeWind(
19
- RNW.TouchableHighlight as unknown as React.ComponentType<Record<string, unknown>>,
20
- 'TouchableHighlight'
21
- );
22
- export const TouchableWithoutFeedback = withNativeWind(
23
- RNW.TouchableWithoutFeedback as unknown as React.ComponentType<Record<string, unknown>>,
24
- 'TouchableWithoutFeedback'
25
- );
26
- export const ScrollView = withNativeWind(
27
- RNW.ScrollView as unknown as React.ComponentType<Record<string, unknown>>,
28
- 'ScrollView'
29
- );
30
- export const FlatList = withNativeWind(
31
- RNW.FlatList as unknown as React.ComponentType<Record<string, unknown>>,
32
- 'FlatList'
33
- );
34
- export const SectionList = withNativeWind(
35
- RNW.SectionList as unknown as React.ComponentType<Record<string, unknown>>,
36
- 'SectionList'
37
- );
38
- export const KeyboardAvoidingView = withNativeWind(
39
- RNW.KeyboardAvoidingView as unknown as React.ComponentType<Record<string, unknown>>,
40
- 'KeyboardAvoidingView'
41
- );
42
- export const TextInput = withNativeWind(
43
- RNW.TextInput as unknown as React.ComponentType<Record<string, unknown>>,
44
- 'TextInput'
45
- );
46
- export const Image = withNativeWind(
47
- RNW.Image as unknown as React.ComponentType<Record<string, unknown>>,
48
- 'Image'
49
- );
50
- export const ImageBackground = withNativeWind(
51
- RNW.ImageBackground as unknown as React.ComponentType<Record<string, unknown>>,
52
- 'ImageBackground'
53
- );
54
- export const SafeAreaView = withNativeWind(
55
- RNW.SafeAreaView as unknown as React.ComponentType<Record<string, unknown>>,
56
- 'SafeAreaView'
57
- );
58
- export const ActivityIndicator = withNativeWind(
59
- RNW.ActivityIndicator as unknown as React.ComponentType<Record<string, unknown>>,
60
- 'ActivityIndicator'
61
- );
62
- export const Modal = withNativeWind(
63
- RNW.Modal as unknown as React.ComponentType<Record<string, unknown>>,
64
- 'Modal'
65
- );
66
-
67
- // Pin mobile artboard dimensions (393x852 iPhone 15 Pro) so Dimensions.get('window')
68
- // and useWindowDimensions() never return the desktop browser's 1440x900 window size.
69
- const ARTBOARD_DIMENSIONS = {
70
- width: 393,
71
- height: 852,
72
- scale: 3,
73
- fontScale: 1,
74
- };
75
-
76
- export const Dimensions = {
77
- get: (_dim?: 'window' | 'screen' | string) => ARTBOARD_DIMENSIONS,
78
- set: () => undefined,
79
- addEventListener: () => ({ remove: () => undefined }),
80
- removeEventListener: () => undefined,
81
- };
82
-
83
- export function useWindowDimensions() {
84
- return ARTBOARD_DIMENSIONS;
85
- }
86
-
87
- export function useAnimatedValue(initialValue = 0): RNW.Animated.Value {
88
- const ref = useRef<RNW.Animated.Value | null>(null);
89
- if (!ref.current) {
90
- ref.current = new RNW.Animated.Value(initialValue);
91
- }
92
- return ref.current;
93
- }
94
-
95
- export const PermissionsAndroid = {
96
- PERMISSIONS: new Proxy({} as Record<string, string>, {
97
- get: (_target, prop) => String(prop),
98
- }),
99
- RESULTS: {
100
- GRANTED: 'granted',
101
- DENIED: 'denied',
102
- NEVER_ASK_AGAIN: 'never_ask_again',
103
- },
104
- check: async () => true,
105
- request: async () => 'granted',
106
- requestMultiple: async () => ({}),
107
- };
108
-
109
- export const ToastAndroid = {
110
- SHORT: 2000,
111
- LONG: 3500,
112
- TOP: 0,
113
- BOTTOM: 1,
114
- CENTER: 2,
115
- show: () => undefined,
116
- showWithGravity: () => undefined,
117
- showWithGravityAndOffset: () => undefined,
118
- };
119
-
120
- export const ActionSheetIOS = {
121
- showActionSheetWithOptions: () => undefined,
122
- showShareActionSheetWithOptions: () => undefined,
123
- dismissActionSheet: () => undefined,
124
- };
125
-
126
- export const InputAccessoryView: React.FC<{ children?: React.ReactNode }> = ({ children }) =>
127
- React.createElement(React.Fragment, null, children);
128
-
129
- export const DrawerLayoutAndroid: React.FC<{
130
- children?: React.ReactNode;
131
- style?: unknown;
132
- }> = ({ children, style }) =>
133
- React.createElement(RNW.View, { style: [{ flex: 1 }, style] as never }, children);
134
-
135
- export const TurboModuleRegistry = {
136
- get: () => ({}),
137
- getEnforcing: () => ({}),
138
- };
139
-
140
- export function requireNativeComponent(viewName: string) {
141
- const Comp: React.FC<{ children?: React.ReactNode; style?: unknown }> = ({
142
- children,
143
- style,
144
- }) => React.createElement(RNW.View, { style: style as never }, children);
145
- Comp.displayName = viewName;
146
- return Comp;
147
- }
148
-
149
- export const codegenNativeComponent = requireNativeComponent;
150
-
151
- export function PlatformColor(...names: string[]): string {
152
- const first = (names[0] ?? '').toLowerCase();
153
- if (first.includes('background')) return '#0F172A';
154
- if (first.includes('label') || first.includes('text')) return '#F8FAFC';
155
- return '#6366F1';
156
- }
157
-
158
- export function DynamicColorIOS(tuple: { light?: string; dark?: string }): string {
159
- return tuple?.dark ?? tuple?.light ?? '#6366F1';
160
- }
161
-
162
- export const DevSettings = {
163
- addMenuItem: () => undefined,
164
- reload: () => undefined,
165
- };
166
-
167
- export const Systrace = {
168
- isEnabled: () => false,
169
- beginEvent: () => undefined,
170
- endEvent: () => undefined,
171
- beginAsyncEvent: () => 0,
172
- endAsyncEvent: () => undefined,
173
- counterEvent: () => undefined,
174
- };
175
-
176
- export const Networking = {
177
- addListener: () => ({ remove: () => undefined }),
178
- sendRequest: () => undefined,
179
- abortRequest: () => undefined,
180
- clearCookies: () => undefined,
181
- };
182
-
183
- export const Settings = {
184
- get: () => undefined,
185
- set: () => undefined,
186
- watchKeys: () => 0,
187
- clearWatch: () => undefined,
188
- };
189
-
190
- const ReactNativeDefault = new Proxy(
191
- {
192
- ...RNW,
193
- View,
194
- Text,
195
- Pressable,
196
- TouchableOpacity,
197
- TouchableHighlight,
198
- TouchableWithoutFeedback,
199
- ScrollView,
200
- FlatList,
201
- SectionList,
202
- KeyboardAvoidingView,
203
- TextInput,
204
- Image,
205
- ImageBackground,
206
- SafeAreaView,
207
- ActivityIndicator,
208
- Modal,
209
- Dimensions,
210
- useWindowDimensions,
211
- useAnimatedValue,
212
- PermissionsAndroid,
213
- ToastAndroid,
214
- ActionSheetIOS,
215
- InputAccessoryView,
216
- DrawerLayoutAndroid,
217
- TurboModuleRegistry,
218
- requireNativeComponent,
219
- codegenNativeComponent,
220
- PlatformColor,
221
- DynamicColorIOS,
222
- DevSettings,
223
- Systrace,
224
- Networking,
225
- Settings,
226
- },
227
- {
228
- get(target, prop) {
229
- if (prop in target) {
230
- return target[prop as keyof typeof target];
231
- }
232
- if (typeof prop === 'string' && /^[A-Z]/.test(prop)) {
233
- return requireNativeComponent(prop);
234
- }
235
- return () => undefined;
236
- },
237
- }
238
- );
239
-
240
- export default ReactNativeDefault;
@@ -1,229 +0,0 @@
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 CheckoutScreen() {
11
- const navigation = useNavigation();
12
-
13
- return (
14
- <View style={styles.container}>
15
- <View style={styles.headerRow}>
16
- <TouchableOpacity
17
- activeOpacity={0.78}
18
- style={styles.backButton}
19
- onPress={() => navigation.navigate('ProductDetail')}
20
- >
21
- <Text style={styles.backButtonText}>← Spec Sheet</Text>
22
- </TouchableOpacity>
23
- <Text style={styles.headerTitle}>Dispatch &amp; Settlement</Text>
24
- </View>
25
-
26
- <View style={styles.orderCard}>
27
- <Text style={styles.sectionHeading}>MANIFEST // ORDER #CH-8841</Text>
28
- <View style={styles.itemRow}>
29
- <View>
30
- <Text style={styles.itemName}>Chronos Studio Pro</Text>
31
- <Text style={styles.itemVariant}>Obsidian Anodized · Unit 01</Text>
32
- </View>
33
- <Text style={styles.itemPrice}>$349.00</Text>
34
- </View>
35
-
36
- <View style={styles.divider} />
37
-
38
- <View style={styles.summaryRow}>
39
- <Text style={styles.summaryLabel}>Priority Courier Dispatch</Text>
40
- <Text style={styles.summaryFree}>INCLUDED</Text>
41
- </View>
42
- <View style={styles.summaryRow}>
43
- <Text style={styles.summaryLabel}>Import &amp; Acoustic Levy</Text>
44
- <Text style={styles.summaryValue}>$28.80</Text>
45
- </View>
46
- <View style={styles.totalRow}>
47
- <Text style={styles.totalLabel}>Total Settlement</Text>
48
- <Text style={styles.totalAmount}>$377.80</Text>
49
- </View>
50
- </View>
51
-
52
- <View style={styles.paymentCard}>
53
- <Text style={styles.sectionHeading}>CRYPTOGRAPHIC AUTHORIZATION</Text>
54
- <View style={styles.cardMethodRow}>
55
- <View style={styles.cardBrandBadge}>
56
- <Text style={styles.cardBrandText}>G-PAY</Text>
57
- </View>
58
- <View>
59
- <Text style={styles.cardNumber}>Hardware Token ·••• 4829</Text>
60
- <Text style={styles.cardSub}>Biometric enclave signature ready</Text>
61
- </View>
62
- </View>
63
- </View>
64
-
65
- <TouchableOpacity
66
- activeOpacity={0.78}
67
- style={styles.confirmButton}
68
- onPress={() => navigation.navigate('Home')}
69
- >
70
- <Text style={styles.confirmButtonText}>Authorize $377.80 Settlement</Text>
71
- </TouchableOpacity>
72
- </View>
73
- );
74
- }
75
-
76
- const styles = StyleSheet.create({
77
- container: {
78
- flex: 1,
79
- backgroundColor: '#0A0B0E',
80
- padding: 20,
81
- justifyContent: 'space-between',
82
- },
83
- headerRow: {
84
- flexDirection: 'row',
85
- justifyContent: 'space-between',
86
- alignItems: 'center',
87
- marginTop: 6,
88
- },
89
- backButton: {
90
- backgroundColor: '#13161E',
91
- paddingHorizontal: 12,
92
- paddingVertical: 9,
93
- borderRadius: 8,
94
- borderWidth: 1,
95
- borderColor: '#222836',
96
- },
97
- backButtonText: {
98
- color: '#E2E8F0',
99
- fontSize: 12,
100
- fontWeight: '600',
101
- },
102
- headerTitle: {
103
- color: '#F8FAFC',
104
- fontSize: 16,
105
- fontWeight: '700',
106
- letterSpacing: -0.2,
107
- },
108
- orderCard: {
109
- backgroundColor: '#11141C',
110
- borderRadius: 16,
111
- padding: 18,
112
- gap: 12,
113
- borderWidth: 1,
114
- borderColor: '#1E2433',
115
- },
116
- sectionHeading: {
117
- color: '#38BDF8',
118
- fontSize: 10,
119
- fontWeight: '700',
120
- letterSpacing: 1,
121
- },
122
- itemRow: {
123
- flexDirection: 'row',
124
- justifyContent: 'space-between',
125
- alignItems: 'center',
126
- },
127
- itemName: {
128
- color: '#F8FAFC',
129
- fontSize: 15,
130
- fontWeight: '600',
131
- },
132
- itemVariant: {
133
- color: '#64748B',
134
- fontSize: 12,
135
- marginTop: 2,
136
- },
137
- itemPrice: {
138
- color: '#F8FAFC',
139
- fontSize: 15,
140
- fontWeight: '700',
141
- },
142
- divider: {
143
- height: 1,
144
- backgroundColor: '#1E2433',
145
- marginVertical: 4,
146
- },
147
- summaryRow: {
148
- flexDirection: 'row',
149
- justifyContent: 'space-between',
150
- },
151
- summaryLabel: {
152
- color: '#94A3B8',
153
- fontSize: 13,
154
- },
155
- summaryFree: {
156
- color: '#10B981',
157
- fontSize: 11,
158
- fontWeight: '700',
159
- letterSpacing: 0.6,
160
- },
161
- summaryValue: {
162
- color: '#E2E8F0',
163
- fontSize: 13,
164
- fontWeight: '600',
165
- },
166
- totalRow: {
167
- flexDirection: 'row',
168
- justifyContent: 'space-between',
169
- alignItems: 'center',
170
- marginTop: 4,
171
- },
172
- totalLabel: {
173
- color: '#F8FAFC',
174
- fontSize: 14,
175
- fontWeight: '700',
176
- },
177
- totalAmount: {
178
- color: '#38BDF8',
179
- fontSize: 20,
180
- fontWeight: '700',
181
- },
182
- paymentCard: {
183
- backgroundColor: '#11141C',
184
- borderRadius: 14,
185
- padding: 16,
186
- gap: 10,
187
- borderWidth: 1,
188
- borderColor: '#1E2433',
189
- },
190
- cardMethodRow: {
191
- flexDirection: 'row',
192
- alignItems: 'center',
193
- gap: 12,
194
- },
195
- cardBrandBadge: {
196
- backgroundColor: '#161A26',
197
- borderWidth: 1,
198
- borderColor: '#262D3D',
199
- paddingHorizontal: 10,
200
- paddingVertical: 8,
201
- borderRadius: 7,
202
- },
203
- cardBrandText: {
204
- color: '#38BDF8',
205
- fontSize: 10,
206
- fontWeight: '700',
207
- letterSpacing: 0.8,
208
- },
209
- cardNumber: {
210
- color: '#F8FAFC',
211
- fontSize: 14,
212
- fontWeight: '600',
213
- },
214
- cardSub: {
215
- color: '#64748B',
216
- fontSize: 12,
217
- },
218
- confirmButton: {
219
- backgroundColor: '#F8FAFC',
220
- borderRadius: 10,
221
- paddingVertical: 15,
222
- alignItems: 'center',
223
- },
224
- confirmButtonText: {
225
- color: '#08090C',
226
- fontSize: 14,
227
- fontWeight: '700',
228
- },
229
- });