arc402-cli 1.5.0 → 1.6.0
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/dist/commands/agreements.d.ts.map +1 -1
- package/dist/commands/agreements.js +19 -0
- package/dist/commands/agreements.js.map +1 -1
- package/dist/commands/arena-v2.d.ts.map +1 -1
- package/dist/commands/arena-v2.js +129 -4
- package/dist/commands/arena-v2.js.map +1 -1
- package/dist/commands/auth.d.ts +11 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +188 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/chat.d.ts.map +1 -1
- package/dist/commands/chat.js +194 -3
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/compute.d.ts.map +1 -1
- package/dist/commands/compute.js +84 -10
- package/dist/commands/compute.js.map +1 -1
- package/dist/commands/discover.d.ts.map +1 -1
- package/dist/commands/discover.js +20 -0
- package/dist/commands/discover.js.map +1 -1
- package/dist/commands/hire.d.ts.map +1 -1
- package/dist/commands/hire.js +20 -0
- package/dist/commands/hire.js.map +1 -1
- package/dist/commands/lifecycle.d.ts +3 -0
- package/dist/commands/lifecycle.d.ts.map +1 -0
- package/dist/commands/lifecycle.js +58 -0
- package/dist/commands/lifecycle.js.map +1 -0
- package/dist/commands/security.d.ts +3 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +44 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +38 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/subscription.d.ts.map +1 -1
- package/dist/commands/subscription.js +313 -21
- package/dist/commands/subscription.js.map +1 -1
- package/dist/commands/workroom.d.ts.map +1 -1
- package/dist/commands/workroom.js +13 -0
- package/dist/commands/workroom.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +6 -0
- package/dist/program.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +61 -58
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/InputLine.d.ts +4 -2
- package/dist/tui/InputLine.d.ts.map +1 -1
- package/dist/tui/InputLine.js +79 -60
- package/dist/tui/InputLine.js.map +1 -1
- package/dist/tui/KernelPayloadRenderer.d.ts +12 -0
- package/dist/tui/KernelPayloadRenderer.d.ts.map +1 -0
- package/dist/tui/KernelPayloadRenderer.js +41 -0
- package/dist/tui/KernelPayloadRenderer.js.map +1 -0
- package/dist/tui/Viewport.d.ts +15 -5
- package/dist/tui/Viewport.d.ts.map +1 -1
- package/dist/tui/Viewport.js +18 -24
- package/dist/tui/Viewport.js.map +1 -1
- package/dist/tui/command-catalog.d.ts +11 -0
- package/dist/tui/command-catalog.d.ts.map +1 -0
- package/dist/tui/command-catalog.js +119 -0
- package/dist/tui/command-catalog.js.map +1 -0
- package/dist/tui/command-renderers.d.ts +33 -0
- package/dist/tui/command-renderers.d.ts.map +1 -0
- package/dist/tui/command-renderers.js +215 -0
- package/dist/tui/command-renderers.js.map +1 -0
- package/dist/tui/commerce-format.d.ts +3 -0
- package/dist/tui/commerce-format.d.ts.map +1 -0
- package/dist/tui/commerce-format.js +19 -0
- package/dist/tui/commerce-format.js.map +1 -0
- package/dist/tui/components/commerce/AgentPicker.d.ts +7 -0
- package/dist/tui/components/commerce/AgentPicker.d.ts.map +1 -0
- package/dist/tui/components/commerce/AgentPicker.js +33 -0
- package/dist/tui/components/commerce/AgentPicker.js.map +1 -0
- package/dist/tui/components/commerce/AgreementList.d.ts +18 -0
- package/dist/tui/components/commerce/AgreementList.d.ts.map +1 -0
- package/dist/tui/components/commerce/AgreementList.js +25 -0
- package/dist/tui/components/commerce/AgreementList.js.map +1 -0
- package/dist/tui/components/commerce/ComputeCard.d.ts +14 -0
- package/dist/tui/components/commerce/ComputeCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/ComputeCard.js +9 -0
- package/dist/tui/components/commerce/ComputeCard.js.map +1 -0
- package/dist/tui/components/commerce/DiscoverList.d.ts +20 -0
- package/dist/tui/components/commerce/DiscoverList.d.ts.map +1 -0
- package/dist/tui/components/commerce/DiscoverList.js +22 -0
- package/dist/tui/components/commerce/DiscoverList.js.map +1 -0
- package/dist/tui/components/commerce/HireCard.d.ts +14 -0
- package/dist/tui/components/commerce/HireCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/HireCard.js +11 -0
- package/dist/tui/components/commerce/HireCard.js.map +1 -0
- package/dist/tui/components/commerce/ProfileCard.d.ts +19 -0
- package/dist/tui/components/commerce/ProfileCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/ProfileCard.js +10 -0
- package/dist/tui/components/commerce/ProfileCard.js.map +1 -0
- package/dist/tui/components/commerce/RoundsList.d.ts +18 -0
- package/dist/tui/components/commerce/RoundsList.d.ts.map +1 -0
- package/dist/tui/components/commerce/RoundsList.js +9 -0
- package/dist/tui/components/commerce/RoundsList.js.map +1 -0
- package/dist/tui/components/commerce/SquadCard.d.ts +25 -0
- package/dist/tui/components/commerce/SquadCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/SquadCard.js +10 -0
- package/dist/tui/components/commerce/SquadCard.js.map +1 -0
- package/dist/tui/components/commerce/StatusCard.d.ts +21 -0
- package/dist/tui/components/commerce/StatusCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/StatusCard.js +10 -0
- package/dist/tui/components/commerce/StatusCard.js.map +1 -0
- package/dist/tui/components/commerce/SubscribeCard.d.ts +13 -0
- package/dist/tui/components/commerce/SubscribeCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/SubscribeCard.js +10 -0
- package/dist/tui/components/commerce/SubscribeCard.js.map +1 -0
- package/dist/tui/components/commerce/WorkroomCard.d.ts +18 -0
- package/dist/tui/components/commerce/WorkroomCard.d.ts.map +1 -0
- package/dist/tui/components/commerce/WorkroomCard.js +10 -0
- package/dist/tui/components/commerce/WorkroomCard.js.map +1 -0
- package/dist/tui/components/commerce/common.d.ts +53 -0
- package/dist/tui/components/commerce/common.d.ts.map +1 -0
- package/dist/tui/components/commerce/common.js +71 -0
- package/dist/tui/components/commerce/common.js.map +1 -0
- package/dist/tui/components/commerce/index.d.ts +11 -0
- package/dist/tui/components/commerce/index.d.ts.map +1 -0
- package/dist/tui/components/commerce/index.js +27 -0
- package/dist/tui/components/commerce/index.js.map +1 -0
- package/dist/tui/hire-interactive.d.ts +13 -0
- package/dist/tui/hire-interactive.d.ts.map +1 -0
- package/dist/tui/hire-interactive.js +157 -0
- package/dist/tui/hire-interactive.js.map +1 -0
- package/dist/tui/kernel-payload.d.ts +45 -0
- package/dist/tui/kernel-payload.d.ts.map +1 -0
- package/dist/tui/kernel-payload.js +8 -0
- package/dist/tui/kernel-payload.js.map +1 -0
- package/dist/tui/kernel.d.ts +6 -0
- package/dist/tui/kernel.d.ts.map +1 -0
- package/dist/tui/kernel.js +791 -0
- package/dist/tui/kernel.js.map +1 -0
- package/dist/tui/render-inline.d.ts +9 -0
- package/dist/tui/render-inline.d.ts.map +1 -0
- package/dist/tui/render-inline.js +32 -0
- package/dist/tui/render-inline.js.map +1 -0
- package/dist/tui/useChat.d.ts.map +1 -1
- package/dist/tui/useChat.js +2 -2
- package/dist/tui/useChat.js.map +1 -1
- package/dist/tui/useCommand.d.ts +2 -2
- package/dist/tui/useCommand.d.ts.map +1 -1
- package/dist/tui/useCommand.js +57 -19
- package/dist/tui/useCommand.js.map +1 -1
- package/dist/tui/useDaemonEvents.d.ts +4 -0
- package/dist/tui/useDaemonEvents.d.ts.map +1 -0
- package/dist/tui/useDaemonEvents.js +69 -0
- package/dist/tui/useDaemonEvents.js.map +1 -0
- package/dist/tui/useTerminalSize.d.ts +11 -0
- package/dist/tui/useTerminalSize.d.ts.map +1 -0
- package/dist/tui/useTerminalSize.js +32 -0
- package/dist/tui/useTerminalSize.js.map +1 -0
- package/dist/tui-esm/App.js +136 -0
- package/dist/tui-esm/App.js.map +1 -0
- package/dist/tui-esm/Footer.js +13 -0
- package/dist/tui-esm/Footer.js.map +1 -0
- package/dist/tui-esm/Header.js +19 -0
- package/dist/tui-esm/Header.js.map +1 -0
- package/dist/tui-esm/InputLine.js +121 -0
- package/dist/tui-esm/InputLine.js.map +1 -0
- package/dist/tui-esm/Viewport.js +39 -0
- package/dist/tui-esm/Viewport.js.map +1 -0
- package/dist/tui-esm/WalletConnectPairing.js +61 -0
- package/dist/tui-esm/WalletConnectPairing.js.map +1 -0
- package/dist/tui-esm/command-catalog.js +20 -0
- package/dist/tui-esm/command-catalog.js.map +1 -0
- package/dist/tui-esm/command-renderers.js +180 -0
- package/dist/tui-esm/command-renderers.js.map +1 -0
- package/dist/tui-esm/commerce-format.js +19 -0
- package/dist/tui-esm/commerce-format.js.map +1 -0
- package/dist/tui-esm/components/Button.js +21 -0
- package/dist/tui-esm/components/Button.js.map +1 -0
- package/dist/tui-esm/components/CeremonyView.js +10 -0
- package/dist/tui-esm/components/CeremonyView.js.map +1 -0
- package/dist/tui-esm/components/CompletionDropdown.js +23 -0
- package/dist/tui-esm/components/CompletionDropdown.js.map +1 -0
- package/dist/tui-esm/components/ConfirmPrompt.js +10 -0
- package/dist/tui-esm/components/ConfirmPrompt.js.map +1 -0
- package/dist/tui-esm/components/CustomTextInput.js +99 -0
- package/dist/tui-esm/components/CustomTextInput.js.map +1 -0
- package/dist/tui-esm/components/InteractiveTable.js +61 -0
- package/dist/tui-esm/components/InteractiveTable.js.map +1 -0
- package/dist/tui-esm/components/StepSpinner.js +32 -0
- package/dist/tui-esm/components/StepSpinner.js.map +1 -0
- package/dist/tui-esm/components/Toast.js +29 -0
- package/dist/tui-esm/components/Toast.js.map +1 -0
- package/dist/tui-esm/components/commerce/AgreementList.js +25 -0
- package/dist/tui-esm/components/commerce/AgreementList.js.map +1 -0
- package/dist/tui-esm/components/commerce/ComputeCard.js +9 -0
- package/dist/tui-esm/components/commerce/ComputeCard.js.map +1 -0
- package/dist/tui-esm/components/commerce/DiscoverList.js +14 -0
- package/dist/tui-esm/components/commerce/DiscoverList.js.map +1 -0
- package/dist/tui-esm/components/commerce/HireCard.js +11 -0
- package/dist/tui-esm/components/commerce/HireCard.js.map +1 -0
- package/dist/tui-esm/components/commerce/RoundsList.js +9 -0
- package/dist/tui-esm/components/commerce/RoundsList.js.map +1 -0
- package/dist/tui-esm/components/commerce/SquadCard.js +10 -0
- package/dist/tui-esm/components/commerce/SquadCard.js.map +1 -0
- package/dist/tui-esm/components/commerce/StatusCard.js +10 -0
- package/dist/tui-esm/components/commerce/StatusCard.js.map +1 -0
- package/dist/tui-esm/components/commerce/SubscribeCard.js +10 -0
- package/dist/tui-esm/components/commerce/SubscribeCard.js.map +1 -0
- package/dist/tui-esm/components/commerce/WorkroomCard.js +10 -0
- package/dist/tui-esm/components/commerce/WorkroomCard.js.map +1 -0
- package/dist/tui-esm/components/commerce/common.js +71 -0
- package/dist/tui-esm/components/commerce/common.js.map +1 -0
- package/dist/tui-esm/components/commerce/index.js +27 -0
- package/dist/tui-esm/components/commerce/index.js.map +1 -0
- package/dist/tui-esm/index.js +55 -0
- package/dist/tui-esm/index.js.map +1 -0
- package/dist/tui-esm/kernel.js +734 -0
- package/dist/tui-esm/kernel.js.map +1 -0
- package/dist/tui-esm/render-inline.js +32 -0
- package/dist/tui-esm/render-inline.js.map +1 -0
- package/dist/tui-esm/useChat.js +91 -0
- package/dist/tui-esm/useChat.js.map +1 -0
- package/dist/tui-esm/useCommand.js +142 -0
- package/dist/tui-esm/useCommand.js.map +1 -0
- package/dist/tui-esm/useNotifications.js +17 -0
- package/dist/tui-esm/useNotifications.js.map +1 -0
- package/dist/tui-esm/useScroll.js +46 -0
- package/dist/tui-esm/useScroll.js.map +1 -0
- package/dist/tui-esm/useTerminalSize.js +32 -0
- package/dist/tui-esm/useTerminalSize.js.map +1 -0
- package/dist/ui/banner.d.ts.map +1 -1
- package/dist/ui/banner.js +46 -2
- package/dist/ui/banner.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfirmPrompt = ConfirmPrompt;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ink_1 = require("ink");
|
|
6
|
+
const Button_js_1 = require("./Button.js");
|
|
7
|
+
function ConfirmPrompt({ message, onConfirm, onCancel, confirmLabel = "Confirm", cancelLabel = "Cancel", }) {
|
|
8
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { marginBottom: 1, children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { bold: true, color: "cyan", children: ["\u25C8 ", message] }) }), (0, jsx_runtime_1.jsxs)(ink_1.Box, { gap: 2, children: [(0, jsx_runtime_1.jsx)(Button_js_1.Button, { label: confirmLabel, onPress: onConfirm, variant: "primary" }), (0, jsx_runtime_1.jsx)(Button_js_1.Button, { label: cancelLabel, onPress: onCancel, variant: "dim" })] }), (0, jsx_runtime_1.jsx)(ink_1.Box, { marginTop: 1, children: (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "Tab to switch \u00B7 Enter to select" }) })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=ConfirmPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfirmPrompt.js","sourceRoot":"","sources":["../../../src/tui/components/ConfirmPrompt.tsx"],"names":[],"mappings":";;AAYA,sCAuBC;;AAlCD,6BAAgC;AAChC,2CAAqC;AAUrC,SAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,QAAQ,EACR,YAAY,GAAG,SAAS,EACxB,WAAW,GAAG,QAAQ,GACH;IACnB,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,uBAAC,SAAG,IAAC,YAAY,EAAE,CAAC,YAClB,wBAAC,UAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,wBAClB,OAAO,IACL,GACH,EACN,wBAAC,SAAG,IAAC,GAAG,EAAE,CAAC,aACT,uBAAC,kBAAM,IAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAC,SAAS,GAAG,EACrE,uBAAC,kBAAM,IAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAC,KAAK,GAAG,IAC3D,EACN,uBAAC,SAAG,IAAC,SAAS,EAAE,CAAC,YACf,uBAAC,UAAI,IAAC,QAAQ,2DAAuC,GACjD,IACF,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CustomTextInput = CustomTextInput;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const ink_1 = require("ink");
|
|
7
|
+
/**
|
|
8
|
+
* Minimal text input that does NOT intercept Tab, Up, Down, Escape, or Ctrl+C,
|
|
9
|
+
* allowing parent useInput handlers to receive those keys.
|
|
10
|
+
*/
|
|
11
|
+
function CustomTextInput({ value, onChange, onSubmit, focus = true, suppressEnter = false, }) {
|
|
12
|
+
const [cursorPos, setCursorPos] = (0, react_1.useState)(value.length);
|
|
13
|
+
const [cursorVisible, setCursorVisible] = (0, react_1.useState)(true);
|
|
14
|
+
// Keep cursor within bounds when value changes externally
|
|
15
|
+
(0, react_1.useEffect)(() => {
|
|
16
|
+
setCursorPos((pos) => Math.min(pos, value.length));
|
|
17
|
+
}, [value]);
|
|
18
|
+
// Blink cursor
|
|
19
|
+
(0, react_1.useEffect)(() => {
|
|
20
|
+
if (!focus)
|
|
21
|
+
return;
|
|
22
|
+
const timer = setInterval(() => {
|
|
23
|
+
setCursorVisible((v) => !v);
|
|
24
|
+
}, 530);
|
|
25
|
+
return () => clearInterval(timer);
|
|
26
|
+
}, [focus]);
|
|
27
|
+
(0, ink_1.useInput)((input, key) => {
|
|
28
|
+
// Keys we explicitly do NOT handle — let parent see them:
|
|
29
|
+
// Tab, Up, Down, Escape, Ctrl+C
|
|
30
|
+
if (key.tab || key.upArrow || key.downArrow || key.escape)
|
|
31
|
+
return;
|
|
32
|
+
if (input === "\x03")
|
|
33
|
+
return; // Ctrl+C
|
|
34
|
+
// Enter/Return — submit (unless suppressed for dropdown selection)
|
|
35
|
+
if (key.return) {
|
|
36
|
+
if (!suppressEnter) {
|
|
37
|
+
onSubmit?.(value);
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Backspace
|
|
42
|
+
if (key.backspace || key.delete) {
|
|
43
|
+
if (cursorPos > 0) {
|
|
44
|
+
const next = value.slice(0, cursorPos - 1) + value.slice(cursorPos);
|
|
45
|
+
setCursorPos(cursorPos - 1);
|
|
46
|
+
onChange(next);
|
|
47
|
+
}
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
// Left arrow
|
|
51
|
+
if (key.leftArrow) {
|
|
52
|
+
setCursorPos((p) => Math.max(0, p - 1));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
// Right arrow
|
|
56
|
+
if (key.rightArrow) {
|
|
57
|
+
setCursorPos((p) => Math.min(value.length, p + 1));
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Home (Ctrl+A)
|
|
61
|
+
if (input === "\x01") {
|
|
62
|
+
setCursorPos(0);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
// End (Ctrl+E)
|
|
66
|
+
if (input === "\x05") {
|
|
67
|
+
setCursorPos(value.length);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
// Ctrl+U — clear line
|
|
71
|
+
if (input === "\x15") {
|
|
72
|
+
setCursorPos(0);
|
|
73
|
+
onChange("");
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Ctrl+K — kill to end of line
|
|
77
|
+
if (input === "\x0B") {
|
|
78
|
+
onChange(value.slice(0, cursorPos));
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
// Ignore other control characters
|
|
82
|
+
if (input.length > 0 && input.charCodeAt(0) < 32)
|
|
83
|
+
return;
|
|
84
|
+
// Regular character input (including paste)
|
|
85
|
+
if (input.length > 0) {
|
|
86
|
+
const next = value.slice(0, cursorPos) + input + value.slice(cursorPos);
|
|
87
|
+
setCursorPos(cursorPos + input.length);
|
|
88
|
+
onChange(next);
|
|
89
|
+
}
|
|
90
|
+
}, { isActive: focus });
|
|
91
|
+
if (!focus) {
|
|
92
|
+
return (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: value });
|
|
93
|
+
}
|
|
94
|
+
const before = value.slice(0, cursorPos);
|
|
95
|
+
const cursorChar = cursorPos < value.length ? value[cursorPos] : " ";
|
|
96
|
+
const after = value.slice(cursorPos + 1);
|
|
97
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Text, { children: [before, (0, jsx_runtime_1.jsx)(ink_1.Text, { inverse: cursorVisible, children: cursorChar }), after] }));
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=CustomTextInput.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CustomTextInput.js","sourceRoot":"","sources":["../../../src/tui/components/CustomTextInput.tsx"],"names":[],"mappings":";;AAgBA,0CAmHC;;AAnID,iCAAmD;AACnD,6BAAqC;AAWrC;;;GAGG;AACH,SAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,GAAG,IAAI,EACZ,aAAa,GAAG,KAAK,GACA;IACrB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC;IAEzD,0DAA0D;IAC1D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,YAAY,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACrD,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,eAAe;IACf,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAA,cAAQ,EACN,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACb,0DAA0D;QAC1D,gCAAgC;QAChC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO;QAClE,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,CAAC,SAAS;QAEvC,mEAAmE;QACnE,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAC;YACpB,CAAC;YACD,OAAO;QACT,CAAC;QAED,YAAY;QACZ,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBAClB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACpE,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;YACD,OAAO;QACT,CAAC;QAED,aAAa;QACb,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,cAAc;QACd,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACnB,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAED,gBAAgB;QAChB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,YAAY,CAAC,CAAC,CAAC,CAAC;YAChB,OAAO;QACT,CAAC;QAED,eAAe;QACf,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,YAAY,CAAC,CAAC,CAAC,CAAC;YAChB,QAAQ,CAAC,EAAE,CAAC,CAAC;YACb,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;QAED,kCAAkC;QAClC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE;YAAE,OAAO;QAEzD,4CAA4C;QAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,GACR,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7D,YAAY,CAAC,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,EACD,EAAE,QAAQ,EAAE,KAAK,EAAE,CACpB,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,uBAAC,UAAI,IAAC,QAAQ,kBAAE,KAAK,GAAQ,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAEzC,OAAO,CACL,wBAAC,UAAI,eACF,MAAM,EACP,uBAAC,UAAI,IAAC,OAAO,EAAE,aAAa,YAAG,UAAU,GAAQ,EAChD,KAAK,IACD,CACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InteractiveTable = InteractiveTable;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const ink_1 = require("ink");
|
|
7
|
+
const MAX_VISIBLE_ROWS = 15;
|
|
8
|
+
function InteractiveTable({ columns, rows, onSelect, selectedIndex: controlledIdx, }) {
|
|
9
|
+
const [internalIdx, setInternalIdx] = (0, react_1.useState)(0);
|
|
10
|
+
const selectedIndex = controlledIdx ?? internalIdx;
|
|
11
|
+
(0, ink_1.useInput)((_input, key) => {
|
|
12
|
+
if (key.upArrow) {
|
|
13
|
+
setInternalIdx((i) => Math.max(0, i - 1));
|
|
14
|
+
}
|
|
15
|
+
if (key.downArrow) {
|
|
16
|
+
setInternalIdx((i) => Math.min(rows.length - 1, i + 1));
|
|
17
|
+
}
|
|
18
|
+
if (key.return && onSelect && rows[selectedIndex]) {
|
|
19
|
+
onSelect(rows[selectedIndex], selectedIndex);
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
// Compute column widths
|
|
23
|
+
const colWidths = columns.map((col) => {
|
|
24
|
+
if (col.width)
|
|
25
|
+
return col.width;
|
|
26
|
+
let max = col.header.length;
|
|
27
|
+
for (const row of rows) {
|
|
28
|
+
const val = row[col.key] ?? "";
|
|
29
|
+
if (val.length > max)
|
|
30
|
+
max = val.length;
|
|
31
|
+
}
|
|
32
|
+
return Math.min(max + 2, 30);
|
|
33
|
+
});
|
|
34
|
+
const pad = (text, width, align = "left") => {
|
|
35
|
+
const truncated = text.length > width ? text.slice(0, width - 1) + "…" : text;
|
|
36
|
+
if (align === "right")
|
|
37
|
+
return truncated.padStart(width);
|
|
38
|
+
return truncated.padEnd(width);
|
|
39
|
+
};
|
|
40
|
+
// Window visible rows
|
|
41
|
+
let startRow = 0;
|
|
42
|
+
if (rows.length > MAX_VISIBLE_ROWS) {
|
|
43
|
+
startRow = Math.max(0, selectedIndex - Math.floor(MAX_VISIBLE_ROWS / 2));
|
|
44
|
+
startRow = Math.min(startRow, rows.length - MAX_VISIBLE_ROWS);
|
|
45
|
+
}
|
|
46
|
+
const visibleRows = rows.slice(startRow, startRow + MAX_VISIBLE_ROWS);
|
|
47
|
+
// Header
|
|
48
|
+
const headerLine = columns
|
|
49
|
+
.map((col, i) => pad(col.header, colWidths[i], col.align))
|
|
50
|
+
.join(" ");
|
|
51
|
+
const separatorLine = "─".repeat(headerLine.length);
|
|
52
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { bold: true, color: "white", children: [" ", headerLine] }) }), (0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { dimColor: true, children: [" ", separatorLine] }) }), visibleRows.map((row, vi) => {
|
|
53
|
+
const actualIdx = startRow + vi;
|
|
54
|
+
const isSelected = actualIdx === selectedIndex;
|
|
55
|
+
const line = columns
|
|
56
|
+
.map((col, i) => pad(row[col.key] ?? "", colWidths[i], col.align))
|
|
57
|
+
.join(" ");
|
|
58
|
+
return ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: isSelected ? "cyan" : "white", bold: isSelected, children: [isSelected ? "▸" : " ", " ", line] }) }, actualIdx));
|
|
59
|
+
}), rows.length > MAX_VISIBLE_ROWS && ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { dimColor: true, children: [" ", "(", rows.length, " rows \u00B7 \u2191\u2193 navigate \u00B7 Enter select)"] }) })), rows.length <= MAX_VISIBLE_ROWS && rows.length > 0 && ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: " (\u2191\u2193 navigate \u00B7 Enter select)" }) }))] }));
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=InteractiveTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InteractiveTable.js","sourceRoot":"","sources":["../../../src/tui/components/InteractiveTable.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StepSpinner = StepSpinner;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const ink_1 = require("ink");
|
|
7
|
+
const SPINNER_FRAMES = ["◈", "◇", "◆", "◇"];
|
|
8
|
+
const SPINNER_INTERVAL = 120;
|
|
9
|
+
function StepSpinner({ step, total, label, status, detail, error, }) {
|
|
10
|
+
const [frame, setFrame] = (0, react_1.useState)(0);
|
|
11
|
+
(0, react_1.useEffect)(() => {
|
|
12
|
+
if (status !== "running")
|
|
13
|
+
return;
|
|
14
|
+
const timer = setInterval(() => {
|
|
15
|
+
setFrame((f) => (f + 1) % SPINNER_FRAMES.length);
|
|
16
|
+
}, SPINNER_INTERVAL);
|
|
17
|
+
return () => clearInterval(timer);
|
|
18
|
+
}, [status]);
|
|
19
|
+
const prefix = `Step ${step}/${total}`;
|
|
20
|
+
if (status === "pending") {
|
|
21
|
+
return ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { dimColor: true, children: [" ", prefix, " \u2014 ", label] }) }));
|
|
22
|
+
}
|
|
23
|
+
if (status === "running") {
|
|
24
|
+
return ((0, jsx_runtime_1.jsx)(ink_1.Box, { flexDirection: "column", children: (0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "cyan", children: [" ", SPINNER_FRAMES[frame], " ", prefix, " \u2014 ", label, "..."] }) }) }));
|
|
25
|
+
}
|
|
26
|
+
if (status === "done") {
|
|
27
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "green", children: [" \u2713 ", prefix, " \u2014 ", label] }) }), detail && ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { dimColor: true, children: [" \u2514 ", detail] }) }))] }));
|
|
28
|
+
}
|
|
29
|
+
// error
|
|
30
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "red", children: [" \u2717 ", prefix, " \u2014 ", label] }) }), error && ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "red", children: [" \u2514 ", error] }) }))] }));
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=StepSpinner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepSpinner.js","sourceRoot":"","sources":["../../../src/tui/components/StepSpinner.tsx"],"names":[],"mappings":";;AAiBA,kCAkEC;;AAnFD,iCAAmD;AACnD,6BAAgC;AAEhC,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC5C,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAa7B,SAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,KAAK,EACL,KAAK,EACL,MAAM,EACN,MAAM,EACN,KAAK,GACY;IACjB,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAC,CAAC,CAAC,CAAC;IAEtC,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO;QACjC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC,EAAE,gBAAgB,CAAC,CAAC;QACrB,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,MAAM,GAAG,QAAQ,IAAI,IAAI,KAAK,EAAE,CAAC;IAEvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CACL,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,QAAQ,yBAAI,MAAM,cAAK,KAAK,IAAQ,GACtC,CACP,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CACL,uBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,YACzB,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,cAAc,CAAC,KAAK,CAAC,OAAG,MAAM,cAAK,KAAK,WAAW,GACpE,GACF,CACP,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAC,OAAO,yBAAK,MAAM,cAAK,KAAK,IAAQ,GAC5C,EACL,MAAM,IAAI,CACT,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,QAAQ,iCAAO,MAAM,IAAQ,GAC/B,CACP,IACG,CACP,CAAC;IACJ,CAAC;IAED,QAAQ;IACR,OAAO,CACL,wBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAC,KAAK,yBAAK,MAAM,cAAK,KAAK,IAAQ,GAC1C,EACL,KAAK,IAAI,CACR,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAC,KAAK,2BAAO,KAAK,IAAQ,GACjC,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Toast = Toast;
|
|
4
|
+
exports.ToastContainer = ToastContainer;
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const react_1 = require("react");
|
|
7
|
+
const ink_1 = require("ink");
|
|
8
|
+
const VARIANT_CONFIG = {
|
|
9
|
+
info: { icon: "◈", color: "cyan" },
|
|
10
|
+
success: { icon: "✓", color: "green" },
|
|
11
|
+
warning: { icon: "⚠", color: "yellow" },
|
|
12
|
+
error: { icon: "✗", color: "red" },
|
|
13
|
+
};
|
|
14
|
+
function Toast({ toast, onDismiss }) {
|
|
15
|
+
const { icon, color } = VARIANT_CONFIG[toast.variant];
|
|
16
|
+
(0, react_1.useEffect)(() => {
|
|
17
|
+
const timer = setTimeout(() => {
|
|
18
|
+
onDismiss(toast.id);
|
|
19
|
+
}, toast.duration ?? 5000);
|
|
20
|
+
return () => clearTimeout(timer);
|
|
21
|
+
}, [toast.id, toast.duration, onDismiss]);
|
|
22
|
+
return ((0, jsx_runtime_1.jsx)(ink_1.Box, { children: (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: color, children: [icon, " ", toast.message] }) }));
|
|
23
|
+
}
|
|
24
|
+
function ToastContainer({ toasts, onDismiss }) {
|
|
25
|
+
if (toasts.length === 0)
|
|
26
|
+
return null;
|
|
27
|
+
return ((0, jsx_runtime_1.jsx)(ink_1.Box, { flexDirection: "column", children: toasts.map((toast) => ((0, jsx_runtime_1.jsx)(Toast, { toast: toast, onDismiss: onDismiss }, toast.id))) }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=Toast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.js","sourceRoot":"","sources":["../../../src/tui/components/Toast.tsx"],"names":[],"mappings":";;AAwBA,sBAiBC;AAOD,wCAUC;;AA1DD,iCAAyC;AACzC,6BAAgC;AAgBhC,MAAM,cAAc,GAA0D;IAC5E,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;IAClC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;IACtC,OAAO,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE;IACvC,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE;CACnC,CAAC;AAEF,SAAgB,KAAK,CAAC,EAAE,KAAK,EAAE,SAAS,EAAc;IACpD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEtD,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;QAC3B,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAE1C,OAAO,CACL,uBAAC,SAAG,cACF,wBAAC,UAAI,IAAC,KAAK,EAAE,KAAK,aACf,IAAI,OAAG,KAAK,CAAC,OAAO,IAChB,GACH,CACP,CAAC;AACJ,CAAC;AAOD,SAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,SAAS,EAAuB;IACvE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,OAAO,CACL,uBAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,uBAAC,KAAK,IAAgB,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,IAA5C,KAAK,CAAC,EAAE,CAAwC,CAC7D,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AgreementList = AgreementList;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
function toneForStatus(status) {
|
|
7
|
+
const normalized = status.toLowerCase();
|
|
8
|
+
if (normalized.includes("fulfilled"))
|
|
9
|
+
return "success";
|
|
10
|
+
if (normalized.includes("disput"))
|
|
11
|
+
return "danger";
|
|
12
|
+
if (normalized.includes("pending") || normalized.includes("verify"))
|
|
13
|
+
return "warning";
|
|
14
|
+
if (normalized.includes("accept") || normalized.includes("active") || normalized.includes("proposed"))
|
|
15
|
+
return "info";
|
|
16
|
+
return "neutral";
|
|
17
|
+
}
|
|
18
|
+
function AgreementList({ roleLabel = "Recent Agreements", agreements, totalEscrowLabel, status }) {
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)(common_1.CommerceCard, { eyebrow: "Agreements", title: roleLabel, subtitle: totalEscrowLabel, status: status, children: agreements.map((agreement) => ((0, jsx_runtime_1.jsx)(common_1.ListRow, { title: `#${agreement.id} ${agreement.counterparty}`, status: { label: agreement.status, tone: toneForStatus(agreement.status) }, meta: `${agreement.serviceType}${agreement.price ? ` · ${agreement.price}` : ""}`, detail: agreement.verifyWindowMinutes !== undefined
|
|
20
|
+
? `verify window ${(0, common_1.formatCountdown)(agreement.verifyWindowMinutes)}`
|
|
21
|
+
: agreement.deadlineMinutes !== undefined
|
|
22
|
+
? `deadline ${(0, common_1.formatCountdown)(agreement.deadlineMinutes)}`
|
|
23
|
+
: undefined }, agreement.id))) }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=AgreementList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgreementList.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/AgreementList.tsx"],"names":[],"mappings":";;AA6BA,sCAkBC;;AA9CD,qCAAwF;AAmBxF,SAAS,aAAa,CAAC,MAAc;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IACvD,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnD,IAAI,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IACtF,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,MAAM,CAAC;IACrH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,aAAa,CAAC,EAAE,SAAS,GAAG,mBAAmB,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,EAAsB;IACzH,OAAO,CACL,uBAAC,qBAAY,IAAC,OAAO,EAAC,YAAY,EAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,YAC5F,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAC7B,uBAAC,gBAAO,IAEN,KAAK,EAAE,IAAI,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,YAAY,EAAE,EACnD,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAC1E,IAAI,EAAE,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EACjF,MAAM,EAAE,SAAS,CAAC,mBAAmB,KAAK,SAAS;gBACjD,CAAC,CAAC,iBAAiB,IAAA,wBAAe,EAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE;gBACnE,CAAC,CAAC,SAAS,CAAC,eAAe,KAAK,SAAS;oBACzC,CAAC,CAAC,YAAY,IAAA,wBAAe,EAAC,SAAS,CAAC,eAAe,CAAC,EAAE;oBAC1D,CAAC,CAAC,SAAS,IARR,SAAS,CAAC,EAAE,CASjB,CACH,CAAC,GACW,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ComputeCard = ComputeCard;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
function ComputeCard({ sessionId, provider, gpuSpec, rateLabel, consumedLabel, costLabel, remainingLabel, utilizationPercent, status }) {
|
|
7
|
+
return ((0, jsx_runtime_1.jsxs)(common_1.CommerceCard, { eyebrow: "Compute Session", title: sessionId, subtitle: `${provider} · ${gpuSpec}`, status: status, children: [(0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "rate", value: rateLabel, tone: "success" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "consumed", value: consumedLabel ?? "n/a" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "cost", value: costLabel ?? "n/a", tone: "warning" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "remaining", value: remainingLabel ?? "n/a" }), typeof utilizationPercent === "number" ? ((0, jsx_runtime_1.jsx)(common_1.Section, { title: "utilization", children: (0, jsx_runtime_1.jsx)(common_1.Meter, { value: utilizationPercent, tone: "info" }) })) : null] }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=ComputeCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ComputeCard.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/ComputeCard.tsx"],"names":[],"mappings":";;AAeA,kCAcC;;AA5BD,qCAAyF;AAczF,SAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,EAAoB;IAC7J,OAAO,CACL,wBAAC,qBAAY,IAAC,OAAO,EAAC,iBAAiB,EAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,QAAQ,MAAM,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,aAC5G,uBAAC,kBAAS,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAC,SAAS,GAAG,EAC3D,uBAAC,kBAAS,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,aAAa,IAAI,KAAK,GAAI,EAC7D,uBAAC,kBAAS,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,SAAS,IAAI,KAAK,EAAE,IAAI,EAAC,SAAS,GAAG,EACpE,uBAAC,kBAAS,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAE,cAAc,IAAI,KAAK,GAAI,EAC9D,OAAO,kBAAkB,KAAK,QAAQ,CAAC,CAAC,CAAC,CACxC,uBAAC,gBAAO,IAAC,KAAK,EAAC,aAAa,YAC1B,uBAAC,cAAK,IAAC,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAC,MAAM,GAAG,GACxC,CACX,CAAC,CAAC,CAAC,IAAI,IACK,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DiscoverList = DiscoverList;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
const endpointTone = {
|
|
7
|
+
online: "success",
|
|
8
|
+
offline: "danger",
|
|
9
|
+
unknown: "muted",
|
|
10
|
+
};
|
|
11
|
+
function DiscoverList({ title = "Discover Results", agents, summary, status }) {
|
|
12
|
+
return ((0, jsx_runtime_1.jsx)(common_1.CommerceCard, { eyebrow: "Discover", title: title, subtitle: summary, status: status, footer: `${agents.length} ranked result${agents.length === 1 ? "" : "s"}`, children: agents.map((agent) => ((0, jsx_runtime_1.jsx)(common_1.ListRow, { prefix: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}), title: `#${agent.rank} ${agent.name}`, status: agent.endpointStatus ? { label: agent.endpointStatus, tone: endpointTone[agent.endpointStatus] } : undefined, meta: `${agent.wallet} · trust ${agent.trustScore}${agent.priceLabel ? ` · ${agent.priceLabel}` : ""}`, detail: `${agent.serviceType}${agent.capabilitySummary ? ` · ${agent.capabilitySummary}` : ""}${typeof agent.compositeScore === "number" ? ` · score ${(0, common_1.formatPercent)(agent.compositeScore * 100, 1)}` : ""}` }, `${agent.wallet}-${agent.rank}`))) }));
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=DiscoverList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscoverList.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/DiscoverList.tsx"],"names":[],"mappings":";;AA4BA,oCAeC;;AA1CD,qCAAsF;AAqBtF,MAAM,YAAY,GAAkF;IAClG,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,QAAQ;IACjB,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,SAAgB,YAAY,CAAC,EAAE,KAAK,GAAG,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAqB;IACrG,OAAO,CACL,uBAAC,qBAAY,IAAC,OAAO,EAAC,UAAU,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,YACxJ,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,uBAAC,gBAAO,IAEN,MAAM,EAAE,kDAAK,EACb,KAAK,EAAE,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,EACrC,MAAM,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EACpH,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EACtG,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,KAAK,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,IAAA,sBAAa,EAAC,KAAK,CAAC,cAAc,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IALvM,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAMpC,CACH,CAAC,GACW,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HireCard = HireCard;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ink_1 = require("ink");
|
|
6
|
+
const common_1 = require("./common");
|
|
7
|
+
function HireCard({ providerName, providerAddress, capability, price, deadline, agreementId, txHash, notes = [], status }) {
|
|
8
|
+
const title = providerName ? `${providerName} · ${providerAddress}` : providerAddress;
|
|
9
|
+
return ((0, jsx_runtime_1.jsxs)(common_1.CommerceCard, { eyebrow: "Hire", title: title, subtitle: capability, status: status, children: [(0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "price", value: price, tone: "success" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "deadline", value: deadline ?? "open" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "agreement", value: agreementId ?? "pending", tone: agreementId ? "info" : "muted" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "tx", value: txHash ?? "not submitted", tone: txHash ? "muted" : "warning" }), notes.length > 0 ? ((0, jsx_runtime_1.jsx)(common_1.Section, { title: "operator notes", children: notes.map((note, index) => ((0, jsx_runtime_1.jsxs)(ink_1.Text, { children: ["\u2022 ", note] }, `${note}-${index}`))) })) : null] }));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=HireCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HireCard.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/HireCard.tsx"],"names":[],"mappings":";;AAgBA,4BAiBC;;AAhCD,6BAA2B;AAC3B,qCAAkF;AAclF,SAAgB,QAAQ,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,MAAM,EAAiB;IAC7I,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,MAAM,eAAe,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;IACtF,OAAO,CACL,wBAAC,qBAAY,IAAC,OAAO,EAAC,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,aAC7E,uBAAC,kBAAS,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAC,SAAS,GAAG,EACxD,uBAAC,kBAAS,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,IAAI,MAAM,GAAI,EACzD,uBAAC,kBAAS,IAAC,KAAK,EAAC,WAAW,EAAC,KAAK,EAAE,WAAW,IAAI,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAI,EACtG,uBAAC,kBAAS,IAAC,KAAK,EAAC,IAAI,EAAC,KAAK,EAAE,MAAM,IAAI,eAAe,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,GAAI,EAC7F,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAClB,uBAAC,gBAAO,IAAC,KAAK,EAAC,gBAAgB,YAC5B,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC1B,wBAAC,UAAI,0BAA6B,IAAI,KAA3B,GAAG,IAAI,IAAI,KAAK,EAAE,CAAiB,CAC/C,CAAC,GACM,CACX,CAAC,CAAC,CAAC,IAAI,IACK,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RoundsList = RoundsList;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const common_1 = require("./common");
|
|
6
|
+
function RoundsList({ rounds, title = "Arena Rounds", status }) {
|
|
7
|
+
return ((0, jsx_runtime_1.jsx)(common_1.CommerceCard, { eyebrow: "Arena", title: title, status: status, footer: "Built for round boards and live resolution views.", children: rounds.map((round) => ((0, jsx_runtime_1.jsx)(common_1.ListRow, { title: `#${round.id} ${round.question}`, status: round.resolved ? { label: round.outcomeLabel ?? "resolved", tone: "success" } : { label: "open", tone: "warning" }, meta: `${round.category ?? "uncategorized"} · ${round.timingLabel}`, detail: `YES ${round.yesLabel} · NO ${round.noLabel}` }, round.id))) }));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=RoundsList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoundsList.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/RoundsList.tsx"],"names":[],"mappings":";;AAoBA,gCAcC;;AAjCD,qCAAuE;AAmBvE,SAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,cAAc,EAAE,MAAM,EAAmB;IACpF,OAAO,CACL,uBAAC,qBAAY,IAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAC,mDAAmD,YACnH,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,uBAAC,gBAAO,IAEN,KAAK,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,QAAQ,EAAE,EACvC,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,IAAI,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAC1H,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,IAAI,eAAe,MAAM,KAAK,CAAC,WAAW,EAAE,EACnE,MAAM,EAAE,OAAO,KAAK,CAAC,QAAQ,SAAS,KAAK,CAAC,OAAO,EAAE,IAJhD,KAAK,CAAC,EAAE,CAKb,CACH,CAAC,GACW,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SquadCard = SquadCard;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ink_1 = require("ink");
|
|
6
|
+
const common_1 = require("./common");
|
|
7
|
+
function SquadCard({ id, name, domainTag, statusLabel, creator, memberCount, inviteOnly, members = [], briefings = [], status }) {
|
|
8
|
+
return ((0, jsx_runtime_1.jsxs)(common_1.CommerceCard, { eyebrow: "Squad", title: name, subtitle: id, status: status ?? { label: statusLabel, tone: "info" }, children: [(0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "domain", value: domainTag }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "members", value: String(memberCount) }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "invite", value: inviteOnly ? "yes" : "no" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "creator", value: creator ?? "n/a", tone: "muted" }), members.length > 0 ? ((0, jsx_runtime_1.jsx)(common_1.Section, { title: "members", children: members.map((member, index) => ((0, jsx_runtime_1.jsxs)(ink_1.Text, { children: ["\u2022 ", member.agent, member.role ? ` · ${member.role}` : "", member.trustScore !== undefined ? ` · trust ${member.trustScore}` : ""] }, `${member.agent}-${index}`))) })) : null, briefings.length > 0 ? ((0, jsx_runtime_1.jsx)(common_1.Section, { title: "briefings", children: briefings.map((briefing, index) => ((0, jsx_runtime_1.jsxs)(ink_1.Text, { children: ["\u2022 ", briefing.preview, briefing.publishedLabel ? ` · ${briefing.publishedLabel}` : "", briefing.tags?.length ? ` · ${briefing.tags.join(", ")}` : ""] }, `${briefing.preview}-${index}`))) })) : null] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=SquadCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SquadCard.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/SquadCard.tsx"],"names":[],"mappings":";;AA6BA,8BAuBC;;AAnDD,6BAA2B;AAC3B,qCAAkF;AA2BlF,SAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,GAAG,EAAE,EAAE,SAAS,GAAG,EAAE,EAAE,MAAM,EAAkB;IACpJ,OAAO,CACL,wBAAC,qBAAY,IAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,aAC7G,uBAAC,kBAAS,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,SAAS,GAAI,EAC9C,uBAAC,kBAAS,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,GAAI,EACzD,uBAAC,kBAAS,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAI,EAC9D,uBAAC,kBAAS,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,EAClE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACpB,uBAAC,gBAAO,IAAC,KAAK,EAAC,SAAS,YACrB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,wBAAC,UAAI,0BAAqC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,KAA3J,GAAG,MAAM,CAAC,KAAK,IAAI,KAAK,EAAE,CAAyI,CAC/K,CAAC,GACM,CACX,CAAC,CAAC,CAAC,IAAI,EACP,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACtB,uBAAC,gBAAO,IAAC,KAAK,EAAC,WAAW,YACvB,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAClC,wBAAC,UAAI,0BAAyC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAlL,GAAG,QAAQ,CAAC,OAAO,IAAI,KAAK,EAAE,CAA4J,CACtM,CAAC,GACM,CACX,CAAC,CAAC,CAAC,IAAI,IACK,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatusCard = StatusCard;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ink_1 = require("ink");
|
|
6
|
+
const common_1 = require("./common");
|
|
7
|
+
function StatusCard({ wallet, network, balance, trustScore, endpoint, agreements, workroom, status }) {
|
|
8
|
+
return ((0, jsx_runtime_1.jsxs)(common_1.CommerceCard, { eyebrow: "Wallet Status", title: wallet, subtitle: network, status: status, children: [(0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "balance", value: balance ?? "n/a", tone: "success" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "endpoint", value: endpoint ?? "n/a", tone: "muted" }), typeof trustScore === "number" ? (0, jsx_runtime_1.jsx)(common_1.Meter, { label: "trust", value: Math.min(100, Math.max(0, trustScore / 5)), tone: "info" }) : null, agreements ? ((0, jsx_runtime_1.jsxs)(common_1.Section, { title: "agreements", children: [(0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "active", value: String(agreements.active) }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "verify", value: String(agreements.pendingVerification), tone: "warning" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "disputed", value: String(agreements.disputed), tone: "danger" })] })) : null, workroom ? ((0, jsx_runtime_1.jsxs)(common_1.Section, { title: "workroom", children: [(0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "status", value: workroom.status }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "jobs", value: String(workroom.activeJobs ?? 0) }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "harness", value: workroom.harness ?? "n/a" })] })) : null, (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "Structured for inline TUI status rendering in Phase 3." })] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=StatusCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusCard.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/StatusCard.tsx"],"names":[],"mappings":";;AAuBA,gCAuBC;;AA7CD,6BAA2B;AAC3B,qCAAyF;AAqBzF,SAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAmB;IAC1H,OAAO,CACL,wBAAC,qBAAY,IAAC,OAAO,EAAC,eAAe,EAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aACpF,uBAAC,kBAAS,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,IAAI,EAAC,SAAS,GAAG,EACrE,uBAAC,kBAAS,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,QAAQ,IAAI,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,EACpE,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,uBAAC,cAAK,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAC9H,UAAU,CAAC,CAAC,CAAC,CACZ,wBAAC,gBAAO,IAAC,KAAK,EAAC,YAAY,aACzB,uBAAC,kBAAS,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAI,EAC9D,uBAAC,kBAAS,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAC,SAAS,GAAG,EAC1F,uBAAC,kBAAS,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAC,QAAQ,GAAG,IACxE,CACX,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,CAAC,CAAC,CACV,wBAAC,gBAAO,IAAC,KAAK,EAAC,UAAU,aACvB,uBAAC,kBAAS,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,GAAI,EACpD,uBAAC,kBAAS,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,GAAI,EACnE,uBAAC,kBAAS,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,IAAI,KAAK,GAAI,IACvD,CACX,CAAC,CAAC,CAAC,IAAI,EACR,uBAAC,UAAI,IAAC,QAAQ,6EAA8D,IAC/D,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SubscribeCard = SubscribeCard;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ink_1 = require("ink");
|
|
6
|
+
const common_1 = require("./common");
|
|
7
|
+
function SubscribeCard({ provider, planId, rateLabel, months, accessSummary = [], nextRenewalLabel, paymentOptions = [], status }) {
|
|
8
|
+
return ((0, jsx_runtime_1.jsxs)(common_1.CommerceCard, { eyebrow: "Subscription", title: provider, subtitle: planId, status: status, children: [(0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "rate", value: rateLabel, tone: "success" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "months", value: String(months ?? 1) }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "renewal", value: nextRenewalLabel ?? "immediate access", tone: "info" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "payments", value: paymentOptions.length ? paymentOptions.join(", ") : "subscription" }), accessSummary.length > 0 ? ((0, jsx_runtime_1.jsx)(common_1.Section, { title: "access", children: accessSummary.map((item, index) => ((0, jsx_runtime_1.jsxs)(ink_1.Text, { children: ["\u2022 ", item] }, `${item}-${index}`))) })) : null] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=SubscribeCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubscribeCard.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/SubscribeCard.tsx"],"names":[],"mappings":";;AAeA,sCAgBC;;AA9BD,6BAA2B;AAC3B,qCAAkF;AAalF,SAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,GAAG,EAAE,EAAE,gBAAgB,EAAE,cAAc,GAAG,EAAE,EAAE,MAAM,EAAsB;IAC1J,OAAO,CACL,wBAAC,qBAAY,IAAC,OAAO,EAAC,cAAc,EAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,aACpF,uBAAC,kBAAS,IAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAC,SAAS,GAAG,EAC3D,uBAAC,kBAAS,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAI,EACxD,uBAAC,kBAAS,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,gBAAgB,IAAI,kBAAkB,EAAE,IAAI,EAAC,MAAM,GAAG,EACxF,uBAAC,kBAAS,IAAC,KAAK,EAAC,UAAU,EAAC,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,GAAI,EACxG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC1B,uBAAC,gBAAO,IAAC,KAAK,EAAC,QAAQ,YACpB,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAClC,wBAAC,UAAI,0BAA6B,IAAI,KAA3B,GAAG,IAAI,IAAI,KAAK,EAAE,CAAiB,CAC/C,CAAC,GACM,CACX,CAAC,CAAC,CAAC,IAAI,IACK,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.WorkroomCard = WorkroomCard;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const ink_1 = require("ink");
|
|
6
|
+
const common_1 = require("./common");
|
|
7
|
+
function WorkroomCard({ statusLabel, harness, policyHash, queueDepth, activeJobs = [], runtime, status }) {
|
|
8
|
+
return ((0, jsx_runtime_1.jsxs)(common_1.CommerceCard, { eyebrow: "Workroom", title: runtime ?? "Governed execution environment", status: status ?? { label: statusLabel, tone: "info" }, children: [(0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "harness", value: harness ?? "n/a" }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "queue", value: String(queueDepth ?? activeJobs.length) }), (0, jsx_runtime_1.jsx)(common_1.DetailRow, { label: "policy", value: policyHash ?? "n/a", tone: "muted" }), activeJobs.length > 0 ? ((0, jsx_runtime_1.jsx)(common_1.Section, { title: "jobs", children: activeJobs.map((job) => ((0, jsx_runtime_1.jsxs)(ink_1.Text, { children: ["\u2022 ", job.id, " \u00B7 ", job.status, job.harness ? ` · ${job.harness}` : "", job.task ? ` · ${job.task}` : ""] }, job.id))) })) : null] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=WorkroomCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkroomCard.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/WorkroomCard.tsx"],"names":[],"mappings":";;AAqBA,oCAeC;;AAnCD,6BAA2B;AAC3B,qCAAkF;AAmBlF,SAAgB,YAAY,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,EAAE,EAAE,OAAO,EAAE,MAAM,EAAqB;IAChI,OAAO,CACL,wBAAC,qBAAY,IAAC,OAAO,EAAC,UAAU,EAAC,KAAK,EAAE,OAAO,IAAI,gCAAgC,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,aACzI,uBAAC,kBAAS,IAAC,KAAK,EAAC,SAAS,EAAC,KAAK,EAAE,OAAO,IAAI,KAAK,GAAI,EACtD,uBAAC,kBAAS,IAAC,KAAK,EAAC,OAAO,EAAC,KAAK,EAAE,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,GAAI,EAC3E,uBAAC,kBAAS,IAAC,KAAK,EAAC,QAAQ,EAAC,KAAK,EAAE,UAAU,IAAI,KAAK,EAAE,IAAI,EAAC,OAAO,GAAG,EACpE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACvB,uBAAC,gBAAO,IAAC,KAAK,EAAC,MAAM,YAClB,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACvB,wBAAC,UAAI,0BAAiB,GAAG,CAAC,EAAE,cAAK,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,KAA1G,GAAG,CAAC,EAAE,CAA4G,CAC9H,CAAC,GACM,CACX,CAAC,CAAC,CAAC,IAAI,IACK,CAChB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StatusPill = StatusPill;
|
|
4
|
+
exports.CommerceCard = CommerceCard;
|
|
5
|
+
exports.DetailRow = DetailRow;
|
|
6
|
+
exports.Section = Section;
|
|
7
|
+
exports.Meter = Meter;
|
|
8
|
+
exports.ListRow = ListRow;
|
|
9
|
+
exports.formatPercent = formatPercent;
|
|
10
|
+
exports.formatCountdown = formatCountdown;
|
|
11
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
12
|
+
const ink_1 = require("ink");
|
|
13
|
+
const TONE_COLOR = {
|
|
14
|
+
neutral: "white",
|
|
15
|
+
info: "cyan",
|
|
16
|
+
success: "green",
|
|
17
|
+
warning: "yellow",
|
|
18
|
+
danger: "red",
|
|
19
|
+
muted: "gray",
|
|
20
|
+
};
|
|
21
|
+
const TONE_ICON = {
|
|
22
|
+
neutral: "•",
|
|
23
|
+
info: "◈",
|
|
24
|
+
success: "✓",
|
|
25
|
+
warning: "⚠",
|
|
26
|
+
danger: "✗",
|
|
27
|
+
muted: "·",
|
|
28
|
+
};
|
|
29
|
+
function StatusPill({ label, tone = "neutral" }) {
|
|
30
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Text, { color: TONE_COLOR[tone], bold: true, children: [TONE_ICON[tone], " ", label] }));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Shared visual language for Spec 46 Phase 2 renderers:
|
|
34
|
+
* - cyan eyebrow/title for ARC-402 identity
|
|
35
|
+
* - concise boxed sections instead of free-form console dumps
|
|
36
|
+
* - status semantics always flow through StatusPill tones
|
|
37
|
+
* - muted metadata, white primary values, deliberate spacing between blocks
|
|
38
|
+
*/
|
|
39
|
+
function CommerceCard({ eyebrow, title, subtitle, status, footer, children }) {
|
|
40
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [eyebrow ? ((0, jsx_runtime_1.jsxs)(ink_1.Text, { color: "cyan", bold: true, children: ["\u25C8 ", eyebrow] })) : null, (0, jsx_runtime_1.jsxs)(ink_1.Text, { bold: true, color: "white", children: [title, status ? (0, jsx_runtime_1.jsx)(ink_1.Text, { children: " " }) : null, status ? (0, jsx_runtime_1.jsx)(StatusPill, { ...status }) : null] }), subtitle ? (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: subtitle }) : null, (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "─".repeat(60) }), (0, jsx_runtime_1.jsx)(ink_1.Box, { flexDirection: "column", marginTop: 1, children: children }), footer ? ((0, jsx_runtime_1.jsx)(ink_1.Box, { marginTop: 1, children: (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: footer }) })) : null] }));
|
|
41
|
+
}
|
|
42
|
+
function DetailRow({ label, value, tone = "neutral" }) {
|
|
43
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { children: [(0, jsx_runtime_1.jsx)(ink_1.Box, { width: 16, children: (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: label }) }), (0, jsx_runtime_1.jsx)(ink_1.Box, { flexGrow: 1, children: typeof value === "string" ? (0, jsx_runtime_1.jsx)(ink_1.Text, { color: TONE_COLOR[tone], children: value }) : value })] }));
|
|
44
|
+
}
|
|
45
|
+
function Section({ title, children }) {
|
|
46
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", marginTop: 1, children: [(0, jsx_runtime_1.jsx)(ink_1.Text, { bold: true, children: title }), (0, jsx_runtime_1.jsx)(ink_1.Box, { flexDirection: "column", marginLeft: 2, children: children })] }));
|
|
47
|
+
}
|
|
48
|
+
function Meter({ label, value, width = 28, tone = "info", suffix = "%" }) {
|
|
49
|
+
const clamped = Math.max(0, Math.min(100, value));
|
|
50
|
+
const filled = Math.round((clamped / 100) * width);
|
|
51
|
+
const empty = Math.max(0, width - filled);
|
|
52
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", children: [label ? (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: label }) : null, (0, jsx_runtime_1.jsxs)(ink_1.Text, { color: TONE_COLOR[tone], children: ["█".repeat(filled), (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: "░".repeat(empty) }), (0, jsx_runtime_1.jsxs)(ink_1.Text, { children: [" ", clamped.toFixed(1), suffix] })] })] }));
|
|
53
|
+
}
|
|
54
|
+
function ListRow({ prefix, title, meta, detail, status }) {
|
|
55
|
+
return ((0, jsx_runtime_1.jsxs)(ink_1.Box, { flexDirection: "column", marginBottom: 1, children: [(0, jsx_runtime_1.jsxs)(ink_1.Box, { children: [(0, jsx_runtime_1.jsx)(ink_1.Text, { children: prefix ?? " " }), (0, jsx_runtime_1.jsx)(ink_1.Text, { bold: true, children: title }), status ? (0, jsx_runtime_1.jsx)(ink_1.Text, { children: " " }) : null, status ? (0, jsx_runtime_1.jsx)(StatusPill, { ...status }) : null] }), meta ? (0, jsx_runtime_1.jsx)(ink_1.Text, { dimColor: true, children: meta }) : null, detail ? (0, jsx_runtime_1.jsx)(ink_1.Text, { children: detail }) : null] }));
|
|
56
|
+
}
|
|
57
|
+
function formatPercent(value, digits = 0) {
|
|
58
|
+
if (!Number.isFinite(value))
|
|
59
|
+
return "0%";
|
|
60
|
+
return `${value.toFixed(digits)}%`;
|
|
61
|
+
}
|
|
62
|
+
function formatCountdown(minutes) {
|
|
63
|
+
if (minutes === undefined || minutes === null || !Number.isFinite(minutes))
|
|
64
|
+
return "n/a";
|
|
65
|
+
if (minutes < 60)
|
|
66
|
+
return `${Math.max(0, Math.round(minutes))}m`;
|
|
67
|
+
const hours = Math.floor(minutes / 60);
|
|
68
|
+
const mins = Math.round(minutes % 60);
|
|
69
|
+
return `${hours}h ${mins}m`;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/common.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./common"), exports);
|
|
18
|
+
__exportStar(require("./StatusCard"), exports);
|
|
19
|
+
__exportStar(require("./HireCard"), exports);
|
|
20
|
+
__exportStar(require("./DiscoverList"), exports);
|
|
21
|
+
__exportStar(require("./AgreementList"), exports);
|
|
22
|
+
__exportStar(require("./ComputeCard"), exports);
|
|
23
|
+
__exportStar(require("./SubscribeCard"), exports);
|
|
24
|
+
__exportStar(require("./RoundsList"), exports);
|
|
25
|
+
__exportStar(require("./SquadCard"), exports);
|
|
26
|
+
__exportStar(require("./WorkroomCard"), exports);
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/tui/components/commerce/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,+CAA6B;AAC7B,6CAA2B;AAC3B,iDAA+B;AAC/B,kDAAgC;AAChC,gDAA8B;AAC9B,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,iDAA+B"}
|