create-rezi 0.1.0-alpha.6 → 0.1.0-alpha.63
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/README.md +56 -10
- package/dist/index.js +56 -18
- package/dist/index.js.map +1 -1
- package/dist/mainEntry.d.ts +2 -0
- package/dist/mainEntry.d.ts.map +1 -0
- package/dist/mainEntry.js +20 -0
- package/dist/mainEntry.js.map +1 -0
- package/dist/scaffold.d.ts +4 -1
- package/dist/scaffold.d.ts.map +1 -1
- package/dist/scaffold.js +85 -34
- package/dist/scaffold.js.map +1 -1
- package/package.json +8 -5
- package/templates/animation-lab/README.md +45 -0
- package/templates/{file-browser → animation-lab}/package.json +5 -3
- package/templates/animation-lab/src/__tests__/keybindings.test.ts +14 -0
- package/templates/animation-lab/src/__tests__/reducer.test.ts +49 -0
- package/templates/animation-lab/src/__tests__/render.test.ts +29 -0
- package/templates/animation-lab/src/helpers/keybindings.ts +32 -0
- package/templates/animation-lab/src/helpers/state.ts +152 -0
- package/templates/animation-lab/src/main.ts +202 -0
- package/templates/animation-lab/src/screens/reactor-lab.ts +848 -0
- package/templates/animation-lab/src/theme.ts +66 -0
- package/templates/animation-lab/src/types.ts +31 -0
- package/templates/cli-tool/README.md +69 -0
- package/templates/cli-tool/package.json +25 -0
- package/templates/cli-tool/src/__tests__/keybindings.test.ts +12 -0
- package/templates/cli-tool/src/__tests__/reducer.test.ts +25 -0
- package/templates/cli-tool/src/__tests__/render.test.ts +13 -0
- package/templates/cli-tool/src/helpers/keybindings.ts +28 -0
- package/templates/cli-tool/src/helpers/logs.ts +51 -0
- package/templates/cli-tool/src/helpers/state.ts +99 -0
- package/templates/cli-tool/src/main.ts +175 -0
- package/templates/cli-tool/src/screens/home.ts +62 -0
- package/templates/cli-tool/src/screens/index.ts +45 -0
- package/templates/cli-tool/src/screens/logs.ts +79 -0
- package/templates/cli-tool/src/screens/settings.ts +88 -0
- package/templates/cli-tool/src/screens/shell.ts +103 -0
- package/templates/cli-tool/src/theme.ts +61 -0
- package/templates/cli-tool/src/types.ts +31 -0
- package/templates/dashboard/README.md +54 -8
- package/templates/dashboard/package.json +6 -4
- package/templates/dashboard/src/__tests__/keybindings.test.ts +12 -0
- package/templates/dashboard/src/__tests__/reducer.test.ts +19 -0
- package/templates/dashboard/src/__tests__/render.test.ts +21 -0
- package/templates/dashboard/src/__tests__/telemetry.test.ts +48 -0
- package/templates/dashboard/src/helpers/formatters.ts +53 -0
- package/templates/dashboard/src/helpers/keybindings.ts +27 -0
- package/templates/dashboard/src/helpers/state.ts +204 -0
- package/templates/dashboard/src/helpers/telemetry.ts +22 -0
- package/templates/dashboard/src/main.ts +166 -241
- package/templates/dashboard/src/screens/overview.ts +221 -0
- package/templates/dashboard/src/theme.ts +51 -0
- package/templates/dashboard/src/types.ts +36 -0
- package/templates/minimal/README.md +55 -0
- package/templates/{form-app → minimal}/package.json +6 -4
- package/templates/minimal/src/__tests__/keybindings.test.ts +12 -0
- package/templates/minimal/src/__tests__/reducer.test.ts +20 -0
- package/templates/minimal/src/__tests__/render.test.ts +24 -0
- package/templates/minimal/src/helpers/keybindings.ts +23 -0
- package/templates/minimal/src/helpers/state.ts +20 -0
- package/templates/minimal/src/main.ts +150 -0
- package/templates/minimal/src/screens/main-screen.ts +110 -0
- package/templates/minimal/src/theme.ts +49 -0
- package/templates/minimal/src/types.ts +15 -0
- package/templates/starship/README.md +112 -0
- package/templates/starship/package.json +25 -0
- package/templates/starship/src/__tests__/keybindings.test.ts +39 -0
- package/templates/starship/src/__tests__/reducer.test.ts +113 -0
- package/templates/starship/src/__tests__/render.test.ts +159 -0
- package/templates/starship/src/helpers/debug.ts +22 -0
- package/templates/starship/src/helpers/formatters.ts +109 -0
- package/templates/starship/src/helpers/keybindings.ts +132 -0
- package/templates/starship/src/helpers/layout.ts +65 -0
- package/templates/starship/src/helpers/simulation.ts +269 -0
- package/templates/starship/src/helpers/state.ts +767 -0
- package/templates/starship/src/main.ts +761 -0
- package/templates/starship/src/screens/bridge.ts +561 -0
- package/templates/starship/src/screens/cargo.ts +389 -0
- package/templates/starship/src/screens/comms.ts +473 -0
- package/templates/starship/src/screens/crew.ts +566 -0
- package/templates/starship/src/screens/engineering.ts +549 -0
- package/templates/starship/src/screens/index.ts +36 -0
- package/templates/starship/src/screens/primitives.ts +172 -0
- package/templates/starship/src/screens/settings.ts +289 -0
- package/templates/starship/src/screens/shell.ts +696 -0
- package/templates/starship/src/theme.ts +448 -0
- package/templates/starship/src/types.ts +203 -0
- package/templates/starship/tsconfig.json +15 -0
- package/templates/stress-test/README.md +107 -0
- package/templates/{streaming-viewer → stress-test}/package.json +5 -3
- package/templates/stress-test/src/__tests__/keybindings.test.ts +11 -0
- package/templates/stress-test/src/__tests__/reducer.test.ts +11 -0
- package/templates/stress-test/src/__tests__/render.test.ts +11 -0
- package/templates/stress-test/src/helpers/test-examples.ts +49 -0
- package/templates/stress-test/src/main.ts +1728 -0
- package/templates/stress-test/tsconfig.json +14 -0
- package/dist/__tests__/scaffold.test.d.ts +0 -2
- package/dist/__tests__/scaffold.test.d.ts.map +0 -1
- package/dist/__tests__/scaffold.test.js +0 -29
- package/dist/__tests__/scaffold.test.js.map +0 -1
- package/templates/file-browser/README.md +0 -18
- package/templates/file-browser/src/main.ts +0 -258
- package/templates/form-app/README.md +0 -18
- package/templates/form-app/src/main.ts +0 -222
- package/templates/streaming-viewer/README.md +0 -17
- package/templates/streaming-viewer/src/main.ts +0 -176
- /package/templates/{file-browser → animation-lab}/tsconfig.json +0 -0
- /package/templates/{form-app → cli-tool}/tsconfig.json +0 -0
- /package/templates/{streaming-viewer → minimal}/tsconfig.json +0 -0
package/README.md
CHANGED
|
@@ -7,24 +7,70 @@ Scaffold a new Rezi terminal UI app.
|
|
|
7
7
|
```bash
|
|
8
8
|
npm create rezi my-app
|
|
9
9
|
cd my-app
|
|
10
|
-
npm start
|
|
10
|
+
npm run start
|
|
11
|
+
|
|
12
|
+
# Bun
|
|
13
|
+
bun create rezi my-app
|
|
14
|
+
cd my-app
|
|
15
|
+
bun run start
|
|
11
16
|
```
|
|
12
17
|
|
|
13
18
|
## Templates
|
|
14
19
|
|
|
15
|
-
|
|
20
|
+
Currently available templates:
|
|
21
|
+
|
|
22
|
+
- `dashboard` - EdgeOps-style operations console starter
|
|
23
|
+
- Alias: `dash`
|
|
24
|
+
- `stress-test` - Visual benchmark matrix starter
|
|
25
|
+
- Aliases: `stress`, `chaos`, `bench`
|
|
26
|
+
- `cli-tool` - Multi-screen CLI workflow starter with route-based screens
|
|
27
|
+
- Aliases: `cli`, `tool`, `multiscreen`
|
|
28
|
+
- `animation-lab` - Declarative animation playground with responsive reactor visuals
|
|
29
|
+
- Aliases: `animation`, `anim`, `lab`, `motion`
|
|
30
|
+
- `minimal` - Single-screen utility starter for small tools
|
|
31
|
+
- Aliases: `mini`, `basic`, `utility`
|
|
32
|
+
- `starship` - Starship command console starter with routed multi-deck operations
|
|
33
|
+
- Aliases: `ship`, `bridge`, `command`
|
|
16
34
|
|
|
17
35
|
```bash
|
|
18
36
|
npm create rezi my-app -- --template dashboard
|
|
19
|
-
npm create rezi my-app -- --template
|
|
20
|
-
npm create rezi my-app -- --template
|
|
21
|
-
npm create rezi my-app -- --template
|
|
37
|
+
npm create rezi my-app -- --template stress-test
|
|
38
|
+
npm create rezi my-app -- --template cli-tool
|
|
39
|
+
npm create rezi my-app -- --template animation-lab
|
|
40
|
+
npm create rezi my-app -- --template starship
|
|
41
|
+
npm create rezi my-app -- --template minimal
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
List templates and highlights from the CLI:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm create rezi -- --list-templates
|
|
22
48
|
```
|
|
23
49
|
|
|
24
50
|
## Options
|
|
25
51
|
|
|
26
|
-
- `--template <name>`:
|
|
27
|
-
- `--no-install`: Skip dependency installation.
|
|
28
|
-
- `--pm <npm|pnpm|yarn|bun>`: Choose a package manager.
|
|
29
|
-
- `--list-templates`: Print available templates.
|
|
30
|
-
- `--help`: Show help.
|
|
52
|
+
- `--template, -t <name>`: Select a template (`dashboard`, `stress-test`, `cli-tool`, `animation-lab`, `minimal`, `starship`, plus aliases).
|
|
53
|
+
- `--no-install, --skip-install`: Skip dependency installation.
|
|
54
|
+
- `--pm, --package-manager <npm|pnpm|yarn|bun>`: Choose a package manager.
|
|
55
|
+
- `--list-templates, --templates`: Print available templates and highlights.
|
|
56
|
+
- `--help, -h`: Show help.
|
|
57
|
+
|
|
58
|
+
## Template Conventions
|
|
59
|
+
|
|
60
|
+
Scaffolded templates now follow the same baseline structure:
|
|
61
|
+
|
|
62
|
+
- `src/types.ts`
|
|
63
|
+
- `src/theme.ts`
|
|
64
|
+
- `src/helpers/`
|
|
65
|
+
- `src/screens/`
|
|
66
|
+
- `src/main.ts`
|
|
67
|
+
- `src/__tests__/`
|
|
68
|
+
|
|
69
|
+
Template theming convention:
|
|
70
|
+
|
|
71
|
+
- `src/theme.ts` is the canonical source for theme catalogs and style helpers.
|
|
72
|
+
- Screens should derive visual styling from active theme tokens instead of hardcoded RGB/hex literals.
|
|
73
|
+
- `stress-test` is the current exception and keeps theme/catalog wiring in `src/main.ts`.
|
|
74
|
+
|
|
75
|
+
For template descriptions and highlights, see:
|
|
76
|
+
https://rezitui.dev/docs/getting-started/create-rezi/
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ import { spawnSync } from "node:child_process";
|
|
|
3
3
|
import { relative, resolve } from "node:path";
|
|
4
4
|
import { cwd, exit, stdin, stdout } from "node:process";
|
|
5
5
|
import { createInterface } from "node:readline/promises";
|
|
6
|
-
import {
|
|
6
|
+
import { isMainModuleEntry } from "./mainEntry.js";
|
|
7
7
|
import { TEMPLATE_DEFINITIONS, createProject, isValidPackageName, normalizeTemplateName, resolveTargetName, toDisplayName, toValidPackageName, } from "./scaffold.js";
|
|
8
8
|
function parseArgs(argv) {
|
|
9
9
|
const options = {
|
|
@@ -63,18 +63,24 @@ function parseArgs(argv) {
|
|
|
63
63
|
function printHelp() {
|
|
64
64
|
stdout.write("create-rezi\n\n");
|
|
65
65
|
stdout.write("Usage:\n");
|
|
66
|
-
stdout.write(" npm create rezi my-app\n
|
|
66
|
+
stdout.write(" npm create rezi my-app\n");
|
|
67
|
+
stdout.write(" bun create rezi my-app\n\n");
|
|
67
68
|
stdout.write("Options:\n");
|
|
68
|
-
stdout.write(" --template, -t <name>
|
|
69
|
-
stdout.write(" --no-install
|
|
69
|
+
stdout.write(" --template, -t <name> dashboard | stress-test | cli-tool | animation-lab | minimal | starship\n");
|
|
70
|
+
stdout.write(" --no-install Skip dependency install\n");
|
|
70
71
|
stdout.write(" --pm <npm|pnpm|yarn|bun> Choose a package manager\n");
|
|
71
|
-
stdout.write(" --list-templates
|
|
72
|
-
stdout.write(" --help, -h
|
|
72
|
+
stdout.write(" --list-templates Show templates and highlights\n");
|
|
73
|
+
stdout.write(" --help, -h Show this help\n");
|
|
73
74
|
}
|
|
74
75
|
function printTemplates() {
|
|
75
|
-
stdout.write("Available templates:\n");
|
|
76
|
+
stdout.write("Available templates (--template <name>):\n");
|
|
76
77
|
TEMPLATE_DEFINITIONS.forEach((template, index) => {
|
|
77
|
-
|
|
78
|
+
const defaultSuffix = index === 0 ? " (default)" : "";
|
|
79
|
+
const highlights = template.highlights.join(" | ");
|
|
80
|
+
stdout.write(` ${index + 1}. ${template.key.padEnd(16)} ${template.label}${defaultSuffix}\n`);
|
|
81
|
+
stdout.write(` ${template.description}\n`);
|
|
82
|
+
stdout.write(` Safety: ${template.safetyTag} — ${template.safetyNote}\n`);
|
|
83
|
+
stdout.write(` Highlights: ${highlights}\n`);
|
|
78
84
|
});
|
|
79
85
|
}
|
|
80
86
|
function detectPackageManager() {
|
|
@@ -105,20 +111,33 @@ async function promptText(rl, prompt, fallback) {
|
|
|
105
111
|
return answer.trim() || fallback;
|
|
106
112
|
}
|
|
107
113
|
async function promptTemplate(rl) {
|
|
108
|
-
stdout.write("\nSelect a template:\n");
|
|
114
|
+
stdout.write("\nSelect a template (name or number):\n");
|
|
109
115
|
TEMPLATE_DEFINITIONS.forEach((template, index) => {
|
|
110
|
-
|
|
116
|
+
const defaultSuffix = index === 0 ? " (default)" : "";
|
|
117
|
+
stdout.write(` ${index + 1}. ${template.key.padEnd(16)} ${template.label}${defaultSuffix}\n`);
|
|
118
|
+
stdout.write(` ${template.description}\n`);
|
|
119
|
+
stdout.write(` Safety: ${template.safetyTag} — ${template.safetyNote}\n`);
|
|
120
|
+
stdout.write(` Highlights: ${template.highlights.join(" | ")}\n`);
|
|
111
121
|
});
|
|
112
|
-
const answer = await rl.question(
|
|
122
|
+
const answer = await rl.question(`Template (1-${TEMPLATE_DEFINITIONS.length}, default 1): `);
|
|
113
123
|
const trimmed = answer.trim();
|
|
114
|
-
if (!trimmed)
|
|
115
|
-
return "dashboard";
|
|
124
|
+
if (!trimmed) {
|
|
125
|
+
return TEMPLATE_DEFINITIONS[0]?.key ?? "dashboard";
|
|
126
|
+
}
|
|
116
127
|
const asNumber = Number(trimmed);
|
|
117
128
|
if (!Number.isNaN(asNumber) && asNumber >= 1 && asNumber <= TEMPLATE_DEFINITIONS.length) {
|
|
118
|
-
return TEMPLATE_DEFINITIONS[asNumber - 1]?.key ?? "dashboard";
|
|
129
|
+
return TEMPLATE_DEFINITIONS[asNumber - 1]?.key ?? TEMPLATE_DEFINITIONS[0]?.key ?? "dashboard";
|
|
119
130
|
}
|
|
120
131
|
return trimmed;
|
|
121
132
|
}
|
|
133
|
+
async function confirmStressTemplate(rl) {
|
|
134
|
+
stdout.write("\nSafety check for stress-test template:\n");
|
|
135
|
+
stdout.write(" - This template intentionally drives heavy CPU and optional disk I/O load.\n");
|
|
136
|
+
stdout.write(" - Turbo/write-flood modes increase system pressure.\n");
|
|
137
|
+
const answer = await rl.question("Continue with stress-test? (y/N): ");
|
|
138
|
+
const normalized = answer.trim().toLowerCase();
|
|
139
|
+
return normalized === "y" || normalized === "yes";
|
|
140
|
+
}
|
|
122
141
|
function runInstall(pm, targetDir) {
|
|
123
142
|
const res = spawnSync(pm, ["install"], {
|
|
124
143
|
cwd: targetDir,
|
|
@@ -129,18 +148,23 @@ function runInstall(pm, targetDir) {
|
|
|
129
148
|
}
|
|
130
149
|
}
|
|
131
150
|
function printNextSteps(targetDir, packageManager, installRan) {
|
|
151
|
+
const installCommand = `${packageManager} install`;
|
|
152
|
+
const startCommand = packageManager === "npm" || packageManager === "bun"
|
|
153
|
+
? `${packageManager} run start`
|
|
154
|
+
: `${packageManager} start`;
|
|
132
155
|
const rel = relative(cwd(), resolve(targetDir)) || ".";
|
|
133
156
|
stdout.write("\nNext steps:\n");
|
|
134
157
|
if (rel !== ".") {
|
|
135
158
|
stdout.write(` cd ${rel}\n`);
|
|
136
159
|
}
|
|
137
160
|
if (!installRan) {
|
|
138
|
-
stdout.write(` ${
|
|
161
|
+
stdout.write(` ${installCommand}\n`);
|
|
139
162
|
}
|
|
140
|
-
stdout.write(` ${
|
|
163
|
+
stdout.write(` ${startCommand}\n`);
|
|
141
164
|
}
|
|
142
165
|
async function main() {
|
|
143
166
|
const options = parseArgs(process.argv.slice(2));
|
|
167
|
+
const isInteractive = Boolean(stdin.isTTY && stdout.isTTY);
|
|
144
168
|
if (options.help) {
|
|
145
169
|
printHelp();
|
|
146
170
|
return;
|
|
@@ -155,10 +179,24 @@ async function main() {
|
|
|
155
179
|
const templateInput = options.template || (await promptTemplate(rl));
|
|
156
180
|
const templateKey = normalizeTemplateName(templateInput);
|
|
157
181
|
if (!templateKey) {
|
|
182
|
+
const allowed = TEMPLATE_DEFINITIONS.map((template) => template.key).join(", ");
|
|
158
183
|
stdout.write(`\nUnknown template: ${templateInput}\n`);
|
|
159
|
-
|
|
184
|
+
stdout.write(`Use one of: ${allowed}\n`);
|
|
185
|
+
stdout.write("Run with --list-templates to see highlights.\n");
|
|
160
186
|
throw new Error("Invalid template");
|
|
161
187
|
}
|
|
188
|
+
if (templateKey === "stress-test") {
|
|
189
|
+
if (isInteractive) {
|
|
190
|
+
const confirmed = await confirmStressTemplate(rl);
|
|
191
|
+
if (!confirmed) {
|
|
192
|
+
stdout.write("\nTemplate selection cancelled.\n");
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
stdout.write("\nSafety notice: stress-test template selected in non-interactive mode; skipping prompt.\n");
|
|
198
|
+
}
|
|
199
|
+
}
|
|
162
200
|
const rawName = resolveTargetName(targetDir);
|
|
163
201
|
const displayName = toDisplayName(rawName);
|
|
164
202
|
const packageName = toValidPackageName(rawName);
|
|
@@ -183,7 +221,7 @@ async function main() {
|
|
|
183
221
|
rl.close();
|
|
184
222
|
}
|
|
185
223
|
}
|
|
186
|
-
const isMain = process.argv[1]
|
|
224
|
+
const isMain = isMainModuleEntry(process.argv[1], import.meta.url);
|
|
187
225
|
if (isMain) {
|
|
188
226
|
main().catch((err) => {
|
|
189
227
|
stdout.write(`\ncreate-rezi error: ${err instanceof Error ? err.message : String(err)}\n`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mainEntry.d.ts","sourceRoot":"","sources":["../src/mainEntry.ts"],"names":[],"mappings":"AAYA,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAO1F"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { realpathSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
function resolveCanonicalPath(pathValue) {
|
|
5
|
+
try {
|
|
6
|
+
return realpathSync(pathValue);
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return pathValue;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function isMainModuleEntry(argvPath, moduleUrl) {
|
|
13
|
+
if (!argvPath) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
const modulePath = resolveCanonicalPath(fileURLToPath(moduleUrl));
|
|
17
|
+
const entryPath = resolveCanonicalPath(resolve(argvPath));
|
|
18
|
+
return modulePath === entryPath;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=mainEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mainEntry.js","sourceRoot":"","sources":["../src/mainEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,QAA4B,EAAE,SAAiB;IAC/E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC1D,OAAO,UAAU,KAAK,SAAS,CAAC;AAClC,CAAC"}
|
package/dist/scaffold.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
export type TemplateKey = "dashboard" | "
|
|
1
|
+
export type TemplateKey = "dashboard" | "stress-test" | "cli-tool" | "animation-lab" | "minimal" | "starship";
|
|
2
2
|
export type TemplateDefinition = {
|
|
3
3
|
key: TemplateKey;
|
|
4
4
|
label: string;
|
|
5
5
|
description: string;
|
|
6
|
+
safetyTag: string;
|
|
7
|
+
safetyNote: string;
|
|
8
|
+
highlights: readonly string[];
|
|
6
9
|
dir: string;
|
|
7
10
|
};
|
|
8
11
|
export declare const TEMPLATE_DEFINITIONS: readonly TemplateDefinition[];
|
package/dist/scaffold.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,aAAa,GACb,UAAU,GACV,eAAe,GACf,SAAS,GACT,UAAU,CAAC;AAEf,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,SAAS,kBAAkB,EA6EpD,CAAC;AA2BX,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAQvE;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWvD;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAI3D;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/D;AA+BD,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAyB/F"}
|
package/dist/scaffold.js
CHANGED
|
@@ -4,56 +4,107 @@ import { fileURLToPath } from "node:url";
|
|
|
4
4
|
export const TEMPLATE_DEFINITIONS = [
|
|
5
5
|
{
|
|
6
6
|
key: "dashboard",
|
|
7
|
-
label: "Dashboard",
|
|
8
|
-
description: "
|
|
7
|
+
label: "EdgeOps Dashboard",
|
|
8
|
+
description: "Product-grade operations console with deterministic updates",
|
|
9
|
+
safetyTag: "safe-default",
|
|
10
|
+
safetyNote: "Balanced runtime profile for everyday app development.",
|
|
11
|
+
highlights: [
|
|
12
|
+
"fleet control plane with stable live telemetry",
|
|
13
|
+
"incident feed + inspector + escalation runbook",
|
|
14
|
+
],
|
|
9
15
|
dir: "dashboard",
|
|
10
16
|
},
|
|
11
17
|
{
|
|
12
|
-
key: "
|
|
13
|
-
label: "
|
|
14
|
-
description: "
|
|
15
|
-
|
|
18
|
+
key: "stress-test",
|
|
19
|
+
label: "Visual Benchmark Matrix",
|
|
20
|
+
description: "Three-lane visual benchmark with deterministic sim model + real runtime diagnostics",
|
|
21
|
+
safetyTag: "high-cpu-io",
|
|
22
|
+
safetyNote: "Generates heavy CPU/IO pressure; intended for benchmarking only.",
|
|
23
|
+
highlights: [
|
|
24
|
+
"geometry + text/file activity + matrix rain lanes with phase-based intensity ramp",
|
|
25
|
+
"deterministic sim scorecard and measured CPU/RSS/lag/timing/sink throughput",
|
|
26
|
+
],
|
|
27
|
+
dir: "stress-test",
|
|
16
28
|
},
|
|
17
29
|
{
|
|
18
|
-
key: "
|
|
19
|
-
label: "
|
|
20
|
-
description: "
|
|
21
|
-
|
|
30
|
+
key: "cli-tool",
|
|
31
|
+
label: "Multi-Screen CLI Tool",
|
|
32
|
+
description: "Task-oriented multi-screen TUI with first-party page routing",
|
|
33
|
+
safetyTag: "safe-default",
|
|
34
|
+
safetyNote: "Lightweight template focused on product workflows and routing.",
|
|
35
|
+
highlights: [
|
|
36
|
+
"home/logs/settings/detail screens with router history and focus restoration",
|
|
37
|
+
"global route keybindings plus breadcrumb + tabs helpers wired to router state",
|
|
38
|
+
],
|
|
39
|
+
dir: "cli-tool",
|
|
22
40
|
},
|
|
23
41
|
{
|
|
24
|
-
key: "
|
|
25
|
-
label: "
|
|
26
|
-
description: "
|
|
27
|
-
|
|
42
|
+
key: "animation-lab",
|
|
43
|
+
label: "Declarative Animation Lab",
|
|
44
|
+
description: "Responsive animation playground showcasing transition/spring/sequence/stagger hooks",
|
|
45
|
+
safetyTag: "safe-default",
|
|
46
|
+
safetyNote: "Visual-first starter with moderate CPU usage and deterministic animation targets.",
|
|
47
|
+
highlights: [
|
|
48
|
+
"reactor command deck combining canvas visuals, charts, gauges, and staggered module rails",
|
|
49
|
+
"keyboard-driven autoplay + vector nudging + burst impulses with resize-aware layout adaptation",
|
|
50
|
+
],
|
|
51
|
+
dir: "animation-lab",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
key: "minimal",
|
|
55
|
+
label: "Minimal Utility TUI",
|
|
56
|
+
description: "Single-screen starter for focused tools with essential patterns only",
|
|
57
|
+
safetyTag: "safe-default",
|
|
58
|
+
safetyNote: "Small footprint template intended for quick utility workflows.",
|
|
59
|
+
highlights: [
|
|
60
|
+
"single-screen state flow with keybindings, theme cycling, and inline error handling",
|
|
61
|
+
"lean multi-file structure plus reducer/render/keybinding test examples",
|
|
62
|
+
],
|
|
63
|
+
dir: "minimal",
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
key: "starship",
|
|
67
|
+
label: "Starship Command Console",
|
|
68
|
+
description: "Multi-deck command console showcasing routing, animation, charts, forms, and the full widget catalog",
|
|
69
|
+
safetyTag: "safe-default",
|
|
70
|
+
safetyNote: "Feature-rich showcase template with moderate CPU usage from animation hooks and live telemetry.",
|
|
71
|
+
highlights: [
|
|
72
|
+
"six-screen bridge with routing, animated gauges, live telemetry charts, and crew management",
|
|
73
|
+
"command palette, modal dialogs, toast notifications, forms, split panes, canvas, and theme cycling with keybinding modes",
|
|
74
|
+
],
|
|
75
|
+
dir: "starship",
|
|
28
76
|
},
|
|
29
77
|
];
|
|
30
78
|
const TEMPLATE_BY_KEY = new Map(TEMPLATE_DEFINITIONS.map((template) => [template.key, template]));
|
|
79
|
+
const TEMPLATE_ALIASES = new Map(TEMPLATE_DEFINITIONS.map((template) => [template.key, template.key]));
|
|
80
|
+
TEMPLATE_ALIASES.set("dash", "dashboard");
|
|
81
|
+
TEMPLATE_ALIASES.set("stress", "stress-test");
|
|
82
|
+
TEMPLATE_ALIASES.set("chaos", "stress-test");
|
|
83
|
+
TEMPLATE_ALIASES.set("bench", "stress-test");
|
|
84
|
+
TEMPLATE_ALIASES.set("cli", "cli-tool");
|
|
85
|
+
TEMPLATE_ALIASES.set("tool", "cli-tool");
|
|
86
|
+
TEMPLATE_ALIASES.set("multiscreen", "cli-tool");
|
|
87
|
+
TEMPLATE_ALIASES.set("animation", "animation-lab");
|
|
88
|
+
TEMPLATE_ALIASES.set("anim", "animation-lab");
|
|
89
|
+
TEMPLATE_ALIASES.set("lab", "animation-lab");
|
|
90
|
+
TEMPLATE_ALIASES.set("motion", "animation-lab");
|
|
91
|
+
TEMPLATE_ALIASES.set("mini", "minimal");
|
|
92
|
+
TEMPLATE_ALIASES.set("basic", "minimal");
|
|
93
|
+
TEMPLATE_ALIASES.set("utility", "minimal");
|
|
94
|
+
TEMPLATE_ALIASES.set("ship", "starship");
|
|
95
|
+
TEMPLATE_ALIASES.set("bridge", "starship");
|
|
96
|
+
TEMPLATE_ALIASES.set("command", "starship");
|
|
31
97
|
const PACKAGE_NAME_RE = /^(?:@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/;
|
|
32
98
|
export function normalizeTemplateName(value) {
|
|
33
99
|
const cleaned = value.trim().toLowerCase();
|
|
34
100
|
if (!cleaned)
|
|
35
101
|
return null;
|
|
36
102
|
const slug = cleaned.replace(/[\s_]+/g, "-");
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
case "formapp":
|
|
43
|
-
return "form-app";
|
|
44
|
-
case "file":
|
|
45
|
-
case "files":
|
|
46
|
-
case "file-browser":
|
|
47
|
-
case "filebrowser":
|
|
48
|
-
return "file-browser";
|
|
49
|
-
case "stream":
|
|
50
|
-
case "streaming":
|
|
51
|
-
case "streaming-viewer":
|
|
52
|
-
case "streamingviewer":
|
|
53
|
-
return "streaming-viewer";
|
|
54
|
-
default:
|
|
55
|
-
return TEMPLATE_BY_KEY.has(slug) ? slug : null;
|
|
56
|
-
}
|
|
103
|
+
const normalized = TEMPLATE_ALIASES.get(slug);
|
|
104
|
+
if (normalized)
|
|
105
|
+
return normalized;
|
|
106
|
+
const compact = slug.replace(/-/g, "");
|
|
107
|
+
return TEMPLATE_ALIASES.get(compact) ?? null;
|
|
57
108
|
}
|
|
58
109
|
export function toDisplayName(value) {
|
|
59
110
|
const name = value.trim();
|
package/dist/scaffold.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold.js","sourceRoot":"","sources":["../src/scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAoBzC,MAAM,CAAC,MAAM,oBAAoB,GAAkC;IACjE;QACE,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,6DAA6D;QAC1E,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,wDAAwD;QACpE,UAAU,EAAE;YACV,gDAAgD;YAChD,gDAAgD;SACjD;QACD,GAAG,EAAE,WAAW;KACjB;IACD;QACE,GAAG,EAAE,aAAa;QAClB,KAAK,EAAE,yBAAyB;QAChC,WAAW,EACT,qFAAqF;QACvF,SAAS,EAAE,aAAa;QACxB,UAAU,EAAE,kEAAkE;QAC9E,UAAU,EAAE;YACV,mFAAmF;YACnF,6EAA6E;SAC9E;QACD,GAAG,EAAE,aAAa;KACnB;IACD;QACE,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,uBAAuB;QAC9B,WAAW,EAAE,8DAA8D;QAC3E,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,gEAAgE;QAC5E,UAAU,EAAE;YACV,6EAA6E;YAC7E,+EAA+E;SAChF;QACD,GAAG,EAAE,UAAU;KAChB;IACD;QACE,GAAG,EAAE,eAAe;QACpB,KAAK,EAAE,2BAA2B;QAClC,WAAW,EACT,qFAAqF;QACvF,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,mFAAmF;QAC/F,UAAU,EAAE;YACV,2FAA2F;YAC3F,gGAAgG;SACjG;QACD,GAAG,EAAE,eAAe;KACrB;IACD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,qBAAqB;QAC5B,WAAW,EAAE,sEAAsE;QACnF,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,gEAAgE;QAC5E,UAAU,EAAE;YACV,qFAAqF;YACrF,wEAAwE;SACzE;QACD,GAAG,EAAE,SAAS;KACf;IACD;QACE,GAAG,EAAE,UAAU;QACf,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,sGAAsG;QACxG,SAAS,EAAE,cAAc;QACzB,UAAU,EACR,iGAAiG;QACnG,UAAU,EAAE;YACV,6FAA6F;YAC7F,0HAA0H;SAC3H;QACD,GAAG,EAAE,UAAU;KAChB;CACO,CAAC;AAEX,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;AAClG,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CACrE,CAAC;AAEF,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAC1C,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC9C,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7C,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC7C,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;AACxC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACzC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAChD,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;AACnD,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC9C,gBAAgB,CAAC,GAAG,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;AAC7C,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AAChD,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AACxC,gBAAgB,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AACzC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC3C,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACzC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC3C,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAE5C,MAAM,eAAe,GAAG,0DAA0D,CAAC;AAEnF,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,UAAU,CAAC;IAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IAC1C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC1C,IAAI,kBAAkB,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAChD,MAAM,SAAS,GAAG,OAAO;SACtB,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtB,IAAI,kBAAkB,CAAC,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,IAAI,IAAI,UAAU,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,GAAW;IAC9C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,8CAA8C,GAAG,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,KAAK,IAAI,MAAM,IAAI,GAAG,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9F,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe,EAAE,IAA4B;IACvE,IAAI,GAAG,GAAG,OAAO,CAAC;IAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChD,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,SAAiB,EACjB,SAAiB,EACjB,IAA4B;IAE5B,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAElE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,eAAe,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAgBD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAExC,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE,OAAO,CAAC,WAAW;QAC7B,YAAY,EAAE,OAAO,CAAC,WAAW;QACjC,cAAc,EAAE,QAAQ,CAAC,KAAK;QAC9B,YAAY,EAAE,QAAQ,CAAC,GAAG;KAC3B,CAAC;IAEF,MAAM,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAE1D,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,QAAQ;QACR,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW;KACjC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-rezi",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.63",
|
|
4
4
|
"description": "Scaffold a Rezi terminal UI app.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
|
-
"homepage": "https://
|
|
6
|
+
"homepage": "https://rezitui.dev",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
9
|
"url": "git+https://github.com/RtlZeroMemory/Rezi.git",
|
|
@@ -19,12 +19,15 @@
|
|
|
19
19
|
"files": [
|
|
20
20
|
"dist/",
|
|
21
21
|
"templates/",
|
|
22
|
-
"README.md"
|
|
22
|
+
"README.md",
|
|
23
|
+
"!dist/**/__tests__/**",
|
|
24
|
+
"!dist/**/__e2e__/**"
|
|
23
25
|
],
|
|
24
26
|
"engines": {
|
|
25
|
-
"node": ">=18"
|
|
27
|
+
"node": ">=18",
|
|
28
|
+
"bun": ">=1.3.0"
|
|
26
29
|
},
|
|
27
30
|
"devDependencies": {
|
|
28
|
-
"@rezi-ui/testkit": "0.1.0-alpha.
|
|
31
|
+
"@rezi-ui/testkit": "0.1.0-alpha.63"
|
|
29
32
|
}
|
|
30
33
|
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# __APP_NAME__
|
|
2
|
+
|
|
3
|
+
Scaffolded with `create-rezi` using the **__TEMPLATE_LABEL__** template.
|
|
4
|
+
|
|
5
|
+
## What This Template Demonstrates
|
|
6
|
+
|
|
7
|
+
- Declarative animation hooks with first-class primitives: `useTransition`, `useSpring`, `useSequence`, `useStagger`.
|
|
8
|
+
- Built-in easing presets in action (`linear`, quad, and cubic families).
|
|
9
|
+
- Canvas-driven reactor visualization combined with charts, gauges, and staggered module rails.
|
|
10
|
+
- Reducer-managed animation targets with deterministic tick updates.
|
|
11
|
+
- Responsive layout that adapts to terminal resize events.
|
|
12
|
+
- Keyboard controls for autoplay, single-step, vector tuning, burst impulses, phase cycling, and theme cycling.
|
|
13
|
+
|
|
14
|
+
## File Layout
|
|
15
|
+
|
|
16
|
+
- `src/types.ts`: animation state and action contracts.
|
|
17
|
+
- `src/theme.ts`: template identity + built-in theme catalog.
|
|
18
|
+
- `src/helpers/state.ts`: viewport normalization + reducer transitions.
|
|
19
|
+
- `src/helpers/keybindings.ts`: key to command resolver.
|
|
20
|
+
- `src/screens/reactor-lab.ts`: reactor field screen renderer.
|
|
21
|
+
- `src/main.ts`: app bootstrap, resize handling, animation loop.
|
|
22
|
+
- `src/__tests__/`: reducer, render, and keybinding examples.
|
|
23
|
+
|
|
24
|
+
## Quickstart
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# npm
|
|
28
|
+
npm install
|
|
29
|
+
npm run start
|
|
30
|
+
|
|
31
|
+
# bun
|
|
32
|
+
bun install
|
|
33
|
+
bun run start
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Controls
|
|
37
|
+
|
|
38
|
+
- `q` or `ctrl+c`: Quit
|
|
39
|
+
- `space` or `p`: Toggle autoplay
|
|
40
|
+
- `enter`: Step one tick
|
|
41
|
+
- Arrow keys: Nudge drift/flux/orbit vectors
|
|
42
|
+
- `b`: Burst impulse
|
|
43
|
+
- `r`: Randomized retarget
|
|
44
|
+
- `m`: Cycle phase
|
|
45
|
+
- `t`: Cycle theme preset
|
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
"scripts": {
|
|
7
7
|
"start": "tsx src/main.ts",
|
|
8
8
|
"dev": "tsx watch src/main.ts",
|
|
9
|
-
"
|
|
9
|
+
"build": "tsc --pretty false",
|
|
10
|
+
"typecheck": "tsc --noEmit",
|
|
11
|
+
"test": "tsx --test src/__tests__/*.test.ts"
|
|
10
12
|
},
|
|
11
13
|
"dependencies": {
|
|
12
|
-
"@rezi-ui/core": "
|
|
13
|
-
"@rezi-ui/node": "
|
|
14
|
+
"@rezi-ui/core": "0.1.0-alpha.63",
|
|
15
|
+
"@rezi-ui/node": "0.1.0-alpha.63"
|
|
14
16
|
},
|
|
15
17
|
"devDependencies": {
|
|
16
18
|
"@types/node": "^22.13.1",
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { resolveAnimationLabCommand } from "../helpers/keybindings.js";
|
|
4
|
+
|
|
5
|
+
test("animation lab keybinding map resolves expected commands", () => {
|
|
6
|
+
assert.equal(resolveAnimationLabCommand("q"), "quit");
|
|
7
|
+
assert.equal(resolveAnimationLabCommand("space"), "toggle-autoplay");
|
|
8
|
+
assert.equal(resolveAnimationLabCommand("enter"), "step");
|
|
9
|
+
assert.equal(resolveAnimationLabCommand("right"), "nudge-right");
|
|
10
|
+
assert.equal(resolveAnimationLabCommand("b"), "burst");
|
|
11
|
+
assert.equal(resolveAnimationLabCommand("m"), "cycle-phase");
|
|
12
|
+
assert.equal(resolveAnimationLabCommand("t"), "cycle-theme");
|
|
13
|
+
assert.equal(resolveAnimationLabCommand("x"), undefined);
|
|
14
|
+
});
|