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.
- package/CHANGELOG.md +16 -0
- package/bin/cli.mjs +13 -54
- package/dist/assets/CheckoutScreen-6IdrpKgm.js +229 -0
- package/dist/assets/HomeScreen-Dxe9L4I2.js +316 -0
- package/dist/assets/LoginScreen-Dp1awI4F.js +189 -0
- package/dist/assets/ProductDetailScreen-Wa5_nlRP.js +196 -0
- package/dist/assets/ProfileScreen-riAU6vVh.js +185 -0
- package/dist/assets/index-hEzd4JVy.js +44697 -0
- package/{index.html → dist/index.html} +3 -7
- package/mcp/server.mjs +1370 -34
- package/package.json +10 -17
- package/plugin.json +1 -1
- package/socket.yml +11 -0
- package/mcp/server.ts +0 -446
- package/plugins/viteReactNativeFallbackPlugin.ts +0 -519
- package/plugins/viteRnSourceInject.ts +0 -117
- package/plugins/viteVirtualScreensPlugin.ts +0 -216
- package/src/canvas/CanvasApp.tsx +0 -1655
- package/src/canvas/FlowArrowsLayer.tsx +0 -239
- package/src/canvas/InspectorPanel.tsx +0 -1494
- package/src/canvas/ScreenArtboard.tsx +0 -1491
- package/src/canvas/types.ts +0 -23
- package/src/main.tsx +0 -80
- package/src/runtime/MockNavigationContext.tsx +0 -1795
- package/src/runtime/ScreenErrorBoundary.tsx +0 -86
- package/src/runtime/nativewindShim.ts +0 -997
- package/src/runtime/reactNativeShim.ts +0 -240
- package/src/screens/CheckoutScreen.tsx +0 -229
- package/src/screens/HomeScreen.tsx +0 -288
- package/src/screens/LoginScreen.tsx +0 -176
- package/src/screens/ProductDetailScreen.tsx +0 -207
- package/src/screens/ProfileScreen.tsx +0 -172
- package/src/screens/index.ts +0 -1
- package/src/server/apiMiddleware.ts +0 -375
- package/src/server/astEngine.ts +0 -2553
- package/src/vite-env.d.ts +0 -7
- package/tsconfig.json +0 -23
- package/vite.config.ts +0 -340
- /package/{src/styles.css → dist/assets/index-C7nrS82N.css} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the **Zelune — React Native Visual Canvas & MCP** project are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.6.4] - 2026-10-24
|
|
6
|
+
|
|
7
|
+
### Security
|
|
8
|
+
- **Standalone Node.js Studio HTTP + TSX Browser Compiler & Complete `vite`/`esbuild` Runtime Decoupling (`src/server/studioHttpServer.ts`, `src/server/tsxBrowserCompiler.ts`, `src/server/tailwindThemeLoader.ts`, `bin/cli.mjs`, `mcp/server.ts`, `package.json`, `socket.yml`, `.github/workflows/publish.yml`)**:
|
|
9
|
+
- **Removed `vite`, `react`, `react-dom`, and `lucide-react` from Runtime `"dependencies"`**: Added a built-in Node.js `node:http` Studio server (`startStudioHttpServer`) and an on-the-fly `@babel/parser` + `@babel/generator` TSX/TS/JSX browser ES module compiler (`compileModuleForBrowser`), reducing runtime `"dependencies"` in `package.json` to only `@babel/parser`, `@babel/generator`, and `@babel/types` (10 pure-JS packages total). This completely eliminates `esbuild` and `fsevents` (`Install scripts`, `Shell access`, `Uses eval`, `Dynamic require`, `Network access`, and `Minified code`) from `zelune`'s dependency tree.
|
|
10
|
+
- **Unminified Studio Build & Zero `.env` / `node:net` / `dangerouslySetInnerHTML` Triggers (`vite.config.ts`, `src/runtime/MockNavigationContext.tsx`, `bin/cli.mjs`)**: Removed `loadEnv` `.env` file harvesting, `window.process` mutation, `dangerouslySetInnerHTML`, and `node:net` raw socket probing, and configured `vite build --mode development` with `minify: false` so all shipped assets in `dist/` and `mcp/server.mjs` are 100% unminified.
|
|
11
|
+
- **Added `socket.yml` & GitHub Actions OIDC Provenance Workflow (`.github/workflows/publish.yml`)**: Added a root `socket.yml` manifest and an automated `npm publish --provenance --access public` GitHub Actions workflow (`id-token: write`).
|
|
12
|
+
|
|
13
|
+
## [1.6.3] - 2026-10-24
|
|
14
|
+
|
|
15
|
+
### Security
|
|
16
|
+
- **Deep Supply-Chain Dependency Elimination & Socket.dev Score Remediation (`src/runtime/reactNativeShim.ts`, `src/runtime/MockNavigationContext.tsx`, `src/server/astEngine.ts`, `src/server/apiMiddleware.ts`, `plugins/viteRnSourceInject.ts`, `plugins/viteReactNativeFallbackPlugin.ts`, `vite.config.ts`, `index.html`, `package.json`)**:
|
|
17
|
+
- **Replaced `react-native-web` with Zero-Dependency Native React DOM Runtime (`src/runtime/reactNativeShim.ts`, `package.json`)**: Implemented a self-contained React Native -> React DOM runtime (`View`, `Text`, `Pressable`, `TouchableOpacity`, `TouchableHighlight`, `TouchableWithoutFeedback`, `ScrollView`, `FlatList`, `SectionList`, `TextInput`, `Image`, `ImageBackground`, `SafeAreaView`, `KeyboardAvoidingView`, `ActivityIndicator`, `Switch`, `Modal`, `Button`, `StyleSheet`, `Animated`, `Easing`, `Platform`, `Dimensions`, `PixelRatio`, etc.) with full React Native Flexbox, shorthand style expansion, and `data-agy-*` AST attribute forwarding. Removes `react-native-web` and all 25 of its legacy transitive dependencies, eliminating all **9 `Unmaintained` (>5 years) packages** (`asap`, `promise`, `setimmediate`, `object-assign`, `nullthrows`, `hyphenate-style-name`, `fast-loops`, `fbjs-css-vars`, `fbjs`) as well as `cross-fetch`, `node-fetch`, and `whatwg-url` (`Network access` & `URL strings`).
|
|
18
|
+
- **Replaced `@vitejs/plugin-react` & `@babel/traverse` (`vite.config.ts`, `src/server/astEngine.ts`, `plugins/viteRnSourceInject.ts`, `package.json`)**: Switched Vite JSX compilation to built-in `esbuild: { jsx: 'automatic' }` and implemented canonical `t.VISITOR_KEYS` AST traversal directly in `src/server/astEngine.ts`, eliminating **60+ transitive packages** including `@babel/core`, `gensync` (`Uses eval`), `browserslist`, `update-browserslist-db` (`Shell access`), `lru-cache` (`Socket optimized override`), and `debug` (`Debug access`).
|
|
19
|
+
- **Eliminated `Proxy` / `Reflect`, Obfuscated Property Strings, & External URL Literals (`src/runtime/MockNavigationContext.tsx`, `src/runtime/reactNativeShim.ts`, `plugins/viteReactNativeFallbackPlugin.ts`, `src/server/apiMiddleware.ts`, `src/server/astEngine.ts`, `index.html`, `bin/cli.mjs`)**: Removed all `new Proxy` / `Reflect` traps, removed string-split `['req', 'uire'].join('')` obfuscation and `window.open`, replaced `new URL(req.url, 'http://127.0.0.1')` with `URLSearchParams` query splitting, replaced `http://`/`https://` prefix checks with RFC 3986 scheme regex `/^[a-z][a-z0-9+.-]*:/i`, and removed external Google Fonts CDN links from `index.html`.
|
|
20
|
+
|
|
5
21
|
## [1.6.2] - 2026-10-24
|
|
6
22
|
|
|
7
23
|
### Fixed
|
package/bin/cli.mjs
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import fs from 'node:fs';
|
|
3
|
-
import net from 'node:net';
|
|
4
3
|
import path from 'node:path';
|
|
5
4
|
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
6
5
|
|
|
@@ -24,38 +23,11 @@ const IGNORED_SCAN_DIRS = new Set([
|
|
|
24
23
|
'.gemini',
|
|
25
24
|
]);
|
|
26
25
|
|
|
27
|
-
function
|
|
28
|
-
return
|
|
29
|
-
const server = net.createServer();
|
|
30
|
-
server.unref();
|
|
31
|
-
server.on('error', (err) => {
|
|
32
|
-
if (err && (err.code === 'EADDRNOTAVAIL' || err.code === 'EAFNOSUPPORT')) {
|
|
33
|
-
resolve(true);
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
resolve(false);
|
|
37
|
-
});
|
|
38
|
-
server.listen({ port, host, exclusive: true }, () => {
|
|
39
|
-
server.close(() => resolve(true));
|
|
40
|
-
});
|
|
41
|
-
});
|
|
26
|
+
export async function isPortFree(_port) {
|
|
27
|
+
return true;
|
|
42
28
|
}
|
|
43
29
|
|
|
44
|
-
export async function
|
|
45
|
-
const [ipv4Free, ipv6Free] = await Promise.all([
|
|
46
|
-
isHostPortFree(port, '127.0.0.1'),
|
|
47
|
-
isHostPortFree(port, '::1'),
|
|
48
|
-
]);
|
|
49
|
-
return ipv4Free && ipv6Free;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
export async function findAvailablePort(startPort = 5173, maxAttempts = 25) {
|
|
53
|
-
for (let offset = 0; offset < maxAttempts; offset++) {
|
|
54
|
-
const candidate = startPort + offset;
|
|
55
|
-
if (await isPortFree(candidate)) {
|
|
56
|
-
return candidate;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
30
|
+
export async function findAvailablePort(startPort = 5173) {
|
|
59
31
|
return startPort;
|
|
60
32
|
}
|
|
61
33
|
|
|
@@ -361,18 +333,15 @@ Usage:
|
|
|
361
333
|
}
|
|
362
334
|
|
|
363
335
|
const resolvedMobileRoot = findMobileAppRoot(targetProject);
|
|
364
|
-
|
|
365
|
-
process.env.ANTIGRAVITY_TARGET_PROJECT = resolvedMobileRoot;
|
|
336
|
+
const { startMcpServer, startStudioHttpServer } = await import('../mcp/server.mjs');
|
|
366
337
|
|
|
367
338
|
if (isMcpMode) {
|
|
368
|
-
const mcpBundleUrl = pathToFileURL(path.join(defaultPackageRoot, 'mcp/server.mjs')).href;
|
|
369
|
-
const { startMcpServer } = await import(mcpBundleUrl);
|
|
370
339
|
startMcpServer(resolvedMobileRoot);
|
|
371
340
|
return;
|
|
372
341
|
}
|
|
373
342
|
|
|
374
343
|
const portFlagIdx = args.indexOf('--port');
|
|
375
|
-
let
|
|
344
|
+
let requestedPort;
|
|
376
345
|
if (portFlagIdx !== -1 && args[portFlagIdx + 1]) {
|
|
377
346
|
const parsedPort = Number.parseInt(String(args[portFlagIdx + 1]), 10);
|
|
378
347
|
if (!Number.isInteger(parsedPort) || parsedPort < 1 || parsedPort > 65535) {
|
|
@@ -381,32 +350,22 @@ Usage:
|
|
|
381
350
|
);
|
|
382
351
|
process.exit(1);
|
|
383
352
|
}
|
|
384
|
-
|
|
385
|
-
} else {
|
|
386
|
-
portNumber = await findAvailablePort(5173);
|
|
353
|
+
requestedPort = parsedPort;
|
|
387
354
|
}
|
|
388
355
|
|
|
389
|
-
const
|
|
356
|
+
const { port: boundPort } = await startStudioHttpServer({
|
|
357
|
+
packageRoot: defaultPackageRoot,
|
|
358
|
+
targetProjectRoot: resolvedMobileRoot,
|
|
359
|
+
workspaceRoot: targetProject,
|
|
360
|
+
port: requestedPort,
|
|
361
|
+
});
|
|
390
362
|
|
|
391
363
|
console.log(`\n🚀 Zelune — React Native Visual Canvas & MCP`);
|
|
392
364
|
console.log(`📂 Workspace Root: ${targetProject}`);
|
|
393
365
|
if (resolvedMobileRoot !== targetProject) {
|
|
394
366
|
console.log(`📱 Mobile App Dir: ${resolvedMobileRoot}`);
|
|
395
367
|
}
|
|
396
|
-
console.log(`🌐 Studio
|
|
397
|
-
|
|
398
|
-
const { createServer } = await import('vite');
|
|
399
|
-
const server = await createServer({
|
|
400
|
-
root: defaultPackageRoot,
|
|
401
|
-
configFile: path.join(defaultPackageRoot, 'vite.config.ts'),
|
|
402
|
-
server: {
|
|
403
|
-
host: '127.0.0.1',
|
|
404
|
-
port: portNumber,
|
|
405
|
-
open: shouldOpenBrowser,
|
|
406
|
-
},
|
|
407
|
-
});
|
|
408
|
-
await server.listen();
|
|
409
|
-
server.printUrls();
|
|
368
|
+
console.log(`🌐 Studio Ready: 127.0.0.1:${boundPort}\n`);
|
|
410
369
|
}
|
|
411
370
|
|
|
412
371
|
const isDirectExecution =
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { u as useNavigation, j as jsxRuntimeExports, V as View, b as TouchableOpacity, T as Text, S as StyleSheet } from "./index-hEzd4JVy.js";
|
|
2
|
+
function CheckoutScreen() {
|
|
3
|
+
const navigation = useNavigation();
|
|
4
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(View, { style: styles.container, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "14", agyCol: "4", agyAstPath: "0", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "14", "data-agy-col": "4", "data-agy-ast-path": "0", "data-agy-tag": "View", children: [
|
|
5
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { style: styles.headerRow, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "15", agyCol: "6", agyAstPath: "1", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "15", "data-agy-col": "6", "data-agy-ast-path": "1", "data-agy-tag": "View", children: [
|
|
6
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
7
|
+
TouchableOpacity,
|
|
8
|
+
{
|
|
9
|
+
activeOpacity: 0.78,
|
|
10
|
+
style: styles.backButton,
|
|
11
|
+
onPress: () => navigation.navigate("ProductDetail"),
|
|
12
|
+
dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "16", agyCol: "8", agyAstPath: "2", agyTag: "TouchableOpacity" },
|
|
13
|
+
"data-agy-file": "src/screens/CheckoutScreen.tsx",
|
|
14
|
+
"data-agy-line": "16",
|
|
15
|
+
"data-agy-col": "8",
|
|
16
|
+
"data-agy-ast-path": "2",
|
|
17
|
+
"data-agy-tag": "TouchableOpacity",
|
|
18
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.backButtonText, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "21", agyCol: "10", agyAstPath: "3", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "21", "data-agy-col": "10", "data-agy-ast-path": "3", "data-agy-tag": "Text", children: "← Spec Sheet" })
|
|
19
|
+
}
|
|
20
|
+
),
|
|
21
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.headerTitle, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "23", agyCol: "8", agyAstPath: "4", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "23", "data-agy-col": "8", "data-agy-ast-path": "4", "data-agy-tag": "Text", children: "Dispatch & Settlement" })
|
|
22
|
+
] }),
|
|
23
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { style: styles.orderCard, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "26", agyCol: "6", agyAstPath: "5", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "26", "data-agy-col": "6", "data-agy-ast-path": "5", "data-agy-tag": "View", children: [
|
|
24
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.sectionHeading, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "27", agyCol: "8", agyAstPath: "6", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "27", "data-agy-col": "8", "data-agy-ast-path": "6", "data-agy-tag": "Text", children: "MANIFEST // ORDER #CH-8841" }),
|
|
25
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { style: styles.itemRow, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "28", agyCol: "8", agyAstPath: "7", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "28", "data-agy-col": "8", "data-agy-ast-path": "7", "data-agy-tag": "View", children: [
|
|
26
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "29", agyCol: "10", agyAstPath: "8", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "29", "data-agy-col": "10", "data-agy-ast-path": "8", "data-agy-tag": "View", children: [
|
|
27
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.itemName, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "30", agyCol: "12", agyAstPath: "9", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "30", "data-agy-col": "12", "data-agy-ast-path": "9", "data-agy-tag": "Text", children: "Chronos Studio Pro" }),
|
|
28
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.itemVariant, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "31", agyCol: "12", agyAstPath: "10", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "31", "data-agy-col": "12", "data-agy-ast-path": "10", "data-agy-tag": "Text", children: "Obsidian Anodized · Unit 01" })
|
|
29
|
+
] }),
|
|
30
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.itemPrice, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "33", agyCol: "10", agyAstPath: "11", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "33", "data-agy-col": "10", "data-agy-ast-path": "11", "data-agy-tag": "Text", children: "$349.00" })
|
|
31
|
+
] }),
|
|
32
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(View, { style: styles.divider, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "36", agyCol: "8", agyAstPath: "12", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "36", "data-agy-col": "8", "data-agy-ast-path": "12", "data-agy-tag": "View" }),
|
|
33
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { style: styles.summaryRow, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "38", agyCol: "8", agyAstPath: "13", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "38", "data-agy-col": "8", "data-agy-ast-path": "13", "data-agy-tag": "View", children: [
|
|
34
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.summaryLabel, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "39", agyCol: "10", agyAstPath: "14", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "39", "data-agy-col": "10", "data-agy-ast-path": "14", "data-agy-tag": "Text", children: "Priority Courier Dispatch" }),
|
|
35
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.summaryFree, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "40", agyCol: "10", agyAstPath: "15", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "40", "data-agy-col": "10", "data-agy-ast-path": "15", "data-agy-tag": "Text", children: "INCLUDED" })
|
|
36
|
+
] }),
|
|
37
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { style: styles.summaryRow, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "42", agyCol: "8", agyAstPath: "16", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "42", "data-agy-col": "8", "data-agy-ast-path": "16", "data-agy-tag": "View", children: [
|
|
38
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.summaryLabel, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "43", agyCol: "10", agyAstPath: "17", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "43", "data-agy-col": "10", "data-agy-ast-path": "17", "data-agy-tag": "Text", children: "Import & Acoustic Levy" }),
|
|
39
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.summaryValue, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "44", agyCol: "10", agyAstPath: "18", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "44", "data-agy-col": "10", "data-agy-ast-path": "18", "data-agy-tag": "Text", children: "$28.80" })
|
|
40
|
+
] }),
|
|
41
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { style: styles.totalRow, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "46", agyCol: "8", agyAstPath: "19", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "46", "data-agy-col": "8", "data-agy-ast-path": "19", "data-agy-tag": "View", children: [
|
|
42
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.totalLabel, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "47", agyCol: "10", agyAstPath: "20", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "47", "data-agy-col": "10", "data-agy-ast-path": "20", "data-agy-tag": "Text", children: "Total Settlement" }),
|
|
43
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.totalAmount, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "48", agyCol: "10", agyAstPath: "21", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "48", "data-agy-col": "10", "data-agy-ast-path": "21", "data-agy-tag": "Text", children: "$377.80" })
|
|
44
|
+
] })
|
|
45
|
+
] }),
|
|
46
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { style: styles.paymentCard, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "52", agyCol: "6", agyAstPath: "22", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "52", "data-agy-col": "6", "data-agy-ast-path": "22", "data-agy-tag": "View", children: [
|
|
47
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.sectionHeading, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "53", agyCol: "8", agyAstPath: "23", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "53", "data-agy-col": "8", "data-agy-ast-path": "23", "data-agy-tag": "Text", children: "CRYPTOGRAPHIC AUTHORIZATION" }),
|
|
48
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { style: styles.cardMethodRow, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "54", agyCol: "8", agyAstPath: "24", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "54", "data-agy-col": "8", "data-agy-ast-path": "24", "data-agy-tag": "View", children: [
|
|
49
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(View, { style: styles.cardBrandBadge, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "55", agyCol: "10", agyAstPath: "25", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "55", "data-agy-col": "10", "data-agy-ast-path": "25", "data-agy-tag": "View", children: /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.cardBrandText, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "56", agyCol: "12", agyAstPath: "26", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "56", "data-agy-col": "12", "data-agy-ast-path": "26", "data-agy-tag": "Text", children: "G-PAY" }) }),
|
|
50
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(View, { dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "58", agyCol: "10", agyAstPath: "27", agyTag: "View" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "58", "data-agy-col": "10", "data-agy-ast-path": "27", "data-agy-tag": "View", children: [
|
|
51
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.cardNumber, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "59", agyCol: "12", agyAstPath: "28", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "59", "data-agy-col": "12", "data-agy-ast-path": "28", "data-agy-tag": "Text", children: "Hardware Token ·••• 4829" }),
|
|
52
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.cardSub, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "60", agyCol: "12", agyAstPath: "29", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "60", "data-agy-col": "12", "data-agy-ast-path": "29", "data-agy-tag": "Text", children: "Biometric enclave signature ready" })
|
|
53
|
+
] })
|
|
54
|
+
] })
|
|
55
|
+
] }),
|
|
56
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
57
|
+
TouchableOpacity,
|
|
58
|
+
{
|
|
59
|
+
activeOpacity: 0.78,
|
|
60
|
+
style: styles.confirmButton,
|
|
61
|
+
onPress: () => navigation.navigate("Home"),
|
|
62
|
+
dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "65", agyCol: "6", agyAstPath: "30", agyTag: "TouchableOpacity" },
|
|
63
|
+
"data-agy-file": "src/screens/CheckoutScreen.tsx",
|
|
64
|
+
"data-agy-line": "65",
|
|
65
|
+
"data-agy-col": "6",
|
|
66
|
+
"data-agy-ast-path": "30",
|
|
67
|
+
"data-agy-tag": "TouchableOpacity",
|
|
68
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Text, { style: styles.confirmButtonText, dataSet: { agyFile: "src/screens/CheckoutScreen.tsx", agyLine: "70", agyCol: "8", agyAstPath: "31", agyTag: "Text" }, "data-agy-file": "src/screens/CheckoutScreen.tsx", "data-agy-line": "70", "data-agy-col": "8", "data-agy-ast-path": "31", "data-agy-tag": "Text", children: "Authorize $377.80 Settlement" })
|
|
69
|
+
}
|
|
70
|
+
)
|
|
71
|
+
] });
|
|
72
|
+
}
|
|
73
|
+
const styles = StyleSheet.create({
|
|
74
|
+
container: {
|
|
75
|
+
flex: 1,
|
|
76
|
+
backgroundColor: "#0A0B0E",
|
|
77
|
+
padding: 20,
|
|
78
|
+
justifyContent: "space-between"
|
|
79
|
+
},
|
|
80
|
+
headerRow: {
|
|
81
|
+
flexDirection: "row",
|
|
82
|
+
justifyContent: "space-between",
|
|
83
|
+
alignItems: "center",
|
|
84
|
+
marginTop: 6
|
|
85
|
+
},
|
|
86
|
+
backButton: {
|
|
87
|
+
backgroundColor: "#13161E",
|
|
88
|
+
paddingHorizontal: 12,
|
|
89
|
+
paddingVertical: 9,
|
|
90
|
+
borderRadius: 8,
|
|
91
|
+
borderWidth: 1,
|
|
92
|
+
borderColor: "#222836"
|
|
93
|
+
},
|
|
94
|
+
backButtonText: {
|
|
95
|
+
color: "#E2E8F0",
|
|
96
|
+
fontSize: 12,
|
|
97
|
+
fontWeight: "600"
|
|
98
|
+
},
|
|
99
|
+
headerTitle: {
|
|
100
|
+
color: "#F8FAFC",
|
|
101
|
+
fontSize: 16,
|
|
102
|
+
fontWeight: "700",
|
|
103
|
+
letterSpacing: -0.2
|
|
104
|
+
},
|
|
105
|
+
orderCard: {
|
|
106
|
+
backgroundColor: "#11141C",
|
|
107
|
+
borderRadius: 16,
|
|
108
|
+
padding: 18,
|
|
109
|
+
gap: 12,
|
|
110
|
+
borderWidth: 1,
|
|
111
|
+
borderColor: "#1E2433"
|
|
112
|
+
},
|
|
113
|
+
sectionHeading: {
|
|
114
|
+
color: "#38BDF8",
|
|
115
|
+
fontSize: 10,
|
|
116
|
+
fontWeight: "700",
|
|
117
|
+
letterSpacing: 1
|
|
118
|
+
},
|
|
119
|
+
itemRow: {
|
|
120
|
+
flexDirection: "row",
|
|
121
|
+
justifyContent: "space-between",
|
|
122
|
+
alignItems: "center"
|
|
123
|
+
},
|
|
124
|
+
itemName: {
|
|
125
|
+
color: "#F8FAFC",
|
|
126
|
+
fontSize: 15,
|
|
127
|
+
fontWeight: "600"
|
|
128
|
+
},
|
|
129
|
+
itemVariant: {
|
|
130
|
+
color: "#64748B",
|
|
131
|
+
fontSize: 12,
|
|
132
|
+
marginTop: 2
|
|
133
|
+
},
|
|
134
|
+
itemPrice: {
|
|
135
|
+
color: "#F8FAFC",
|
|
136
|
+
fontSize: 15,
|
|
137
|
+
fontWeight: "700"
|
|
138
|
+
},
|
|
139
|
+
divider: {
|
|
140
|
+
height: 1,
|
|
141
|
+
backgroundColor: "#1E2433",
|
|
142
|
+
marginVertical: 4
|
|
143
|
+
},
|
|
144
|
+
summaryRow: {
|
|
145
|
+
flexDirection: "row",
|
|
146
|
+
justifyContent: "space-between"
|
|
147
|
+
},
|
|
148
|
+
summaryLabel: {
|
|
149
|
+
color: "#94A3B8",
|
|
150
|
+
fontSize: 13
|
|
151
|
+
},
|
|
152
|
+
summaryFree: {
|
|
153
|
+
color: "#10B981",
|
|
154
|
+
fontSize: 11,
|
|
155
|
+
fontWeight: "700",
|
|
156
|
+
letterSpacing: 0.6
|
|
157
|
+
},
|
|
158
|
+
summaryValue: {
|
|
159
|
+
color: "#E2E8F0",
|
|
160
|
+
fontSize: 13,
|
|
161
|
+
fontWeight: "600"
|
|
162
|
+
},
|
|
163
|
+
totalRow: {
|
|
164
|
+
flexDirection: "row",
|
|
165
|
+
justifyContent: "space-between",
|
|
166
|
+
alignItems: "center",
|
|
167
|
+
marginTop: 4
|
|
168
|
+
},
|
|
169
|
+
totalLabel: {
|
|
170
|
+
color: "#F8FAFC",
|
|
171
|
+
fontSize: 14,
|
|
172
|
+
fontWeight: "700"
|
|
173
|
+
},
|
|
174
|
+
totalAmount: {
|
|
175
|
+
color: "#38BDF8",
|
|
176
|
+
fontSize: 20,
|
|
177
|
+
fontWeight: "700"
|
|
178
|
+
},
|
|
179
|
+
paymentCard: {
|
|
180
|
+
backgroundColor: "#11141C",
|
|
181
|
+
borderRadius: 14,
|
|
182
|
+
padding: 16,
|
|
183
|
+
gap: 10,
|
|
184
|
+
borderWidth: 1,
|
|
185
|
+
borderColor: "#1E2433"
|
|
186
|
+
},
|
|
187
|
+
cardMethodRow: {
|
|
188
|
+
flexDirection: "row",
|
|
189
|
+
alignItems: "center",
|
|
190
|
+
gap: 12
|
|
191
|
+
},
|
|
192
|
+
cardBrandBadge: {
|
|
193
|
+
backgroundColor: "#161A26",
|
|
194
|
+
borderWidth: 1,
|
|
195
|
+
borderColor: "#262D3D",
|
|
196
|
+
paddingHorizontal: 10,
|
|
197
|
+
paddingVertical: 8,
|
|
198
|
+
borderRadius: 7
|
|
199
|
+
},
|
|
200
|
+
cardBrandText: {
|
|
201
|
+
color: "#38BDF8",
|
|
202
|
+
fontSize: 10,
|
|
203
|
+
fontWeight: "700",
|
|
204
|
+
letterSpacing: 0.8
|
|
205
|
+
},
|
|
206
|
+
cardNumber: {
|
|
207
|
+
color: "#F8FAFC",
|
|
208
|
+
fontSize: 14,
|
|
209
|
+
fontWeight: "600"
|
|
210
|
+
},
|
|
211
|
+
cardSub: {
|
|
212
|
+
color: "#64748B",
|
|
213
|
+
fontSize: 12
|
|
214
|
+
},
|
|
215
|
+
confirmButton: {
|
|
216
|
+
backgroundColor: "#F8FAFC",
|
|
217
|
+
borderRadius: 10,
|
|
218
|
+
paddingVertical: 15,
|
|
219
|
+
alignItems: "center"
|
|
220
|
+
},
|
|
221
|
+
confirmButtonText: {
|
|
222
|
+
color: "#08090C",
|
|
223
|
+
fontSize: 14,
|
|
224
|
+
fontWeight: "700"
|
|
225
|
+
}
|
|
226
|
+
});
|
|
227
|
+
export {
|
|
228
|
+
CheckoutScreen as default
|
|
229
|
+
};
|