@hilum/blocks 0.1.1

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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Hilum
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,18 @@
1
+ # @hilum/blocks
2
+
3
+ CLI for adding Hilum marketing blocks to an app.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pnpm add -D @hilum/blocks
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```bash
14
+ pnpm hilum list
15
+ pnpm hilum add hero-simple-centered
16
+ ```
17
+
18
+ `hilum add` writes the selected block into `src/components/blocks` by default and installs any missing dependencies declared by the block registry.
package/dist/index.js ADDED
@@ -0,0 +1,119 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { mkdirSync, writeFileSync, existsSync, readFileSync } from 'fs';
4
+ import { join } from 'path';
5
+ import { execSync } from 'child_process';
6
+
7
+ // src/lib/registry.ts
8
+ var REGISTRY_URL = "https://ui.hilum.dev/registry.json";
9
+ async function fetchRegistry() {
10
+ let res;
11
+ try {
12
+ res = await fetch(REGISTRY_URL);
13
+ } catch {
14
+ throw new Error(`Could not reach registry at ${REGISTRY_URL}. Are you online?`);
15
+ }
16
+ if (!res.ok) {
17
+ throw new Error(`Registry returned HTTP ${res.status}`);
18
+ }
19
+ return res.json();
20
+ }
21
+ function detectPm(cwd) {
22
+ if (existsSync(join(cwd, "pnpm-lock.yaml"))) return "pnpm";
23
+ if (existsSync(join(cwd, "yarn.lock"))) return "yarn";
24
+ return "npm";
25
+ }
26
+ function installedDeps(cwd) {
27
+ const pkgPath = join(cwd, "package.json");
28
+ if (!existsSync(pkgPath)) return /* @__PURE__ */ new Set();
29
+ try {
30
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
31
+ return /* @__PURE__ */ new Set([
32
+ ...Object.keys(pkg.dependencies ?? {}),
33
+ ...Object.keys(pkg.devDependencies ?? {})
34
+ ]);
35
+ } catch {
36
+ return /* @__PURE__ */ new Set();
37
+ }
38
+ }
39
+ function runInstall(deps, cwd) {
40
+ const pm = detectPm(cwd);
41
+ const cmd = pm === "pnpm" ? `pnpm add ${deps.join(" ")}` : pm === "yarn" ? `yarn add ${deps.join(" ")}` : `npm install ${deps.join(" ")}`;
42
+ console.log(` running: ${cmd}`);
43
+ execSync(cmd, { cwd, stdio: "inherit" });
44
+ }
45
+
46
+ // src/commands/add.ts
47
+ var addCommand = new Command("add").description("add a block to your project").argument("<name>", "block name (e.g. hero-simple-centered)").option("--outdir <dir>", "output directory", "src/components/blocks").action(async (name, opts) => {
48
+ let registry;
49
+ try {
50
+ registry = await fetchRegistry();
51
+ } catch (err) {
52
+ console.error(err.message);
53
+ process.exit(1);
54
+ }
55
+ const block = registry.blocks.find((b) => b.name === name) ?? registry.blocks.find((b) => b.name.toLowerCase() === name.toLowerCase());
56
+ if (!block) {
57
+ console.error(`Block "${name}" not found.`);
58
+ console.error(`Run "hilum list" to see available blocks.`);
59
+ process.exit(1);
60
+ }
61
+ const cwd = process.cwd();
62
+ const outDir = join(cwd, opts.outdir);
63
+ const outFile = join(outDir, `${block.name}.tsx`);
64
+ mkdirSync(outDir, { recursive: true });
65
+ writeFileSync(outFile, block.source, "utf8");
66
+ console.log(`added: ${outFile}`);
67
+ if (block.dependencies.length > 0) {
68
+ const existing = installedDeps(cwd);
69
+ const missing = block.dependencies.filter((d) => !existing.has(d));
70
+ if (missing.length > 0) {
71
+ console.log(`installing: ${missing.join(", ")}`);
72
+ try {
73
+ runInstall(missing, cwd);
74
+ } catch {
75
+ console.error(`Failed to install dependencies. Run manually:`);
76
+ console.error(` npm install ${missing.join(" ")}`);
77
+ process.exit(1);
78
+ }
79
+ }
80
+ }
81
+ });
82
+ var listCommand = new Command("list").description("list available blocks").argument("[category]", "filter by category").action(async (categoryArg) => {
83
+ let registry;
84
+ try {
85
+ registry = await fetchRegistry();
86
+ } catch (err) {
87
+ console.error(err.message);
88
+ process.exit(1);
89
+ }
90
+ const grouped = /* @__PURE__ */ new Map();
91
+ for (const block of registry.blocks) {
92
+ if (categoryArg && block.category !== categoryArg) continue;
93
+ const list = grouped.get(block.category) ?? [];
94
+ list.push(block);
95
+ grouped.set(block.category, list);
96
+ }
97
+ if (grouped.size === 0) {
98
+ const msg = categoryArg ? `No blocks found in category "${categoryArg}".` : "No blocks found.";
99
+ console.log(msg);
100
+ process.exit(0);
101
+ }
102
+ for (const [category, blocks] of grouped) {
103
+ console.log(`
104
+ ${category}`);
105
+ for (const block of blocks) {
106
+ const desc = block.description ? ` \u2014 ${block.description}` : "";
107
+ console.log(` ${block.name}${desc}`);
108
+ }
109
+ }
110
+ console.log();
111
+ });
112
+
113
+ // src/index.ts
114
+ var program = new Command().name("hilum").description("Hilum UI CLI").version("0.1.0");
115
+ program.addCommand(addCommand);
116
+ program.addCommand(listCommand);
117
+ program.parse();
118
+ //# sourceMappingURL=index.js.map
119
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/registry.ts","../src/lib/pm.ts","../src/commands/add.ts","../src/commands/list.ts","../src/index.ts"],"names":["join","Command"],"mappings":"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","file":"index.js","sourcesContent":["const REGISTRY_URL = \"https://ui.hilum.dev/registry.json\";\n\nexport interface Block {\n name: string;\n category: string;\n title: string;\n description: string;\n source: string;\n dependencies: string[];\n}\n\nexport interface Registry {\n version: string;\n updatedAt: string;\n blocks: Block[];\n}\n\nexport async function fetchRegistry(): Promise<Registry> {\n let res: Response;\n try {\n res = await fetch(REGISTRY_URL);\n } catch {\n throw new Error(`Could not reach registry at ${REGISTRY_URL}. Are you online?`);\n }\n if (!res.ok) {\n throw new Error(`Registry returned HTTP ${res.status}`);\n }\n return res.json() as Promise<Registry>;\n}\n","import { existsSync, readFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { execSync } from \"child_process\";\n\ntype PackageManager = \"pnpm\" | \"yarn\" | \"npm\";\n\nexport function detectPm(cwd: string): PackageManager {\n if (existsSync(join(cwd, \"pnpm-lock.yaml\"))) return \"pnpm\";\n if (existsSync(join(cwd, \"yarn.lock\"))) return \"yarn\";\n return \"npm\";\n}\n\nexport function installedDeps(cwd: string): Set<string> {\n const pkgPath = join(cwd, \"package.json\");\n if (!existsSync(pkgPath)) return new Set();\n try {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf8\"));\n return new Set([\n ...Object.keys(pkg.dependencies ?? {}),\n ...Object.keys(pkg.devDependencies ?? {}),\n ]);\n } catch {\n return new Set();\n }\n}\n\nexport function runInstall(deps: string[], cwd: string): void {\n const pm = detectPm(cwd);\n const cmd =\n pm === \"pnpm\"\n ? `pnpm add ${deps.join(\" \")}`\n : pm === \"yarn\"\n ? `yarn add ${deps.join(\" \")}`\n : `npm install ${deps.join(\" \")}`;\n\n console.log(` running: ${cmd}`);\n execSync(cmd, { cwd, stdio: \"inherit\" });\n}\n","import { Command } from \"commander\";\nimport { mkdirSync, writeFileSync } from \"fs\";\nimport { join } from \"path\";\nimport { fetchRegistry } from \"../lib/registry.js\";\nimport { installedDeps, runInstall } from \"../lib/pm.js\";\n\nexport const addCommand = new Command(\"add\")\n .description(\"add a block to your project\")\n .argument(\"<name>\", \"block name (e.g. hero-simple-centered)\")\n .option(\"--outdir <dir>\", \"output directory\", \"src/components/blocks\")\n .action(async (name: string, opts: { outdir: string }) => {\n let registry;\n try {\n registry = await fetchRegistry();\n } catch (err) {\n console.error((err as Error).message);\n process.exit(1);\n }\n\n // Exact match first, then case-insensitive\n const block =\n registry.blocks.find((b) => b.name === name) ??\n registry.blocks.find((b) => b.name.toLowerCase() === name.toLowerCase());\n\n if (!block) {\n console.error(`Block \"${name}\" not found.`);\n console.error(`Run \"hilum list\" to see available blocks.`);\n process.exit(1);\n }\n\n const cwd = process.cwd();\n const outDir = join(cwd, opts.outdir);\n const outFile = join(outDir, `${block.name}.tsx`);\n\n mkdirSync(outDir, { recursive: true });\n writeFileSync(outFile, block.source, \"utf8\");\n console.log(`added: ${outFile}`);\n\n // Install any missing dependencies\n if (block.dependencies.length > 0) {\n const existing = installedDeps(cwd);\n const missing = block.dependencies.filter((d) => !existing.has(d));\n if (missing.length > 0) {\n console.log(`installing: ${missing.join(\", \")}`);\n try {\n runInstall(missing, cwd);\n } catch {\n console.error(`Failed to install dependencies. Run manually:`);\n console.error(` npm install ${missing.join(\" \")}`);\n process.exit(1);\n }\n }\n }\n });\n","import { Command } from \"commander\";\nimport { fetchRegistry, type Block } from \"../lib/registry.js\";\n\nexport const listCommand = new Command(\"list\")\n .description(\"list available blocks\")\n .argument(\"[category]\", \"filter by category\")\n .action(async (categoryArg?: string) => {\n let registry;\n try {\n registry = await fetchRegistry();\n } catch (err) {\n console.error((err as Error).message);\n process.exit(1);\n }\n\n // Group by category\n const grouped = new Map<string, Block[]>();\n for (const block of registry.blocks) {\n if (categoryArg && block.category !== categoryArg) continue;\n const list = grouped.get(block.category) ?? [];\n list.push(block);\n grouped.set(block.category, list);\n }\n\n if (grouped.size === 0) {\n const msg = categoryArg\n ? `No blocks found in category \"${categoryArg}\".`\n : \"No blocks found.\";\n console.log(msg);\n process.exit(0);\n }\n\n for (const [category, blocks] of grouped) {\n console.log(`\\n${category}`);\n for (const block of blocks) {\n const desc = block.description ? ` — ${block.description}` : \"\";\n console.log(` ${block.name}${desc}`);\n }\n }\n console.log();\n });\n","import { Command } from \"commander\";\nimport { addCommand } from \"./commands/add.js\";\nimport { listCommand } from \"./commands/list.js\";\n\nconst program = new Command().name(\"hilum\").description(\"Hilum UI CLI\").version(\"0.1.0\");\n\nprogram.addCommand(addCommand);\nprogram.addCommand(listCommand);\n\nprogram.parse();\n"]}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@hilum/blocks",
3
+ "version": "0.1.1",
4
+ "private": false,
5
+ "description": "Hilum UI CLI — add marketing blocks to your project",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+ssh://git@github.com/hilum-labs/hilum-ui.git",
10
+ "directory": "packages/blocks"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "type": "module",
16
+ "bin": {
17
+ "hilum": "dist/index.js"
18
+ },
19
+ "files": [
20
+ "dist",
21
+ "README.md",
22
+ "LICENSE"
23
+ ],
24
+ "dependencies": {
25
+ "commander": "^12.0.0"
26
+ },
27
+ "devDependencies": {
28
+ "@types/node": "^22.0.0",
29
+ "tsup": "^8.3.0",
30
+ "typescript": "^5.7.0"
31
+ },
32
+ "scripts": {
33
+ "build": "tsup",
34
+ "dev": "tsup --watch",
35
+ "typecheck": "tsc --noEmit",
36
+ "lint": "eslint src",
37
+ "clean": "rm -rf dist .turbo"
38
+ }
39
+ }