@arkitect-ui/cli 0.2.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 Devx Services
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,101 @@
1
+ # arkitect-ui CLI
2
+
3
+ A modern CLI built with Effect-TS for creating and managing Arkitect UI projects and components.
4
+
5
+ ## 🎯 Features
6
+
7
+ 1. **Create monorepos** with predefined templates
8
+ 2. **Component registry** Shadcn-style for reusable UI libraries (React & Solid)
9
+ 3. **Framework Agnostic** Support for React and SolidJS
10
+ 4. **Automated Setup** Init command to configure your project
11
+
12
+ ## 🚀 Installation and Usage
13
+
14
+ ### Prerequisites
15
+
16
+ - Node.js 18+
17
+ - pnpm (recommended), npm, or yarn
18
+
19
+ ### Installation
20
+
21
+ ```bash
22
+ npm install -g @arkitect-ui/cli
23
+ # or
24
+ pnpm add -g @arkitect-ui/cli
25
+ ```
26
+
27
+ ## 📖 Available Commands
28
+
29
+ ### `init` - Initialize Project
30
+
31
+ Configures your project for Arkitect UI components. Detects your framework (React/Solid), sets up paths, creates `components.json`, and installs base dependencies.
32
+
33
+ ```bash
34
+ arkitect-ui init
35
+ ```
36
+
37
+ ### `list` - List Components
38
+
39
+ Lists all available components in the Arkitect UI registry.
40
+
41
+ ```bash
42
+ arkitect-ui list
43
+ ```
44
+
45
+ ### `add` - Add Component
46
+
47
+ Installs a component into your project. Automatically handles dependencies and file placement using `shadcn`.
48
+
49
+ ```bash
50
+ # Add specific component
51
+ arkitect-ui add button
52
+
53
+ # Add multiple components
54
+ arkitect-ui add button card input
55
+
56
+ # Add ALL available components
57
+ arkitect-ui add --all
58
+ ```
59
+
60
+ **Options:**
61
+
62
+ - `--all`: Install all components available in the registry.
63
+ - `--overwrite`: Overwrite existing files.
64
+
65
+ ### `create` - Create Project (Beta)
66
+
67
+ Creates a new project from a predefined template.
68
+
69
+ ```bash
70
+ arkitect-ui create [options] <project-name>
71
+ ```
72
+
73
+ ## 🛠️ Development
74
+
75
+ ### Local Setup
76
+
77
+ ```bash
78
+ # Clone the monorepo
79
+ git clone https://github.com/devx-op/arkitect-ui.git
80
+ cd arkitect-ui
81
+
82
+ # Install dependencies
83
+ pnpm install
84
+
85
+ # Build CLI
86
+ pnpm nx build cli
87
+
88
+ # Link locally
89
+ cd apps/cli
90
+ pnpm link --global
91
+ ```
92
+
93
+ ### Running Locally
94
+
95
+ ```bash
96
+ arkitect-ui --help
97
+ ```
98
+
99
+ ## 📄 License
100
+
101
+ MIT
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@arkitect-ui/cli",
3
+ "version": "0.1.0",
4
+ "description": "CLI tool for creating Effect-TS monorepos and managing components",
5
+ "type": "module",
6
+ "bin": {
7
+ "arkitect-ui": "./dist/src/main.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "templates",
12
+ "registry"
13
+ ],
14
+ "dependencies": {
15
+ "@effect/cli": "catalog:",
16
+ "@effect/platform": "catalog:",
17
+ "@effect/platform-node": "catalog:",
18
+ "chalk": "^5.3.0",
19
+ "effect": "catalog:",
20
+ "handlebars": "^4.7.8",
21
+ "tar": "^7.4.3"
22
+ },
23
+ "devDependencies": {
24
+ "@types/handlebars": "^4.1.0",
25
+ "@types/node": "catalog:",
26
+ "@types/tar": "^6.1.13",
27
+ "@effect/vitest": "catalog:",
28
+ "typescript": "catalog:"
29
+ },
30
+ "keywords": [
31
+ "effect-ts",
32
+ "cli",
33
+ "monorepo",
34
+ "scaffold",
35
+ "template",
36
+ "generator"
37
+ ],
38
+ "author": "Andres Jimenez",
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://github.com/devx-op/arkitect-ui.git",
43
+ "directory": "apps/cli"
44
+ },
45
+ "types": "./src/main.d.ts",
46
+ "module": "./src/main.js",
47
+ "main": "./src/main.js"
48
+ }
@@ -0,0 +1,13 @@
1
+ import * as Command from "@effect/cli/Command";
2
+ import * as Option from "effect/Option";
3
+ import * as FileSystem from "@effect/platform/FileSystem";
4
+ import * as Path from "@effect/platform/Path";
5
+ import * as HttpClient from "@effect/platform/HttpClient";
6
+ export declare const addCommand: Command.Command<"add", FileSystem.FileSystem | Path.Path | HttpClient.HttpClient | import("@effect/platform/CommandExecutor").CommandExecutor, Error | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError | import("@effect/platform/HttpClientError").HttpClientError, {
7
+ readonly componentName: Option.Option<string>;
8
+ readonly all: boolean;
9
+ readonly overwrite: boolean;
10
+ readonly cwd: string;
11
+ readonly dryRun: boolean;
12
+ }>;
13
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/commands/add.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAK9C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,IAAI,MAAM,uBAAuB,CAAA;AAE7C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AA2CzD,eAAO,MAAM,UAAU;;;;;;EAsGtB,CAAA"}
@@ -0,0 +1,85 @@
1
+ import * as Args from "@effect/cli/Args";
2
+ import * as Command from "@effect/cli/Command";
3
+ import * as Options from "@effect/cli/Options";
4
+ import * as PlatformCommand from "@effect/platform/Command";
5
+ import * as Console from "effect/Console";
6
+ import * as Effect from "effect/Effect";
7
+ import * as Option from "effect/Option";
8
+ import * as FileSystem from "@effect/platform/FileSystem";
9
+ import * as Path from "@effect/platform/Path";
10
+ import * as Schema from "effect/Schema";
11
+ import * as HttpClient from "@effect/platform/HttpClient";
12
+ import * as HttpClientResponse from "@effect/platform/HttpClientResponse";
13
+ import { ComponentsConfig } from "../schemas/components-config.js";
14
+ const REGISTRY_BASE_URL = "https://devx-op.github.io/arkitect-ui/r";
15
+ // Arguments and options for add command
16
+ const componentNameArg = Args.text({ name: "component-name" }).pipe(Args.withDescription("Name of the component to add"), Args.optional);
17
+ const allOption = Options.boolean("all").pipe(Options.withAlias("a"), Options.withDescription("Install all available components"), Options.withDefault(false));
18
+ const overwriteOption = Options.boolean("overwrite").pipe(Options.withAlias("o"), Options.withDescription("Overwrite existing files"), Options.withDefault(false));
19
+ const cwdOption = Options.text("cwd").pipe(Options.withDescription("Current working directory"), Options.withDefault(process.cwd()));
20
+ const dryRunOption = Options.boolean("dry-run").pipe(Options.withDescription("Simulate installation without running commands"), Options.withDefault(false));
21
+ // Export the add command
22
+ export const addCommand = Command.make("add", {
23
+ componentName: componentNameArg,
24
+ all: allOption,
25
+ overwrite: overwriteOption,
26
+ cwd: cwdOption,
27
+ dryRun: dryRunOption,
28
+ }, (options) => Effect.gen(function* () {
29
+ const fs = yield* FileSystem.FileSystem;
30
+ const path = yield* Path.Path;
31
+ const http = (yield* HttpClient.HttpClient).pipe(HttpClient.filterStatusOk);
32
+ // 1. Check for components.json and detect framework
33
+ const configPath = path.join(options.cwd, "components.json");
34
+ const hasConfig = yield* fs.exists(configPath);
35
+ if (!hasConfig) {
36
+ return yield* Effect.fail(new Error("⚠️ components.json not found. Please run 'init' first."));
37
+ }
38
+ const configContent = yield* fs.readFileString(configPath);
39
+ const config = yield* Schema.decodeUnknown(Schema.parseJson(ComponentsConfig))(configContent);
40
+ const framework = Option.fromNullable(config.arkitect?.framework).pipe(Option.orElse(() => Option.fromNullable(config.rsc).pipe(Option.map((rsc) => (rsc ? "react" : "react")))), Option.getOrElse(() => "react"));
41
+ // Determine Registry URL path segment
42
+ // React -> r/r, Solid -> r/s
43
+ const frameworkPath = framework === "solid" ? "s" : "r";
44
+ // 2. Resolve components to install
45
+ let componentsToInstall = [];
46
+ if (options.all) {
47
+ yield* Console.log("📦 Fetching all components from registry...");
48
+ const RegistryIndex = Schema.Struct({
49
+ items: Schema.Array(Schema.Struct({ name: Schema.String, type: Schema.String })),
50
+ });
51
+ const response = yield* http.get(`${REGISTRY_BASE_URL}/index.json`);
52
+ const registry = yield* HttpClientResponse.schemaBodyJson(RegistryIndex)(response);
53
+ componentsToInstall = registry.items
54
+ .filter((item) => item.type === "registry:ui")
55
+ .map((item) => item.name);
56
+ if (componentsToInstall.length === 0) {
57
+ return yield* Console.log("⚠️ No components found to install.");
58
+ }
59
+ }
60
+ else if (Option.isSome(options.componentName)) {
61
+ componentsToInstall = [options.componentName.value];
62
+ }
63
+ else {
64
+ return yield* Effect.fail(new Error("⚠️ Please specify a component name or use --all"));
65
+ }
66
+ // 3. Install Components
67
+ yield* Console.log(`🚀 Installing ${componentsToInstall.length} component(s) for ${framework}...`);
68
+ // Install sequentially to avoid race conditions in shadcn
69
+ for (const name of componentsToInstall) {
70
+ const url = `${REGISTRY_BASE_URL}/${frameworkPath}/${name}.json`;
71
+ const args = ["shadcn@latest", "add", url];
72
+ if (options.overwrite)
73
+ args.push("--overwrite");
74
+ const command = PlatformCommand.make("npx", ...args).pipe(PlatformCommand.workingDirectory(options.cwd));
75
+ yield* Console.log(`Installing ${name}...`);
76
+ if (options.dryRun) {
77
+ yield* Console.log(`[Dry Run] Would execute: npx ${args.join(" ")}`);
78
+ }
79
+ else {
80
+ yield* PlatformCommand.string(command).pipe(Effect.catchAll((err) => Effect.fail(new Error(`Failed to install ${name}: ${err}`))));
81
+ }
82
+ }
83
+ yield* Console.log("✅ All components installed successfully.");
84
+ }));
85
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/commands/add.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import * as Command from "@effect/cli/Command";
2
+ import * as FileSystem from "@effect/platform/FileSystem";
3
+ import * as Option from "effect/Option";
4
+ export declare const initCommand: Command.Command<"init", FileSystem.FileSystem | import("@effect/platform/CommandExecutor").CommandExecutor | import("@effect/platform/Terminal").Terminal, Error | import("@effect/platform/Error").PlatformError | import("effect/ParseResult").ParseError, {
5
+ readonly cwd: string;
6
+ readonly framework: Option.Option<"react" | "solid">;
7
+ readonly srcDir: Option.Option<string>;
8
+ readonly componentsDir: Option.Option<string>;
9
+ readonly utilsPath: Option.Option<string>;
10
+ readonly cssPath: Option.Option<string>;
11
+ readonly yes: boolean;
12
+ readonly installDeps: Option.Option<boolean>;
13
+ }>;
14
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAI9C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AAGzD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAyDvC,eAAO,MAAM,WAAW;;;;;;;;;EAgLvB,CAAA"}
@@ -0,0 +1,140 @@
1
+ import * as Command from "@effect/cli/Command";
2
+ import * as Options from "@effect/cli/Options";
3
+ import * as Prompt from "@effect/cli/Prompt";
4
+ import * as PlatformCommand from "@effect/platform/Command";
5
+ import * as FileSystem from "@effect/platform/FileSystem";
6
+ import * as Console from "effect/Console";
7
+ import * as Effect from "effect/Effect";
8
+ import * as Option from "effect/Option";
9
+ import * as Schema from "effect/Schema";
10
+ import { ComponentsConfig } from "../schemas/components-config.js";
11
+ // Options for the init command
12
+ const cwdOption = Options.text("cwd").pipe(Options.withDescription("Current working directory"), Options.withDefault(process.cwd()));
13
+ const frameworkOption = Options.choice("framework", ["react", "solid"]).pipe(Options.withDescription("Framework to use"), Options.optional);
14
+ const srcDirOption = Options.text("src-dir").pipe(Options.withDescription("Source directory"), Options.optional);
15
+ const componentsDirOption = Options.text("components-dir").pipe(Options.withDescription("Components directory"), Options.optional);
16
+ const utilsPathOption = Options.text("utils-path").pipe(Options.withDescription("Utils file path"), Options.optional);
17
+ const cssPathOption = Options.text("css-path").pipe(Options.withDescription("Global CSS file path"), Options.optional);
18
+ const yesOption = Options.boolean("yes").pipe(Options.withAlias("y"), Options.withDescription("Skip prompts and use defaults/flags"));
19
+ const installDepsOption = Options.boolean("install-deps").pipe(Options.withDescription("Install dependencies automatically"), Options.optional);
20
+ // Export the init command
21
+ export const initCommand = Command.make("init", {
22
+ cwd: cwdOption,
23
+ framework: frameworkOption,
24
+ srcDir: srcDirOption,
25
+ componentsDir: componentsDirOption,
26
+ utilsPath: utilsPathOption,
27
+ cssPath: cssPathOption,
28
+ yes: yesOption,
29
+ installDeps: installDepsOption,
30
+ }, (options) => Effect.gen(function* () {
31
+ const fs = yield* FileSystem.FileSystem;
32
+ yield* Console.log("🚀 Initializing Arkitect UI configuration...");
33
+ // 1. Detect Framework
34
+ let detectedFramework = "react";
35
+ const packageJsonPath = `${options.cwd}/package.json`;
36
+ const hasPackageJson = yield* fs.exists(packageJsonPath);
37
+ if (hasPackageJson) {
38
+ const packageJsonContent = yield* fs.readFileString(packageJsonPath);
39
+ const packageJson = JSON.parse(packageJsonContent);
40
+ const deps = {
41
+ ...packageJson.dependencies,
42
+ ...packageJson.devDependencies,
43
+ };
44
+ if (deps["solid-js"]) {
45
+ detectedFramework = "solid";
46
+ }
47
+ else if (deps["react"]) {
48
+ detectedFramework = "react";
49
+ }
50
+ }
51
+ // Determine Framework
52
+ const framework = yield* Option.match(options.framework, {
53
+ onNone: () => options.yes
54
+ ? Effect.succeed(detectedFramework)
55
+ : Prompt.select({
56
+ message: "Which framework are you using?",
57
+ choices: [
58
+ {
59
+ title: "React",
60
+ value: "react",
61
+ selected: detectedFramework === "react",
62
+ },
63
+ {
64
+ title: "Solid",
65
+ value: "solid",
66
+ selected: detectedFramework === "solid",
67
+ },
68
+ ],
69
+ }).pipe(Effect.map((f) => f)),
70
+ onSome: (f) => Effect.succeed(f),
71
+ });
72
+ // 2. Resolve Paths
73
+ const resolvePath = (option, promptMsg, defaultValue) => Option.match(option, {
74
+ onNone: () => options.yes
75
+ ? Effect.succeed(defaultValue)
76
+ : Prompt.text({ message: promptMsg, default: defaultValue }),
77
+ onSome: Effect.succeed,
78
+ });
79
+ const srcDir = yield* resolvePath(options.srcDir, "Where is your source directory?", "src");
80
+ const componentsDir = yield* resolvePath(options.componentsDir, "Where would you like to install components?", `${srcDir}/components/ui`);
81
+ const utilsPath = yield* resolvePath(options.utilsPath, "Where is your utils file located?", `${srcDir}/lib/utils.ts`);
82
+ const cssPath = yield* resolvePath(options.cssPath, "Where is your global CSS file?", `${srcDir}/index.css`);
83
+ // 3. Generate components.json
84
+ const componentsConfig = new ComponentsConfig({
85
+ $schema: "https://ui.shadcn.com/schema.json",
86
+ style: "default",
87
+ rsc: framework === "react",
88
+ tsx: true,
89
+ tailwind: {
90
+ config: "tailwind.config.js",
91
+ css: cssPath,
92
+ baseColor: "slate",
93
+ cssVariables: true,
94
+ prefix: "",
95
+ },
96
+ aliases: {
97
+ components: `@/${componentsDir.replace(`${srcDir}/`, "")}`,
98
+ utils: `@/${utilsPath.replace(`${srcDir}/`, "").replace(".ts", "")}`,
99
+ ui: `@/${componentsDir.replace(`${srcDir}/`, "")}`,
100
+ },
101
+ arkitect: {
102
+ framework: framework,
103
+ },
104
+ });
105
+ const encodedConfig = yield* Schema.encode(Schema.parseJson(ComponentsConfig))(componentsConfig);
106
+ yield* fs.writeFileString(`${options.cwd}/components.json`, encodedConfig);
107
+ yield* Console.log("✅ components.json created successfully.");
108
+ // 4. Install Dependencies
109
+ const shouldInstallDeps = yield* Option.match(options.installDeps, {
110
+ onNone: () => options.yes
111
+ ? Effect.succeed(true)
112
+ : Prompt.confirm({
113
+ message: "Would you like to install required dependencies now?",
114
+ initial: true,
115
+ }),
116
+ onSome: Effect.succeed,
117
+ });
118
+ if (shouldInstallDeps) {
119
+ const baseDeps = ["clsx", "tailwind-merge", "class-variance-authority"];
120
+ const frameworkDeps = framework === "react" ? ["@ark-ui/react"] : ["@ark-ui/solid"];
121
+ const allDeps = [...baseDeps, ...frameworkDeps];
122
+ yield* Console.log(`📦 Installing dependencies: ${allDeps.join(", ")}...`);
123
+ let pm = "npm";
124
+ const hasPnpmLock = yield* fs.exists(`${options.cwd}/pnpm-lock.yaml`);
125
+ const hasYarnLock = yield* fs.exists(`${options.cwd}/yarn.lock`);
126
+ const hasBunLock = yield* fs.exists(`${options.cwd}/bun.lockb`);
127
+ if (hasPnpmLock)
128
+ pm = "pnpm";
129
+ else if (hasYarnLock)
130
+ pm = "yarn";
131
+ else if (hasBunLock)
132
+ pm = "bun";
133
+ const installCmd = pm === "npm" ? "install" : "add";
134
+ const args = [installCmd, ...allDeps];
135
+ const command = PlatformCommand.make(pm, ...args).pipe(PlatformCommand.workingDirectory(options.cwd));
136
+ yield* PlatformCommand.string(command).pipe(Effect.catchAll((err) => Effect.fail(new Error(`Failed to install dependencies: ${err}`))));
137
+ yield* Console.log("✅ Dependencies installed successfully.");
138
+ }
139
+ }));
140
+ //# 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,4 @@
1
+ import * as Command from "@effect/cli/Command";
2
+ import * as FileSystem from "@effect/platform/FileSystem";
3
+ export declare const listCommand: Command.Command<"list", FileSystem.FileSystem, Error | import("@effect/platform/Error").PlatformError, {}>;
4
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAI9C,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AAgBzD,eAAO,MAAM,WAAW,4GAsDnB,CAAA"}
@@ -0,0 +1,45 @@
1
+ import * as Command from "@effect/cli/Command";
2
+ import * as Console from "effect/Console";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Option from "effect/Option";
5
+ import * as FileSystem from "@effect/platform/FileSystem";
6
+ import * as Schema from "effect/Schema";
7
+ import { ComponentsConfig } from "../schemas/components-config.js";
8
+ const REGISTRY_INDEX_URL = "https://devx-op.github.io/arkitect-ui/r/index.json";
9
+ export const listCommand = Command.make("list", {}, () => Effect.gen(function* () {
10
+ const fs = yield* FileSystem.FileSystem;
11
+ yield* Console.log("🔍 Fetching components from Arkitect UI registry...");
12
+ // Detect framework from components.json if available
13
+ let framework = Option.none();
14
+ const hasConfig = yield* fs.exists("components.json");
15
+ if (hasConfig) {
16
+ const configContent = yield* fs.readFileString("components.json");
17
+ const config = yield* Effect.option(Schema.decodeUnknown(Schema.parseJson(ComponentsConfig))(configContent));
18
+ framework = Option.flatMap(config, (c) => Option.fromNullable(c.arkitect?.framework));
19
+ }
20
+ // Fetch registry index
21
+ const response = yield* Effect.tryPromise({
22
+ try: () => fetch(REGISTRY_INDEX_URL),
23
+ catch: (err) => new Error(`Failed to fetch registry: ${err}`),
24
+ });
25
+ if (!response.ok) {
26
+ yield* Effect.fail(new Error(`Failed to fetch registry: ${response.statusText}`));
27
+ }
28
+ const registry = (yield* Effect.tryPromise({
29
+ try: () => response.json(),
30
+ catch: (err) => new Error(`Failed to parse registry json: ${err}`),
31
+ }));
32
+ const components = registry.items.filter((item) => item.type === "registry:ui");
33
+ if (components.length === 0) {
34
+ yield* Console.log("⚠️ No components found in the registry.");
35
+ return;
36
+ }
37
+ yield* Console.log("\nAvailable components:");
38
+ for (const component of components) {
39
+ yield* Console.log(`- ${component.name}: ${component.description}`);
40
+ }
41
+ if (Option.isSome(framework)) {
42
+ yield* Console.log(`\nFiltered for framework: ${framework.value} (Note: Registry index lists generic components, installation handles framework specifics)`);
43
+ }
44
+ }));
45
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/env node
2
+ import * as Command from "@effect/cli/Command";
3
+ import * as NodeContext from "@effect/platform-node/NodeContext";
4
+ import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
5
+ import * as NodeHttpClient from "@effect/platform-node/NodeHttpClient";
6
+ import * as Console from "effect/Console";
7
+ import * as Effect from "effect/Effect";
8
+ import { addCommand } from "./commands/add";
9
+ import { initCommand } from "./commands/init";
10
+ import { listCommand } from "./commands/list";
11
+ // Main CLI command
12
+ const arkitectUiCommand = Command.make("arkitect-ui", {}, () => Console.log("🚀 arkitect-ui CLI - Use --help to see available commands")).pipe(Command.withSubcommands([addCommand, initCommand, listCommand]));
13
+ // Run the CLI
14
+ const cli = Command.run(arkitectUiCommand, {
15
+ name: "arkitect-ui CLI",
16
+ version: "0.1.0",
17
+ });
18
+ cli(process.argv).pipe(Effect.provide(NodeContext.layer), Effect.provide(NodeHttpClient.layer), NodeRuntime.runMain);
19
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,OAAO,MAAM,qBAAqB,CAAA;AAC9C,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,WAAW,MAAM,mCAAmC,CAAA;AAChE,OAAO,KAAK,cAAc,MAAM,sCAAsC,CAAA;AACtE,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,mBAAmB;AACnB,MAAM,iBAAiB,GAAG,OAAO,CAAC,IAAI,CACpC,aAAa,EACb,EAAE,EACF,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,2DAA2D,CAAC,CAC/E,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;AAEvE,cAAc;AACd,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE;IACzC,IAAI,EAAE,iBAAiB;IACvB,OAAO,EAAE,OAAO;CACjB,CAAC,CAAA;AAEF,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CACpB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EACjC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EACpC,WAAW,CAAC,OAAO,CACpB,CAAA"}
@@ -0,0 +1,116 @@
1
+ import * as Schema from "effect/Schema";
2
+ declare const ComponentsConfig_base: Schema.Class<ComponentsConfig, {
3
+ $schema: typeof Schema.String;
4
+ style: Schema.Literal<["default", "new-york", "radix-vega", "radix-nova", "radix-maia", "radix-lyra", "radix-mira", "base-vega", "base-nova", "base-maia", "base-lyra", "base-mira"]>;
5
+ rsc: typeof Schema.Boolean;
6
+ tsx: Schema.optional<typeof Schema.Boolean>;
7
+ tailwind: Schema.Struct<{
8
+ config: typeof Schema.String;
9
+ css: typeof Schema.String;
10
+ baseColor: typeof Schema.String;
11
+ cssVariables: typeof Schema.Boolean;
12
+ prefix: Schema.optional<typeof Schema.String>;
13
+ }>;
14
+ aliases: Schema.Struct<{
15
+ utils: typeof Schema.String;
16
+ components: typeof Schema.String;
17
+ ui: Schema.optional<typeof Schema.String>;
18
+ lib: Schema.optional<typeof Schema.String>;
19
+ hooks: Schema.optional<typeof Schema.String>;
20
+ }>;
21
+ iconLibrary: Schema.optional<typeof Schema.String>;
22
+ menuColor: Schema.optional<Schema.Literal<["default", "inverted"]>>;
23
+ menuAccent: Schema.optional<Schema.Literal<["subtle", "bold"]>>;
24
+ rtl: Schema.optional<typeof Schema.Boolean>;
25
+ registries: Schema.optional<Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.Struct<{
26
+ url: typeof Schema.String;
27
+ params: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
28
+ headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
29
+ }>]>>>;
30
+ arkitect: Schema.optional<Schema.Struct<{
31
+ framework: Schema.Literal<["react", "solid"]>;
32
+ }>>;
33
+ }, Schema.Struct.Encoded<{
34
+ $schema: typeof Schema.String;
35
+ style: Schema.Literal<["default", "new-york", "radix-vega", "radix-nova", "radix-maia", "radix-lyra", "radix-mira", "base-vega", "base-nova", "base-maia", "base-lyra", "base-mira"]>;
36
+ rsc: typeof Schema.Boolean;
37
+ tsx: Schema.optional<typeof Schema.Boolean>;
38
+ tailwind: Schema.Struct<{
39
+ config: typeof Schema.String;
40
+ css: typeof Schema.String;
41
+ baseColor: typeof Schema.String;
42
+ cssVariables: typeof Schema.Boolean;
43
+ prefix: Schema.optional<typeof Schema.String>;
44
+ }>;
45
+ aliases: Schema.Struct<{
46
+ utils: typeof Schema.String;
47
+ components: typeof Schema.String;
48
+ ui: Schema.optional<typeof Schema.String>;
49
+ lib: Schema.optional<typeof Schema.String>;
50
+ hooks: Schema.optional<typeof Schema.String>;
51
+ }>;
52
+ iconLibrary: Schema.optional<typeof Schema.String>;
53
+ menuColor: Schema.optional<Schema.Literal<["default", "inverted"]>>;
54
+ menuAccent: Schema.optional<Schema.Literal<["subtle", "bold"]>>;
55
+ rtl: Schema.optional<typeof Schema.Boolean>;
56
+ registries: Schema.optional<Schema.Record$<typeof Schema.String, Schema.Union<[typeof Schema.String, Schema.Struct<{
57
+ url: typeof Schema.String;
58
+ params: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
59
+ headers: Schema.optional<Schema.Record$<typeof Schema.String, typeof Schema.String>>;
60
+ }>]>>>;
61
+ arkitect: Schema.optional<Schema.Struct<{
62
+ framework: Schema.Literal<["react", "solid"]>;
63
+ }>>;
64
+ }>, never, {
65
+ readonly $schema: string;
66
+ } & {
67
+ readonly rsc: boolean;
68
+ } & {
69
+ readonly style: "default" | "new-york" | "radix-vega" | "radix-nova" | "radix-maia" | "radix-lyra" | "radix-mira" | "base-vega" | "base-nova" | "base-maia" | "base-lyra" | "base-mira";
70
+ } & {
71
+ readonly tsx?: boolean | undefined;
72
+ } & {
73
+ readonly tailwind: {
74
+ readonly config: string;
75
+ readonly css: string;
76
+ readonly baseColor: string;
77
+ readonly cssVariables: boolean;
78
+ readonly prefix?: string | undefined;
79
+ };
80
+ } & {
81
+ readonly aliases: {
82
+ readonly utils: string;
83
+ readonly components: string;
84
+ readonly ui?: string | undefined;
85
+ readonly lib?: string | undefined;
86
+ readonly hooks?: string | undefined;
87
+ };
88
+ } & {
89
+ readonly iconLibrary?: string | undefined;
90
+ } & {
91
+ readonly menuColor?: "default" | "inverted" | undefined;
92
+ } & {
93
+ readonly menuAccent?: "subtle" | "bold" | undefined;
94
+ } & {
95
+ readonly rtl?: boolean | undefined;
96
+ } & {
97
+ readonly registries?: {
98
+ readonly [x: string]: string | {
99
+ readonly url: string;
100
+ readonly params?: {
101
+ readonly [x: string]: string;
102
+ } | undefined;
103
+ readonly headers?: {
104
+ readonly [x: string]: string;
105
+ } | undefined;
106
+ };
107
+ } | undefined;
108
+ } & {
109
+ readonly arkitect?: {
110
+ readonly framework: "react" | "solid";
111
+ } | undefined;
112
+ }, {}, {}>;
113
+ export declare class ComponentsConfig extends ComponentsConfig_base {
114
+ }
115
+ export {};
116
+ //# sourceMappingURL=components-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-config.d.ts","sourceRoot":"","sources":["../../../src/schemas/components-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvC,qBAAa,gBAAiB,SAAQ,qBA4DpC;CAAG"}
@@ -0,0 +1,38 @@
1
+ import * as Schema from "effect/Schema";
2
+ export class ComponentsConfig extends Schema.Class("ComponentsConfig")({
3
+ $schema: Schema.String,
4
+ style: Schema.Literal("default", "new-york", "radix-vega", "radix-nova", "radix-maia", "radix-lyra", "radix-mira", "base-vega", "base-nova", "base-maia", "base-lyra", "base-mira"),
5
+ rsc: Schema.Boolean,
6
+ tsx: Schema.optional(Schema.Boolean),
7
+ tailwind: Schema.Struct({
8
+ config: Schema.String,
9
+ css: Schema.String,
10
+ baseColor: Schema.String,
11
+ cssVariables: Schema.Boolean,
12
+ prefix: Schema.optional(Schema.String),
13
+ }),
14
+ aliases: Schema.Struct({
15
+ utils: Schema.String,
16
+ components: Schema.String,
17
+ ui: Schema.optional(Schema.String),
18
+ lib: Schema.optional(Schema.String),
19
+ hooks: Schema.optional(Schema.String),
20
+ }),
21
+ iconLibrary: Schema.optional(Schema.String),
22
+ menuColor: Schema.optional(Schema.Literal("default", "inverted")),
23
+ menuAccent: Schema.optional(Schema.Literal("subtle", "bold")),
24
+ rtl: Schema.optional(Schema.Boolean),
25
+ registries: Schema.optional(Schema.Record({
26
+ key: Schema.String,
27
+ value: Schema.Union(Schema.String, Schema.Struct({
28
+ url: Schema.String,
29
+ params: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.String })),
30
+ headers: Schema.optional(Schema.Record({ key: Schema.String, value: Schema.String })),
31
+ })),
32
+ })),
33
+ arkitect: Schema.optional(Schema.Struct({
34
+ framework: Schema.Literal("react", "solid"),
35
+ })),
36
+ }) {
37
+ }
38
+ //# sourceMappingURL=components-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"components-config.js","sourceRoot":"","sources":["../../../src/schemas/components-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,KAAK,CAChD,kBAAkB,CACnB,CAAC;IACA,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,OAAO,CACnB,SAAS,EACT,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,EACX,WAAW,CACZ;IACD,GAAG,EAAE,MAAM,CAAC,OAAO;IACnB,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,SAAS,EAAE,MAAM,CAAC,MAAM;QACxB,YAAY,EAAE,MAAM,CAAC,OAAO;QAC5B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KACvC,CAAC;IACF,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC,MAAM;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;KACtC,CAAC;IACF,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACjE,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC7D,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,QAAQ,CACzB,MAAM,CAAC,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC,MAAM;QAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CACjB,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,MAAM,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC,MAAM;YAClB,MAAM,EAAE,MAAM,CAAC,QAAQ,CACrB,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAC5D;YACD,OAAO,EAAE,MAAM,CAAC,QAAQ,CACtB,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAC5D;SACF,CAAC,CACH;KACF,CAAC,CACH;IACD,QAAQ,EAAE,MAAM,CAAC,QAAQ,CACvB,MAAM,CAAC,MAAM,CAAC;QACZ,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC;KAC5C,CAAC,CACH;CACF,CAAC;CAAG"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@arkitect-ui/cli",
3
+ "version": "0.2.1",
4
+ "description": "CLI tool for creating Effect-TS monorepos and managing components",
5
+ "type": "module",
6
+ "bin": {
7
+ "arkitect-ui": "./dist/src/main.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "templates",
12
+ "registry"
13
+ ],
14
+ "dependencies": {
15
+ "@effect/cli": "0.73.2",
16
+ "@effect/platform": "0.94.0",
17
+ "@effect/platform-node": "0.104.1",
18
+ "chalk": "^5.3.0",
19
+ "effect": "3.19.16",
20
+ "handlebars": "^4.7.8",
21
+ "tar": "^7.4.3"
22
+ },
23
+ "devDependencies": {
24
+ "@types/handlebars": "^4.1.0",
25
+ "@types/node": "20.19.25",
26
+ "@types/tar": "^6.1.13",
27
+ "@effect/vitest": "0.27.0",
28
+ "typescript": "5.9.3"
29
+ },
30
+ "keywords": [
31
+ "effect-ts",
32
+ "cli",
33
+ "monorepo",
34
+ "scaffold",
35
+ "template",
36
+ "generator"
37
+ ],
38
+ "author": "Andres Jimenez",
39
+ "license": "MIT",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "https://github.com/devx-op/arkitect-ui.git",
43
+ "directory": "apps/cli"
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ }
48
+ }