strand-ui 0.1.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/add.d.ts +2 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +70 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +85 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +27 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/registry.d.ts +9 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +263 -0
- package/dist/registry.js.map +1 -0
- package/package.json +29 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAgCA,wBAAsB,GAAG,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAyE9D"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import { components } from "../registry.js";
|
|
4
|
+
const CONFIG_FILE = "strand.config.json";
|
|
5
|
+
const FILE_HEADER = "/* Strand UI | MIT License | dillingerstaffing.com */\n";
|
|
6
|
+
function loadConfig() {
|
|
7
|
+
const configPath = path.join(process.cwd(), CONFIG_FILE);
|
|
8
|
+
if (!fs.existsSync(configPath)) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
return JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
12
|
+
}
|
|
13
|
+
function resolveStrandUiPath() {
|
|
14
|
+
let dir = process.cwd();
|
|
15
|
+
while (dir !== path.dirname(dir)) {
|
|
16
|
+
const candidate = path.join(dir, "node_modules", "@dillingerstaffing", "strand-ui");
|
|
17
|
+
if (fs.existsSync(candidate)) {
|
|
18
|
+
return candidate;
|
|
19
|
+
}
|
|
20
|
+
dir = path.dirname(dir);
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
export async function add(componentName) {
|
|
25
|
+
if (!componentName) {
|
|
26
|
+
console.error("Usage: strand-ui add <component>");
|
|
27
|
+
console.error("Run `strand-ui list` to see available components.");
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
const key = componentName.toLowerCase();
|
|
31
|
+
const entry = components.get(key);
|
|
32
|
+
if (!entry) {
|
|
33
|
+
console.error(`Unknown component: "${componentName}"`);
|
|
34
|
+
console.error("Run `strand-ui list` to see available components.");
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
const config = loadConfig();
|
|
38
|
+
if (!config) {
|
|
39
|
+
console.error("No strand.config.json found. Run `strand-ui init` first.");
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
const strandUiPath = resolveStrandUiPath();
|
|
43
|
+
if (!strandUiPath) {
|
|
44
|
+
console.error("@dillingerstaffing/strand-ui is not installed.");
|
|
45
|
+
console.error("Install it first:\n");
|
|
46
|
+
console.error(" npm install @dillingerstaffing/strand-ui");
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
const sourceDir = path.join(strandUiPath, "src", "components", entry.name);
|
|
50
|
+
const targetDir = path.resolve(process.cwd(), config.componentDir, entry.name);
|
|
51
|
+
if (!fs.existsSync(sourceDir)) {
|
|
52
|
+
console.error(`Component source not found at ${sourceDir}`);
|
|
53
|
+
console.error("Make sure @dillingerstaffing/strand-ui includes source files.");
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
fs.mkdirSync(targetDir, { recursive: true });
|
|
57
|
+
for (const file of entry.files) {
|
|
58
|
+
const src = path.join(sourceDir, file);
|
|
59
|
+
const dest = path.join(targetDir, file);
|
|
60
|
+
if (!fs.existsSync(src)) {
|
|
61
|
+
console.log(` Warning: ${file} not found in source, skipping`);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
const content = fs.readFileSync(src, "utf-8");
|
|
65
|
+
fs.writeFileSync(dest, FILE_HEADER + content);
|
|
66
|
+
console.log(` ${file} -> ${dest}`);
|
|
67
|
+
}
|
|
68
|
+
console.log(`\n${entry.name} added to ${targetDir}`);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=add.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,MAAM,WAAW,GAAG,oBAAoB,CAAC;AACzC,MAAM,WAAW,GAAG,yDAAyD,CAAC;AAE9E,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IACxB,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,GAAG,EACH,cAAc,EACd,oBAAoB,EACpB,WAAW,CACZ,CAAC;QACF,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,aAAqB;IAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAClD,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAElC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,uBAAuB,aAAa,GAAG,CAAC,CAAC;QACvD,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,0DAA0D,CAC3D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,YAAY,GAAG,mBAAmB,EAAE,CAAC;IAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CACX,gDAAgD,CACjD,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,KAAK,CAAC,IAAI,CACX,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAC5B,OAAO,CAAC,GAAG,EAAE,EACb,MAAM,CAAC,YAAY,EACnB,KAAK,CAAC,IAAI,CACX,CAAC;IAEF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CACX,iCAAiC,SAAS,EAAE,CAC7C,CAAC;QACF,OAAO,CAAC,KAAK,CACX,+DAA+D,CAChE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAExC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,gCAAgC,CAAC,CAAC;YAChE,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC9C,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,aAAa,SAAS,EAAE,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA6EA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAyB1C"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import * as fs from "node:fs";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
const CONFIG_FILE = "strand.config.json";
|
|
4
|
+
const DEFAULT_CONFIG = {
|
|
5
|
+
cssDir: "./src/styles",
|
|
6
|
+
componentDir: "./src/components",
|
|
7
|
+
};
|
|
8
|
+
function resolvePackagePath(packageName) {
|
|
9
|
+
try {
|
|
10
|
+
const resolved = import.meta.resolve?.(packageName);
|
|
11
|
+
if (resolved) {
|
|
12
|
+
const filePath = resolved.startsWith("file://")
|
|
13
|
+
? new URL(resolved).pathname
|
|
14
|
+
: resolved;
|
|
15
|
+
// Walk up from the resolved entry point to find the package root
|
|
16
|
+
let dir = path.dirname(filePath);
|
|
17
|
+
while (dir !== path.dirname(dir)) {
|
|
18
|
+
if (fs.existsSync(path.join(dir, "package.json"))) {
|
|
19
|
+
return dir;
|
|
20
|
+
}
|
|
21
|
+
dir = path.dirname(dir);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Fall through to manual resolution
|
|
27
|
+
}
|
|
28
|
+
// Manual resolution: walk up from cwd looking for node_modules
|
|
29
|
+
let dir = process.cwd();
|
|
30
|
+
while (dir !== path.dirname(dir)) {
|
|
31
|
+
const candidate = path.join(dir, "node_modules", packageName);
|
|
32
|
+
if (fs.existsSync(candidate)) {
|
|
33
|
+
return candidate;
|
|
34
|
+
}
|
|
35
|
+
dir = path.dirname(dir);
|
|
36
|
+
}
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
function copyCssFiles(cssDir) {
|
|
40
|
+
const packagePath = resolvePackagePath("@dillingerstaffing/strand");
|
|
41
|
+
if (!packagePath) {
|
|
42
|
+
console.log("\n@dillingerstaffing/strand is not installed. Install it first:\n");
|
|
43
|
+
console.log(" npm install @dillingerstaffing/strand\n");
|
|
44
|
+
console.log("Then run `strand-ui init` again to copy the CSS files.");
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
const cssSourceDir = path.join(packagePath, "css");
|
|
48
|
+
const files = ["tokens.css", "reset.css", "base.css"];
|
|
49
|
+
fs.mkdirSync(cssDir, { recursive: true });
|
|
50
|
+
for (const file of files) {
|
|
51
|
+
const src = path.join(cssSourceDir, file);
|
|
52
|
+
const dest = path.join(cssDir, file);
|
|
53
|
+
if (!fs.existsSync(src)) {
|
|
54
|
+
console.log(` Warning: ${file} not found in @dillingerstaffing/strand`);
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
const content = fs.readFileSync(src, "utf-8");
|
|
58
|
+
const header = `/* Strand UI | MIT License | dillingerstaffing.com */\n`;
|
|
59
|
+
fs.writeFileSync(dest, header + content);
|
|
60
|
+
console.log(` Copied ${file} -> ${dest}`);
|
|
61
|
+
}
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
export async function init() {
|
|
65
|
+
console.log("Strand by Dillinger Staffing -- dillingerstaffing.com\n");
|
|
66
|
+
const configPath = path.join(process.cwd(), CONFIG_FILE);
|
|
67
|
+
if (fs.existsSync(configPath)) {
|
|
68
|
+
console.log(`${CONFIG_FILE} already exists. Skipping config creation.`);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
fs.writeFileSync(configPath, JSON.stringify(DEFAULT_CONFIG, null, 2) + "\n");
|
|
72
|
+
console.log(`Created ${CONFIG_FILE}`);
|
|
73
|
+
}
|
|
74
|
+
const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
75
|
+
const cssDir = path.resolve(process.cwd(), config.cssDir);
|
|
76
|
+
const copied = copyCssFiles(cssDir);
|
|
77
|
+
if (copied) {
|
|
78
|
+
console.log("\nAdd these imports to your main CSS or entry file:\n");
|
|
79
|
+
console.log(` @import "${config.cssDir}/tokens.css";`);
|
|
80
|
+
console.log(` @import "${config.cssDir}/reset.css";`);
|
|
81
|
+
console.log(` @import "${config.cssDir}/base.css";`);
|
|
82
|
+
}
|
|
83
|
+
console.log("\nDone. Run `strand-ui add <component>` to add components.");
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAMA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6B1C"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { components, VALID_CATEGORIES, } from "../registry.js";
|
|
2
|
+
export async function list() {
|
|
3
|
+
console.log("Strand UI Components\n");
|
|
4
|
+
const grouped = new Map();
|
|
5
|
+
for (const category of VALID_CATEGORIES) {
|
|
6
|
+
grouped.set(category, []);
|
|
7
|
+
}
|
|
8
|
+
for (const [, entry] of components) {
|
|
9
|
+
const list = grouped.get(entry.category);
|
|
10
|
+
if (list) {
|
|
11
|
+
list.push(entry.name);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
for (const category of VALID_CATEGORIES) {
|
|
15
|
+
const names = grouped.get(category);
|
|
16
|
+
if (names.length === 0)
|
|
17
|
+
continue;
|
|
18
|
+
console.log(`${category}:`);
|
|
19
|
+
for (const name of names) {
|
|
20
|
+
console.log(` ${name.toLowerCase()}`);
|
|
21
|
+
}
|
|
22
|
+
console.log();
|
|
23
|
+
}
|
|
24
|
+
console.log(`${components.size} components available.`);
|
|
25
|
+
console.log('Run `strand-ui add <name>` to add a component.');
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,gBAAgB,GAEjB,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,IAAI;IACxB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;IAEvD,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,gBAAgB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;QACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEjC,OAAO,CAAC,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;QAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,IAAI,wBAAwB,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;AAChE,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { init } from "./commands/init.js";
|
|
3
|
+
import { add } from "./commands/add.js";
|
|
4
|
+
import { list } from "./commands/list.js";
|
|
5
|
+
const HELP = `strand-ui - CLI for adding Strand UI components to your project
|
|
6
|
+
|
|
7
|
+
Usage:
|
|
8
|
+
strand-ui <command> [options]
|
|
9
|
+
|
|
10
|
+
Commands:
|
|
11
|
+
init Set up tokens and base styles
|
|
12
|
+
add <component> Copy a component into your project
|
|
13
|
+
list List all available components
|
|
14
|
+
help Show this help message
|
|
15
|
+
|
|
16
|
+
Examples:
|
|
17
|
+
strand-ui init
|
|
18
|
+
strand-ui add button
|
|
19
|
+
strand-ui list
|
|
20
|
+
|
|
21
|
+
https://dillingerstaffing.com/labs/strand
|
|
22
|
+
`;
|
|
23
|
+
async function main() {
|
|
24
|
+
const args = process.argv.slice(2);
|
|
25
|
+
const command = args[0];
|
|
26
|
+
switch (command) {
|
|
27
|
+
case "init":
|
|
28
|
+
await init();
|
|
29
|
+
break;
|
|
30
|
+
case "add":
|
|
31
|
+
await add(args[1]);
|
|
32
|
+
break;
|
|
33
|
+
case "list":
|
|
34
|
+
await list();
|
|
35
|
+
break;
|
|
36
|
+
case "help":
|
|
37
|
+
case "--help":
|
|
38
|
+
case "-h":
|
|
39
|
+
case undefined:
|
|
40
|
+
console.log(HELP);
|
|
41
|
+
break;
|
|
42
|
+
default:
|
|
43
|
+
console.error(`Unknown command: "${command}"`);
|
|
44
|
+
console.log(HELP);
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
main().catch((err) => {
|
|
49
|
+
console.error(err);
|
|
50
|
+
process.exit(1);
|
|
51
|
+
});
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE1C,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;CAiBZ,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,IAAI,EAAE,CAAC;YACb,MAAM;QACR,KAAK,KAAK;YACR,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACnB,MAAM;QACR,KAAK,MAAM;YACT,MAAM,IAAI,EAAE,CAAC;YACb,MAAM;QACR,KAAK,MAAM,CAAC;QACZ,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,qBAAqB,OAAO,GAAG,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ComponentCategory = "Input" | "Display" | "Layout" | "Navigation" | "Feedback";
|
|
2
|
+
export interface ComponentEntry {
|
|
3
|
+
name: string;
|
|
4
|
+
category: ComponentCategory;
|
|
5
|
+
files: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare const components: Map<string, ComponentEntry>;
|
|
8
|
+
export declare const VALID_CATEGORIES: ComponentCategory[];
|
|
9
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,UAAU,CAAC;AAEf,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAkQjD,CAAC;AAEH,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,EAM/C,CAAC"}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
export const components = new Map([
|
|
2
|
+
// Input
|
|
3
|
+
[
|
|
4
|
+
"button",
|
|
5
|
+
{
|
|
6
|
+
name: "Button",
|
|
7
|
+
category: "Input",
|
|
8
|
+
files: ["Button.tsx", "Button.css", "index.ts"],
|
|
9
|
+
},
|
|
10
|
+
],
|
|
11
|
+
[
|
|
12
|
+
"input",
|
|
13
|
+
{
|
|
14
|
+
name: "Input",
|
|
15
|
+
category: "Input",
|
|
16
|
+
files: ["Input.tsx", "Input.css", "index.ts"],
|
|
17
|
+
},
|
|
18
|
+
],
|
|
19
|
+
[
|
|
20
|
+
"textarea",
|
|
21
|
+
{
|
|
22
|
+
name: "Textarea",
|
|
23
|
+
category: "Input",
|
|
24
|
+
files: ["Textarea.tsx", "Textarea.css", "index.ts"],
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
[
|
|
28
|
+
"select",
|
|
29
|
+
{
|
|
30
|
+
name: "Select",
|
|
31
|
+
category: "Input",
|
|
32
|
+
files: ["Select.tsx", "Select.css", "index.ts"],
|
|
33
|
+
},
|
|
34
|
+
],
|
|
35
|
+
[
|
|
36
|
+
"checkbox",
|
|
37
|
+
{
|
|
38
|
+
name: "Checkbox",
|
|
39
|
+
category: "Input",
|
|
40
|
+
files: ["Checkbox.tsx", "Checkbox.css", "index.ts"],
|
|
41
|
+
},
|
|
42
|
+
],
|
|
43
|
+
[
|
|
44
|
+
"radio",
|
|
45
|
+
{
|
|
46
|
+
name: "Radio",
|
|
47
|
+
category: "Input",
|
|
48
|
+
files: ["Radio.tsx", "Radio.css", "index.ts"],
|
|
49
|
+
},
|
|
50
|
+
],
|
|
51
|
+
[
|
|
52
|
+
"switch",
|
|
53
|
+
{
|
|
54
|
+
name: "Switch",
|
|
55
|
+
category: "Input",
|
|
56
|
+
files: ["Switch.tsx", "Switch.css", "index.ts"],
|
|
57
|
+
},
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
"slider",
|
|
61
|
+
{
|
|
62
|
+
name: "Slider",
|
|
63
|
+
category: "Input",
|
|
64
|
+
files: ["Slider.tsx", "Slider.css", "index.ts"],
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
[
|
|
68
|
+
"formfield",
|
|
69
|
+
{
|
|
70
|
+
name: "FormField",
|
|
71
|
+
category: "Input",
|
|
72
|
+
files: ["FormField.tsx", "FormField.css", "index.ts"],
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
// Display
|
|
76
|
+
[
|
|
77
|
+
"card",
|
|
78
|
+
{
|
|
79
|
+
name: "Card",
|
|
80
|
+
category: "Display",
|
|
81
|
+
files: ["Card.tsx", "Card.css", "index.ts"],
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
[
|
|
85
|
+
"badge",
|
|
86
|
+
{
|
|
87
|
+
name: "Badge",
|
|
88
|
+
category: "Display",
|
|
89
|
+
files: ["Badge.tsx", "Badge.css", "index.ts"],
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
[
|
|
93
|
+
"avatar",
|
|
94
|
+
{
|
|
95
|
+
name: "Avatar",
|
|
96
|
+
category: "Display",
|
|
97
|
+
files: ["Avatar.tsx", "Avatar.css", "index.ts"],
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
[
|
|
101
|
+
"tag",
|
|
102
|
+
{
|
|
103
|
+
name: "Tag",
|
|
104
|
+
category: "Display",
|
|
105
|
+
files: ["Tag.tsx", "Tag.css", "index.ts"],
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
[
|
|
109
|
+
"table",
|
|
110
|
+
{
|
|
111
|
+
name: "Table",
|
|
112
|
+
category: "Display",
|
|
113
|
+
files: ["Table.tsx", "Table.css", "index.ts"],
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
[
|
|
117
|
+
"datareadout",
|
|
118
|
+
{
|
|
119
|
+
name: "DataReadout",
|
|
120
|
+
category: "Display",
|
|
121
|
+
files: ["DataReadout.tsx", "DataReadout.css", "index.ts"],
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
// Layout
|
|
125
|
+
[
|
|
126
|
+
"stack",
|
|
127
|
+
{
|
|
128
|
+
name: "Stack",
|
|
129
|
+
category: "Layout",
|
|
130
|
+
files: ["Stack.tsx", "Stack.css", "index.ts"],
|
|
131
|
+
},
|
|
132
|
+
],
|
|
133
|
+
[
|
|
134
|
+
"grid",
|
|
135
|
+
{
|
|
136
|
+
name: "Grid",
|
|
137
|
+
category: "Layout",
|
|
138
|
+
files: ["Grid.tsx", "Grid.css", "index.ts"],
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
[
|
|
142
|
+
"container",
|
|
143
|
+
{
|
|
144
|
+
name: "Container",
|
|
145
|
+
category: "Layout",
|
|
146
|
+
files: ["Container.tsx", "Container.css", "index.ts"],
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
[
|
|
150
|
+
"divider",
|
|
151
|
+
{
|
|
152
|
+
name: "Divider",
|
|
153
|
+
category: "Layout",
|
|
154
|
+
files: ["Divider.tsx", "Divider.css", "index.ts"],
|
|
155
|
+
},
|
|
156
|
+
],
|
|
157
|
+
[
|
|
158
|
+
"section",
|
|
159
|
+
{
|
|
160
|
+
name: "Section",
|
|
161
|
+
category: "Layout",
|
|
162
|
+
files: ["Section.tsx", "Section.css", "index.ts"],
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
// Navigation
|
|
166
|
+
[
|
|
167
|
+
"link",
|
|
168
|
+
{
|
|
169
|
+
name: "Link",
|
|
170
|
+
category: "Navigation",
|
|
171
|
+
files: ["Link.tsx", "Link.css", "index.ts"],
|
|
172
|
+
},
|
|
173
|
+
],
|
|
174
|
+
[
|
|
175
|
+
"tabs",
|
|
176
|
+
{
|
|
177
|
+
name: "Tabs",
|
|
178
|
+
category: "Navigation",
|
|
179
|
+
files: ["Tabs.tsx", "Tabs.css", "index.ts"],
|
|
180
|
+
},
|
|
181
|
+
],
|
|
182
|
+
[
|
|
183
|
+
"breadcrumb",
|
|
184
|
+
{
|
|
185
|
+
name: "Breadcrumb",
|
|
186
|
+
category: "Navigation",
|
|
187
|
+
files: ["Breadcrumb.tsx", "Breadcrumb.css", "index.ts"],
|
|
188
|
+
},
|
|
189
|
+
],
|
|
190
|
+
[
|
|
191
|
+
"nav",
|
|
192
|
+
{
|
|
193
|
+
name: "Nav",
|
|
194
|
+
category: "Navigation",
|
|
195
|
+
files: ["Nav.tsx", "Nav.css", "index.ts"],
|
|
196
|
+
},
|
|
197
|
+
],
|
|
198
|
+
// Feedback
|
|
199
|
+
[
|
|
200
|
+
"toast",
|
|
201
|
+
{
|
|
202
|
+
name: "Toast",
|
|
203
|
+
category: "Feedback",
|
|
204
|
+
files: ["Toast.tsx", "Toast.css", "index.ts"],
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
[
|
|
208
|
+
"alert",
|
|
209
|
+
{
|
|
210
|
+
name: "Alert",
|
|
211
|
+
category: "Feedback",
|
|
212
|
+
files: ["Alert.tsx", "Alert.css", "index.ts"],
|
|
213
|
+
},
|
|
214
|
+
],
|
|
215
|
+
[
|
|
216
|
+
"dialog",
|
|
217
|
+
{
|
|
218
|
+
name: "Dialog",
|
|
219
|
+
category: "Feedback",
|
|
220
|
+
files: ["Dialog.tsx", "Dialog.css", "index.ts"],
|
|
221
|
+
},
|
|
222
|
+
],
|
|
223
|
+
[
|
|
224
|
+
"tooltip",
|
|
225
|
+
{
|
|
226
|
+
name: "Tooltip",
|
|
227
|
+
category: "Feedback",
|
|
228
|
+
files: ["Tooltip.tsx", "Tooltip.css", "index.ts"],
|
|
229
|
+
},
|
|
230
|
+
],
|
|
231
|
+
[
|
|
232
|
+
"progress",
|
|
233
|
+
{
|
|
234
|
+
name: "Progress",
|
|
235
|
+
category: "Feedback",
|
|
236
|
+
files: ["Progress.tsx", "Progress.css", "index.ts"],
|
|
237
|
+
},
|
|
238
|
+
],
|
|
239
|
+
[
|
|
240
|
+
"spinner",
|
|
241
|
+
{
|
|
242
|
+
name: "Spinner",
|
|
243
|
+
category: "Feedback",
|
|
244
|
+
files: ["Spinner.tsx", "Spinner.css", "index.ts"],
|
|
245
|
+
},
|
|
246
|
+
],
|
|
247
|
+
[
|
|
248
|
+
"skeleton",
|
|
249
|
+
{
|
|
250
|
+
name: "Skeleton",
|
|
251
|
+
category: "Feedback",
|
|
252
|
+
files: ["Skeleton.tsx", "Skeleton.css", "index.ts"],
|
|
253
|
+
},
|
|
254
|
+
],
|
|
255
|
+
]);
|
|
256
|
+
export const VALID_CATEGORIES = [
|
|
257
|
+
"Input",
|
|
258
|
+
"Display",
|
|
259
|
+
"Layout",
|
|
260
|
+
"Navigation",
|
|
261
|
+
"Feedback",
|
|
262
|
+
];
|
|
263
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAaA,MAAM,CAAC,MAAM,UAAU,GAAgC,IAAI,GAAG,CAAC;IAC7D,QAAQ;IACR;QACE,QAAQ;QACR;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC;SAChD;KACF;IACD;QACE,OAAO;QACP;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;SAC9C;KACF;IACD;QACE,UAAU;QACV;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,UAAU,CAAC;SACpD;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC;SAChD;KACF;IACD;QACE,UAAU;QACV;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,UAAU,CAAC;SACpD;KACF;IACD;QACE,OAAO;QACP;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;SAC9C;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC;SAChD;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC;SAChD;KACF;IACD;QACE,WAAW;QACX;YACE,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,UAAU,CAAC;SACtD;KACF;IAED,UAAU;IACV;QACE,MAAM;QACN;YACE,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;SAC5C;KACF;IACD;QACE,OAAO;QACP;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;SAC9C;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC;SAChD;KACF;IACD;QACE,KAAK;QACL;YACE,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;SAC1C;KACF;IACD;QACE,OAAO;QACP;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;SAC9C;KACF;IACD;QACE,aAAa;QACb;YACE,IAAI,EAAE,aAAa;YACnB,QAAQ,EAAE,SAAS;YACnB,KAAK,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,CAAC;SAC1D;KACF;IAED,SAAS;IACT;QACE,OAAO;QACP;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;SAC9C;KACF;IACD;QACE,MAAM;QACN;YACE,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;SAC5C;KACF;IACD;QACE,WAAW;QACX;YACE,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC,eAAe,EAAE,eAAe,EAAE,UAAU,CAAC;SACtD;KACF;IACD;QACE,SAAS;QACT;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC;SAClD;KACF;IACD;QACE,SAAS;QACT;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC;SAClD;KACF;IAED,aAAa;IACb;QACE,MAAM;QACN;YACE,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;SAC5C;KACF;IACD;QACE,MAAM;QACN;YACE,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;SAC5C;KACF;IACD;QACE,YAAY;QACZ;YACE,IAAI,EAAE,YAAY;YAClB,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,UAAU,CAAC;SACxD;KACF;IACD;QACE,KAAK;QACL;YACE,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,YAAY;YACtB,KAAK,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;SAC1C;KACF;IAED,WAAW;IACX;QACE,OAAO;QACP;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;SAC9C;KACF;IACD;QACE,OAAO;QACP;YACE,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC;SAC9C;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC;SAChD;KACF;IACD;QACE,SAAS;QACT;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC;SAClD;KACF;IACD;QACE,UAAU;QACV;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,UAAU,CAAC;SACpD;KACF;IACD;QACE,SAAS;QACT;YACE,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC;SAClD;KACF;IACD;QACE,UAAU;QACV;YACE,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,UAAU,CAAC;SACpD;KACF;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAwB;IACnD,OAAO;IACP,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,UAAU;CACX,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "strand-ui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI for adding Strand UI components to your project",
|
|
5
|
+
"author": "Dillinger Staffing <engineering@dillingerstaffing.com> (https://dillingerstaffing.com)",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"homepage": "https://dillingerstaffing.com/labs/strand",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/dillingerstaffing/strand",
|
|
11
|
+
"directory": "packages/cli"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/dillingerstaffing/strand/issues"
|
|
15
|
+
},
|
|
16
|
+
"type": "module",
|
|
17
|
+
"bin": {
|
|
18
|
+
"strand-ui": "./dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"files": ["dist/"],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"test": "vitest run"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"@types/node": "^22.0.0",
|
|
27
|
+
"vitest": "^3.0.0"
|
|
28
|
+
}
|
|
29
|
+
}
|