zelune 1.6.3 → 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 +8 -0
- package/bin/cli.mjs +13 -53
- 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 -1
- package/mcp/server.mjs +1324 -29
- package/package.json +10 -13
- package/plugin.json +1 -1
- package/socket.yml +11 -0
- package/mcp/server.ts +0 -446
- package/plugins/viteReactNativeFallbackPlugin.ts +0 -522
- package/plugins/viteRnSourceInject.ts +0 -105
- 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 -1869
- package/src/runtime/ScreenErrorBoundary.tsx +0 -86
- package/src/runtime/nativewindShim.ts +0 -997
- package/src/runtime/reactNativeShim.ts +0 -1674
- 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 -378
- package/src/server/astEngine.ts +0 -2624
- package/src/vite-env.d.ts +0 -7
- package/tsconfig.json +0 -23
- package/vite.config.ts +0 -339
- /package/{src/styles.css → dist/assets/index-C7nrS82N.css} +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
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
|
+
|
|
5
13
|
## [1.6.3] - 2026-10-24
|
|
6
14
|
|
|
7
15
|
### Security
|
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,17 +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 { startMcpServer } = await import('../mcp/server.mjs');
|
|
369
339
|
startMcpServer(resolvedMobileRoot);
|
|
370
340
|
return;
|
|
371
341
|
}
|
|
372
342
|
|
|
373
343
|
const portFlagIdx = args.indexOf('--port');
|
|
374
|
-
let
|
|
344
|
+
let requestedPort;
|
|
375
345
|
if (portFlagIdx !== -1 && args[portFlagIdx + 1]) {
|
|
376
346
|
const parsedPort = Number.parseInt(String(args[portFlagIdx + 1]), 10);
|
|
377
347
|
if (!Number.isInteger(parsedPort) || parsedPort < 1 || parsedPort > 65535) {
|
|
@@ -380,32 +350,22 @@ Usage:
|
|
|
380
350
|
);
|
|
381
351
|
process.exit(1);
|
|
382
352
|
}
|
|
383
|
-
|
|
384
|
-
} else {
|
|
385
|
-
portNumber = await findAvailablePort(5173);
|
|
353
|
+
requestedPort = parsedPort;
|
|
386
354
|
}
|
|
387
355
|
|
|
388
|
-
const
|
|
356
|
+
const { port: boundPort } = await startStudioHttpServer({
|
|
357
|
+
packageRoot: defaultPackageRoot,
|
|
358
|
+
targetProjectRoot: resolvedMobileRoot,
|
|
359
|
+
workspaceRoot: targetProject,
|
|
360
|
+
port: requestedPort,
|
|
361
|
+
});
|
|
389
362
|
|
|
390
363
|
console.log(`\n🚀 Zelune — React Native Visual Canvas & MCP`);
|
|
391
364
|
console.log(`📂 Workspace Root: ${targetProject}`);
|
|
392
365
|
if (resolvedMobileRoot !== targetProject) {
|
|
393
366
|
console.log(`📱 Mobile App Dir: ${resolvedMobileRoot}`);
|
|
394
367
|
}
|
|
395
|
-
console.log(`🌐 Studio
|
|
396
|
-
|
|
397
|
-
const { createServer } = await import('vite');
|
|
398
|
-
const server = await createServer({
|
|
399
|
-
root: defaultPackageRoot,
|
|
400
|
-
configFile: path.join(defaultPackageRoot, 'vite.config.ts'),
|
|
401
|
-
server: {
|
|
402
|
-
host: '127.0.0.1',
|
|
403
|
-
port: portNumber,
|
|
404
|
-
open: shouldOpenBrowser,
|
|
405
|
-
},
|
|
406
|
-
});
|
|
407
|
-
await server.listen();
|
|
408
|
-
server.printUrls();
|
|
368
|
+
console.log(`🌐 Studio Ready: 127.0.0.1:${boundPort}\n`);
|
|
409
369
|
}
|
|
410
370
|
|
|
411
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
|
+
};
|