zelune 1.6.3 → 1.6.5
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 +20 -0
- package/bin/cli.mjs +13 -53
- package/dist/assets/CheckoutScreen-CoLb16nl.js +229 -0
- package/dist/assets/HomeScreen-DtWSrKS1.js +316 -0
- package/dist/assets/LoginScreen-C1EtAYek.js +189 -0
- package/dist/assets/ProductDetailScreen-a9PXPTEY.js +196 -0
- package/dist/assets/ProfileScreen-ChKW9gJP.js +185 -0
- package/dist/assets/index-xam7XuSg.js +44764 -0
- package/{index.html → dist/index.html} +3 -1
- package/mcp/server.mjs +1906 -32
- 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,26 @@
|
|
|
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.5] - 2026-10-25
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Standalone TSX Browser Compiler & Studio Runtime Screen-Loading Fixes — Resolved (`src/server/tsxBrowserCompiler.ts`, `src/server/studioHttpServer.ts`, `src/runtime/MockNavigationContext.tsx`, `src/main.tsx`, `plugins/viteVirtualScreensPlugin.ts`, `src/screens/index.ts`, `src/canvas/CanvasApp.tsx`)**:
|
|
9
|
+
- **Preserved Nested JSX Children During Bottom-Up AST Transformation (`src/server/tsxBrowserCompiler.ts`)**: Fixed `convertJsxChildrenToExprs` dropping child `JSXElement` / `JSXFragment` nodes that had already been transformed bottom-up into `CallExpression`s, which caused screens in `v1.6.4` to render empty root containers.
|
|
10
|
+
- **Preserved Optional Chaining (`?.`) & Added Full TypeScript Import/Re-Export Elision (`src/server/tsxBrowserCompiler.ts`)**: Guarded `delete node.optional` so `OptionalMemberExpression` and `OptionalCallExpression` (`?.`) are never stripped; added `tsc`/`esbuild`-equivalent unused/type-only import and barrel re-export elision (`import { SomeInterface } from '../types'`), `export type *` stripping, `this: T` fake parameter stripping, and constructor `TSParameterProperty` lowering.
|
|
11
|
+
- **Static `require(...)` Asset/Module Rewriting & Safe Browser Globals (`src/server/tsxBrowserCompiler.ts`, `src/runtime/MockNavigationContext.tsx`)**: Transformed static `require('../assets/...')` calls into `/@zelune/asset?file=...` URIs (or hoisted ESM imports) and restored safe browser `window.process`, `window.__DEV__`, `window.global`, and `window.require` globals without `new Proxy` or external URL literals.
|
|
12
|
+
- **Universal Namespace Exports, Singleton Context Routing & Dynamic Screen Fallback (`src/server/studioHttpServer.ts`, `src/server/tsxBrowserCompiler.ts`, `src/main.tsx`, `plugins/viteVirtualScreensPlugin.ts`, `src/canvas/CanvasApp.tsx`)**: Exposed all `MockNavigationContext` exports on `/@zelune/shim/stub.js` by default for `import * as ...` namespace imports, routed local `MockNavigationContext`/`reactNativeShim` imports to the singleton `/@zelune/shim/*` modules, merged `react-dom` (`createPortal`, `flushSync`) into `window.__ZELUNE_RUNTIME__.ReactDOM`, made `/@zelune/module` symlink- and relative-path-aware, and added `getDynamicScreenComponent` fallback for newly added screens.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- **Removed Top Bar `+ Add Element` Button (`src/canvas/CanvasApp.tsx`)**: Removed the `+ Add Element` button from the top Studio bar to keep the header clean and minimal while retaining the full Component Builder Palette inside the Right Inspector panel.
|
|
16
|
+
|
|
17
|
+
## [1.6.4] - 2026-10-24
|
|
18
|
+
|
|
19
|
+
### Security
|
|
20
|
+
- **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`)**:
|
|
21
|
+
- **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.
|
|
22
|
+
- **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.
|
|
23
|
+
- **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`).
|
|
24
|
+
|
|
5
25
|
## [1.6.3] - 2026-10-24
|
|
6
26
|
|
|
7
27
|
### 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-xam7XuSg.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
|
+
};
|