pittaya 0.0.4 → 0.0.5
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 +38 -24
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,41 +1,55 @@
|
|
|
1
|
-
# Pittaya
|
|
1
|
+
# Pittaya UI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<div>
|
|
4
|
+
<img src="https://img.shields.io/npm/dy/pittaya" alt="npm downloads" />
|
|
5
|
+
<img src="https://img.shields.io/npm/v/pittaya" alt="npm version" />
|
|
6
|
+
<img src="https://img.shields.io/github/license/pittaya-ui/ui" alt="license" />
|
|
7
|
+
</div>
|
|
4
8
|
|
|
5
|
-
|
|
9
|
+
A CLI for adding components to your project.
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
Usage
|
|
12
|
+
|
|
13
|
+
Use the `init` command to initialize dependencies for a new project.
|
|
14
|
+
|
|
15
|
+
The `init` command installs dependencies, adds the `cn` util, configures `tailwind.config.js`, and CSS variables for the project.
|
|
8
16
|
|
|
9
17
|
```bash
|
|
10
|
-
npx pittaya
|
|
11
|
-
npx pittaya@latest add button
|
|
18
|
+
npx pittaya init
|
|
12
19
|
```
|
|
13
20
|
|
|
14
|
-
|
|
21
|
+
## add
|
|
22
|
+
|
|
23
|
+
Use the `add` command to add components to your project.
|
|
24
|
+
|
|
25
|
+
The `add` command adds a component to your project and installs all required dependencies.
|
|
15
26
|
|
|
16
27
|
```bash
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
cd cli
|
|
28
|
+
npx pittaya add [component]
|
|
29
|
+
```
|
|
20
30
|
|
|
21
|
-
|
|
22
|
-
npm install
|
|
31
|
+
### Example
|
|
23
32
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
33
|
+
```bash
|
|
34
|
+
npx pittaya add orbit-images
|
|
35
|
+
```
|
|
27
36
|
|
|
28
|
-
|
|
29
|
-
npm link
|
|
37
|
+
You can also run the command without any arguments to view a list of all available components:
|
|
30
38
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
pittaya init
|
|
34
|
-
pittaya add button
|
|
39
|
+
```bash
|
|
40
|
+
npx pittaya add
|
|
35
41
|
```
|
|
36
42
|
|
|
37
|
-
##
|
|
43
|
+
## Documentation
|
|
44
|
+
|
|
45
|
+
Visit https://pittaya-ui.vercel.app to view the documentation.
|
|
46
|
+
|
|
47
|
+
## Contributors
|
|
48
|
+
|
|
49
|
+
<a href="https://github.com/pittaya-ui/ui-kit/graphs/contributors">
|
|
50
|
+
<img src="https://contrib.rocks/image?repo=pittaya-ui/ui-kit" />
|
|
51
|
+
</a>
|
|
38
52
|
|
|
39
|
-
|
|
40
|
-
- [GitHub](https://github.com/pittaya-ui/cli)
|
|
53
|
+
## License
|
|
41
54
|
|
|
55
|
+
Licensed under the [MIT license](https://github.com/pittaya-ui/cli/blob/main/LICENSE.md).
|
package/dist/index.js
CHANGED
|
@@ -182,7 +182,27 @@ Adding ${components.length} component(s)...
|
|
|
182
182
|
}
|
|
183
183
|
console.log(chalk.green("\n\u2705 Components added successfully!\n"));
|
|
184
184
|
}
|
|
185
|
+
async function isComponentInstalled(name, config) {
|
|
186
|
+
try {
|
|
187
|
+
const component = await getRegistryComponent(name);
|
|
188
|
+
if (!component) return false;
|
|
189
|
+
for (const file of component.files) {
|
|
190
|
+
const targetPath = resolveTargetPath(file.name, component.type, config);
|
|
191
|
+
const filePath = path2.join(process.cwd(), targetPath);
|
|
192
|
+
const exists = await fs2.access(filePath).then(() => true).catch(() => false);
|
|
193
|
+
if (!exists) return false;
|
|
194
|
+
}
|
|
195
|
+
return true;
|
|
196
|
+
} catch {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
185
200
|
async function addComponent(name, config, options) {
|
|
201
|
+
const alreadyInstalled = await isComponentInstalled(name, config);
|
|
202
|
+
if (alreadyInstalled && !options.overwrite) {
|
|
203
|
+
console.log(chalk.dim(` \u23ED\uFE0F ${name} already installed, skipping...`));
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
186
206
|
const spinner = ora(`Installing ${chalk.bold(name)}...`).start();
|
|
187
207
|
try {
|
|
188
208
|
const component = await getRegistryComponent(name);
|
|
@@ -232,10 +252,14 @@ async function addComponent(name, config, options) {
|
|
|
232
252
|
}
|
|
233
253
|
}
|
|
234
254
|
if (component.registryDependencies && component.registryDependencies.length > 0) {
|
|
255
|
+
spinner.stop();
|
|
256
|
+
console.log(chalk.dim(`
|
|
257
|
+
\u{1F4E6} ${name} requires: ${component.registryDependencies.join(", ")}`));
|
|
235
258
|
for (const dep of component.registryDependencies) {
|
|
236
|
-
spinner.text = `Installing dependency ${dep}...`;
|
|
237
259
|
await addComponent(dep, config, { ...options, yes: true });
|
|
238
260
|
}
|
|
261
|
+
console.log();
|
|
262
|
+
spinner.start(`Installing ${chalk.bold(name)}...`);
|
|
239
263
|
}
|
|
240
264
|
for (const file of component.files) {
|
|
241
265
|
const targetPath = resolveTargetPath(file.name, component.type, config);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/commands/add.ts","../src/utils/registry.ts","../src/utils/transformer.ts","../src/utils/package-manager.ts","../src/commands/init.ts","../src/commands/credits.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport { add } from \"./commands/add.js\";\nimport { init } from \"./commands/init.js\";\nimport { credits } from \"./commands/credits.js\";\n\nconst program = new Command();\n\nprogram\n .name(\"pittaya\")\n .description(\"Add Pittaya UI components to your project\")\n .version(\"0.0.1\");\n\nprogram\n .command(\"init\")\n .description(\"Initialize Pittaya UI in your project\")\n .option(\"-y, --yes\", \"Skip confirmations and use default values\")\n .action(init);\n\nprogram\n .command(\"add\")\n .description(\"Add a component to your project\")\n .argument(\"[components...]\", \"Component names to add\")\n .option(\"-y, --yes\", \"Skip confirmations and overwrite existing files\")\n .option(\"-o, --overwrite\", \"Overwrite existing files\")\n .option(\"-a, --all\", \"Add all available components\")\n .option(\"--add-missing-deps\", \"Automatically install missing dependencies\")\n .action(add);\n\nprogram\n .command(\"credits\")\n .description(\"Show Pittaya UI creators\")\n .action(credits);\n\nprogram.parse();\n\n","import chalk from \"chalk\";\nimport ora from \"ora\";\nimport prompts from \"prompts\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport { execa } from \"execa\";\nimport { fetchRegistry, getRegistryComponent } from \"../utils/registry.js\";\nimport { transformImports } from \"../utils/transformer.js\";\nimport { detectPackageManager, checkMissingDependencies } from \"../utils/package-manager.js\";\nimport { IAddOptions } from \"../interfaces/IAddOptions\";\nimport { IConfig } from \"../interfaces/IConfig\";\nimport { IRegistryComponent } from \"../interfaces/IRegistryComponent\";\n\nexport async function add(components: string[], options: IAddOptions) {\n const cwd = process.cwd();\n const componentsJsonPath = path.join(cwd, \"components.json\");\n\n let config: IConfig;\n try {\n const configContent = await fs.readFile(componentsJsonPath, \"utf-8\");\n config = JSON.parse(configContent);\n } catch (error) {\n console.log(chalk.red(\"\\n❌ components.json not found.\\n\"));\n console.log(\n chalk.dim(`Run ${chalk.bold(\"npx pittaya init\")} first.\\n`)\n );\n return;\n }\n\n const spinner = ora(\"Fetching available components...\").start();\n let registry;\n try {\n registry = await fetchRegistry();\n spinner.succeed(\"Registry loaded!\");\n } catch (error) {\n spinner.fail(\"Error loading registry\");\n console.error(error);\n return;\n }\n\n if (options.all) {\n components = registry.components\n .filter((comp: any) => comp.type === \"registry:ui\")\n .map((comp: any) => comp.name);\n }\n\n if (components.length === 0) {\n const availableComponents = registry.components\n .filter((comp: any) => comp.type === \"registry:ui\")\n .map((comp: any) => ({\n title: `${comp.name}${comp.description ? ` - ${comp.description}` : \"\"}`,\n value: comp.name,\n }));\n\n const { selected } = await prompts({\n type: \"multiselect\",\n name: \"selected\",\n message: \"Select components to add:\",\n choices: availableComponents,\n min: 1,\n });\n\n if (!selected || selected.length === 0) {\n console.log(chalk.yellow(\"\\n❌ No components selected.\\n\"));\n return;\n }\n\n components = selected;\n }\n\n console.log(\n chalk.dim(`\\nAdding ${components.length} component(s)...\\n`)\n );\n\n for (const componentName of components) {\n await addComponent(componentName, config, options);\n }\n\n console.log(chalk.green(\"\\n✅ Components added successfully!\\n\"));\n}\n\nasync function addComponent(\n name: string,\n config: IConfig,\n options: IAddOptions\n) {\n const spinner = ora(`Installing ${chalk.bold(name)}...`).start();\n\n try {\n const component: IRegistryComponent = await getRegistryComponent(name);\n\n if (!component) {\n spinner.fail(`Component \"${name}\" not found in registry.`);\n return;\n }\n\n const packageManager = await detectPackageManager();\n\n if (component.dependencies && component.dependencies.length > 0) {\n const missingDeps = await checkMissingDependencies(component.dependencies);\n\n if (missingDeps.length > 0) {\n spinner.stop();\n\n console.log(chalk.yellow(`\\n⚠️ ${name} requires the following dependencies:\\n`));\n missingDeps.forEach(dep => {\n console.log(chalk.dim(` • ${dep}`));\n });\n console.log();\n\n // If --add-missing-deps was passed, install automatically\n if (options.addMissingDeps) {\n console.log(chalk.dim(\"Installing dependencies automatically...\\n\"));\n } else {\n const { install } = await prompts({\n type: \"confirm\",\n name: \"install\",\n message: \"Do you want to install the dependencies now?\",\n initial: true,\n });\n\n if (!install) {\n console.log(chalk.yellow(\"\\n⚠️ Component not installed. Install the dependencies manually and try again.\\n\"));\n return;\n }\n }\n\n spinner.start(`Installing dependencies for ${name}...`);\n\n try {\n await execa(packageManager, [\n packageManager === \"yarn\" ? \"add\" : \"install\",\n ...missingDeps,\n ]);\n spinner.succeed(`Dependencies installed!`);\n spinner.start(`Installing ${chalk.bold(name)}...`);\n } catch (error) {\n spinner.fail(`Error installing dependencies`);\n console.error(error);\n return;\n }\n }\n }\n\n if (component.registryDependencies && component.registryDependencies.length > 0) {\n for (const dep of component.registryDependencies) {\n spinner.text = `Installing dependency ${dep}...`;\n await addComponent(dep, config, { ...options, yes: true });\n }\n }\n\n for (const file of component.files) {\n const targetPath = resolveTargetPath(file.name, component.type, config);\n const filePath = path.join(process.cwd(), targetPath);\n\n const exists = await fs\n .access(filePath)\n .then(() => true)\n .catch(() => false);\n\n if (exists && !options.overwrite && !options.yes) {\n spinner.stop();\n const { overwrite } = await prompts({\n type: \"confirm\",\n name: \"overwrite\",\n message: `${targetPath} already exists. Overwrite?`,\n initial: false,\n });\n\n if (!overwrite) {\n spinner.warn(`Skipping ${targetPath}`);\n continue;\n }\n spinner.start();\n }\n\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n\n const content = transformImports(file.content, config);\n\n await fs.writeFile(filePath, content, \"utf-8\");\n }\n\n spinner.succeed(`${chalk.bold(name)} installed successfully!`);\n } catch (error) {\n spinner.fail(`Error installing ${name}`);\n console.error(error);\n }\n}\n\nfunction resolveTargetPath(\n fileName: string,\n type: string,\n config: IConfig\n): string {\n if (type === \"registry:ui\") {\n return path.join(\n config.aliases.ui.replace(\"@/\", \"src/\"),\n fileName\n );\n }\n\n if (type === \"registry:lib\") {\n return path.join(\n config.aliases.lib.replace(\"@/\", \"src/\"),\n fileName\n );\n }\n\n if (type === \"registry:hook\") {\n return path.join(\n config.aliases.hooks.replace(\"@/\", \"src/\"),\n fileName\n );\n }\n\n return fileName;\n}\n\n","import fetch from \"node-fetch\";\r\nimport { IRegistryComponent } from \"../interfaces/IRegistryComponent\";\r\n\r\nconst REGISTRY_BASE_URL = \"https://raw.githubusercontent.com/pittaya-ui/cli/main/registry\";\r\n\r\n\r\nexport async function fetchRegistry(): Promise<any> {\r\n try {\r\n const response = await fetch(`${REGISTRY_BASE_URL}/index.json`);\r\n if (!response.ok) {\r\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\r\n }\r\n return await response.json();\r\n } catch (error) {\r\n console.error(\"Error fetching registry:\", error);\r\n throw new Error(\"Unable to load the registry of components\");\r\n }\r\n}\r\n\r\nexport async function getRegistryComponent(name: string): Promise<IRegistryComponent> {\r\n try {\r\n const response = await fetch(\r\n `${REGISTRY_BASE_URL}/components/${name}.json`\r\n );\r\n\r\n if (!response.ok) {\r\n throw new Error(`Component \"${name}\" not found in registry`);\r\n }\r\n\r\n return await response.json() as IRegistryComponent;\r\n } catch (error: any) {\r\n throw new Error(`Error loading component \"${name}\": ${error.message}`);\r\n }\r\n}\r\n\r\nexport function setRegistryUrl(url: string) {\r\n process.env.PITTAYA_REGISTRY_URL = url;\r\n}\r\n\r\n","\r\n\r\nimport { IConfig } from \"../interfaces/IConfig\";\r\n\r\nexport function transformImports(content: string, config: IConfig): string {\r\n let transformed = content;\r\n\r\n const aliasMap: Record<string, string> = {\r\n \"@/components/ui\": config.aliases.ui,\r\n \"@/components\": config.aliases.components,\r\n \"@/lib/utils\": config.aliases.utils,\r\n \"@/lib\": config.aliases.lib,\r\n \"@/hooks\": config.aliases.hooks,\r\n };\r\n\r\n const sortedAliases = Object.entries(aliasMap).sort(\r\n ([a], [b]) => b.length - a.length\r\n );\r\n\r\n for (const [from, to] of sortedAliases) {\r\n if (from !== to) {\r\n transformed = transformed.replace(\r\n new RegExp(`from [\"']${escapeRegex(from)}`, \"g\"),\r\n `from \"${to}`\r\n );\r\n transformed = transformed.replace(\r\n new RegExp(`import [\"']${escapeRegex(from)}`, \"g\"),\r\n `import \"${to}`\r\n );\r\n }\r\n }\r\n\r\n return transformed;\r\n}\r\n\r\nfunction escapeRegex(str: string): string {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n}\r\n\r\n","import fs from \"fs/promises\";\r\nimport path from \"path\";\r\n\r\nexport async function detectPackageManager(): Promise<string> {\r\n try {\r\n await fs.access(\"pnpm-lock.yaml\");\r\n return \"pnpm\";\r\n } catch {}\r\n\r\n try {\r\n await fs.access(\"yarn.lock\");\r\n return \"yarn\";\r\n } catch {}\r\n\r\n try {\r\n await fs.access(\"bun.lockb\");\r\n return \"bun\";\r\n } catch {}\r\n\r\n return \"npm\";\r\n}\r\n\r\nexport async function isPackageInstalled(packageName: string): Promise<boolean> {\r\n const cwd = process.cwd();\r\n\r\n try {\r\n const packageJsonPath = path.join(cwd, \"package.json\");\r\n const packageJson = JSON.parse(await fs.readFile(packageJsonPath, \"utf-8\"));\r\n\r\n const allDeps = {\r\n ...packageJson.dependencies,\r\n ...packageJson.devDependencies,\r\n };\r\n\r\n if (allDeps[packageName]) {\r\n return true;\r\n }\r\n } catch {}\r\n\r\n try {\r\n const packagePath = path.join(cwd, \"node_modules\", packageName);\r\n await fs.access(packagePath);\r\n return true;\r\n } catch {}\r\n\r\n return false;\r\n}\r\n\r\nexport async function checkMissingDependencies(\r\n dependencies: string[]\r\n): Promise<string[]> {\r\n const missing: string[] = [];\r\n\r\n for (const dep of dependencies) {\r\n const installed = await isPackageInstalled(dep);\r\n if (!installed) {\r\n missing.push(dep);\r\n }\r\n }\r\n\r\n return missing;\r\n}\r\n\r\n","import chalk from \"chalk\";\nimport ora from \"ora\";\nimport prompts from \"prompts\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport { execa } from \"execa\";\n\ninterface InitOptions {\n yes?: boolean;\n}\n\nexport async function init(options: InitOptions) {\n console.log(chalk.bold(\"\\nWelcome to Pittaya UI!\\n\"));\n\n const cwd = process.cwd();\n const componentsJsonPath = path.join(cwd, \"components.json\");\n\n const exists = await fs\n .access(componentsJsonPath)\n .then(() => true)\n .catch(() => false);\n\n if (exists && !options.yes) {\n const { overwrite } = await prompts({\n type: \"confirm\",\n name: \"overwrite\",\n message: \"components.json already exists. Do you want to overwrite it?\",\n initial: false,\n });\n\n if (!overwrite) {\n console.log(chalk.yellow(\"\\n❌ Operation cancelled.\\n\"));\n return;\n }\n }\n\n const config = options.yes\n ? getDefaultConfig()\n : await prompts([\n {\n type: \"select\",\n name: \"style\",\n message: \"Which style would you like to use?\",\n choices: [\n { title: \"New York\", value: \"new-york\" },\n { title: \"Default\", value: \"default\" },\n { title: \"Recife\", value: \"recife\" },\n ],\n },\n {\n type: \"text\",\n name: \"tailwindCss\",\n message: \"Where is your globals.css file?\",\n initial: \"src/app/globals.css\",\n },\n {\n type: \"confirm\",\n name: \"rsc\",\n message: \"Use React Server Components?\",\n initial: true,\n },\n {\n type: \"text\",\n name: \"componentsPath\",\n message: \"Path for components?\",\n initial: \"@/components\",\n },\n {\n type: \"text\",\n name: \"utilsPath\",\n message: \"Path for utils?\",\n initial: \"@/lib/utils\",\n },\n ]);\n\n if (!config.style && !options.yes) {\n console.log(chalk.yellow(\"\\n❌ Operation cancelled.\\n\"));\n return;\n }\n\n const componentsJson = {\n $schema: \"https://raw.githubusercontent.com/pittaya-ui/cli/main/registry/schema.json\",\n style: config.style || \"new-york\",\n rsc: config.rsc ?? true,\n tsx: true,\n tailwind: {\n config: \"tailwind.config.ts\",\n css: config.tailwindCss || \"src/app/globals.css\",\n baseColor: \"neutral\",\n cssVariables: true,\n prefix: \"\",\n },\n aliases: {\n components: config.componentsPath || \"@/components\",\n utils: config.utilsPath || \"@/lib/utils\",\n ui: `${config.componentsPath || \"@/components\"}/pittaya/ui`,\n lib: \"@/lib\",\n hooks: \"@/hooks\",\n },\n iconLibrary: \"lucide\",\n };\n\n const spinner = ora(\"Creating components.json...\").start();\n await fs.writeFile(\n componentsJsonPath,\n JSON.stringify(componentsJson, null, 2)\n );\n spinner.succeed(\"components.json created successfully!\");\n\n const packageManager = await detectPackageManager();\n\n const depsSpinner = ora(\"Installing base dependencies...\").start();\n try {\n await execa(packageManager, [\n packageManager === \"yarn\" ? \"add\" : \"install\",\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n ]);\n depsSpinner.succeed(\"Dependencies installed!\");\n } catch (error) {\n depsSpinner.fail(\"Error installing dependencies\");\n console.error(error);\n }\n\n console.log(chalk.green(\"\\n✅ Pittaya UI configured successfully!\\n\"));\n console.log(chalk.dim(\"Next steps:\"));\n console.log(\n chalk.dim(\n ` ${chalk.bold(\"npx pittaya add button\")} - Add a component`\n )\n );\n console.log(\n chalk.dim(\n ` ${chalk.bold(\"npx pittaya add --all\")} - Add all components\\n`\n )\n );\n}\n\nfunction getDefaultConfig() {\n return {\n style: \"new-york\",\n tailwindCss: \"src/app/globals.css\",\n rsc: true,\n componentsPath: \"@/components\",\n utilsPath: \"@/lib/utils\",\n };\n}\n\nasync function detectPackageManager(): Promise<string> {\n try {\n await fs.access(\"pnpm-lock.yaml\");\n return \"pnpm\";\n } catch {}\n\n try {\n await fs.access(\"yarn.lock\");\n return \"yarn\";\n } catch {}\n\n return \"npm\";\n}\n\n","import chalk from \"chalk\";\r\n\r\nexport async function credits() {\r\n console.log(chalk.bold(\"\\nPittaya UI - Creators\\n\"));\r\n\r\n console.log(chalk.cyan(\" • Marcos Bueno\"));\r\n console.log(chalk.cyan(\" • Lucas Ribeiro\"));\r\n console.log(chalk.cyan(\" • Jarbas Gouveia\"));\r\n\r\n console.log(chalk.dim(\"\\n Thank you for using Pittaya UI! ❤️\\n\"));\r\n}\r\n\r\n"],"mappings":"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","names":["path","fs","path","fs","chalk","ora","prompts","path","fs","execa","detectPackageManager","chalk"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/commands/add.ts","../src/utils/registry.ts","../src/utils/transformer.ts","../src/utils/package-manager.ts","../src/commands/init.ts","../src/commands/credits.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport { add } from \"./commands/add.js\";\nimport { init } from \"./commands/init.js\";\nimport { credits } from \"./commands/credits.js\";\n\nconst program = new Command();\n\nprogram\n .name(\"pittaya\")\n .description(\"Add Pittaya UI components to your project\")\n .version(\"0.0.1\");\n\nprogram\n .command(\"init\")\n .description(\"Initialize Pittaya UI in your project\")\n .option(\"-y, --yes\", \"Skip confirmations and use default values\")\n .action(init);\n\nprogram\n .command(\"add\")\n .description(\"Add a component to your project\")\n .argument(\"[components...]\", \"Component names to add\")\n .option(\"-y, --yes\", \"Skip confirmations and overwrite existing files\")\n .option(\"-o, --overwrite\", \"Overwrite existing files\")\n .option(\"-a, --all\", \"Add all available components\")\n .option(\"--add-missing-deps\", \"Automatically install missing dependencies\")\n .action(add);\n\nprogram\n .command(\"credits\")\n .description(\"Show Pittaya UI creators\")\n .action(credits);\n\nprogram.parse();\n\n","import chalk from \"chalk\";\nimport ora from \"ora\";\nimport prompts from \"prompts\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport { execa } from \"execa\";\nimport { fetchRegistry, getRegistryComponent } from \"../utils/registry.js\";\nimport { transformImports } from \"../utils/transformer.js\";\nimport { detectPackageManager, checkMissingDependencies } from \"../utils/package-manager.js\";\nimport { IAddOptions } from \"../interfaces/IAddOptions\";\nimport { IConfig } from \"../interfaces/IConfig\";\nimport { IRegistryComponent } from \"../interfaces/IRegistryComponent\";\n\nexport async function add(components: string[], options: IAddOptions) {\n const cwd = process.cwd();\n const componentsJsonPath = path.join(cwd, \"components.json\");\n\n let config: IConfig;\n try {\n const configContent = await fs.readFile(componentsJsonPath, \"utf-8\");\n config = JSON.parse(configContent);\n } catch (error) {\n console.log(chalk.red(\"\\n❌ components.json not found.\\n\"));\n console.log(\n chalk.dim(`Run ${chalk.bold(\"npx pittaya init\")} first.\\n`)\n );\n return;\n }\n\n const spinner = ora(\"Fetching available components...\").start();\n let registry;\n try {\n registry = await fetchRegistry();\n spinner.succeed(\"Registry loaded!\");\n } catch (error) {\n spinner.fail(\"Error loading registry\");\n console.error(error);\n return;\n }\n\n if (options.all) {\n components = registry.components\n .filter((comp: any) => comp.type === \"registry:ui\")\n .map((comp: any) => comp.name);\n }\n\n if (components.length === 0) {\n const availableComponents = registry.components\n .filter((comp: any) => comp.type === \"registry:ui\")\n .map((comp: any) => ({\n title: `${comp.name}${comp.description ? ` - ${comp.description}` : \"\"}`,\n value: comp.name,\n }));\n\n const { selected } = await prompts({\n type: \"multiselect\",\n name: \"selected\",\n message: \"Select components to add:\",\n choices: availableComponents,\n min: 1,\n });\n\n if (!selected || selected.length === 0) {\n console.log(chalk.yellow(\"\\n❌ No components selected.\\n\"));\n return;\n }\n\n components = selected;\n }\n\n console.log(\n chalk.dim(`\\nAdding ${components.length} component(s)...\\n`)\n );\n\n for (const componentName of components) {\n await addComponent(componentName, config, options);\n }\n\n console.log(chalk.green(\"\\n✅ Components added successfully!\\n\"));\n}\n\nasync function isComponentInstalled(\n name: string,\n config: IConfig\n): Promise<boolean> {\n try {\n const component: IRegistryComponent = await getRegistryComponent(name);\n if (!component) return false;\n\n for (const file of component.files) {\n const targetPath = resolveTargetPath(file.name, component.type, config);\n const filePath = path.join(process.cwd(), targetPath);\n\n const exists = await fs\n .access(filePath)\n .then(() => true)\n .catch(() => false);\n\n if (!exists) return false;\n }\n\n return true;\n } catch {\n return false;\n }\n}\n\nasync function addComponent(\n name: string,\n config: IConfig,\n options: IAddOptions\n) {\n const alreadyInstalled = await isComponentInstalled(name, config);\n if (alreadyInstalled && !options.overwrite) {\n console.log(chalk.dim(` ⏭️ ${name} already installed, skipping...`));\n return;\n }\n\n const spinner = ora(`Installing ${chalk.bold(name)}...`).start();\n\n try {\n const component: IRegistryComponent = await getRegistryComponent(name);\n\n if (!component) {\n spinner.fail(`Component \"${name}\" not found in registry.`);\n return;\n }\n\n const packageManager = await detectPackageManager();\n\n if (component.dependencies && component.dependencies.length > 0) {\n const missingDeps = await checkMissingDependencies(component.dependencies);\n\n if (missingDeps.length > 0) {\n spinner.stop();\n\n console.log(chalk.yellow(`\\n⚠️ ${name} requires the following dependencies:\\n`));\n missingDeps.forEach(dep => {\n console.log(chalk.dim(` • ${dep}`));\n });\n console.log();\n\n // If --add-missing-deps was passed, install automatically\n if (options.addMissingDeps) {\n console.log(chalk.dim(\"Installing dependencies automatically...\\n\"));\n } else {\n const { install } = await prompts({\n type: \"confirm\",\n name: \"install\",\n message: \"Do you want to install the dependencies now?\",\n initial: true,\n });\n\n if (!install) {\n console.log(chalk.yellow(\"\\n⚠️ Component not installed. Install the dependencies manually and try again.\\n\"));\n return;\n }\n }\n\n spinner.start(`Installing dependencies for ${name}...`);\n\n try {\n await execa(packageManager, [\n packageManager === \"yarn\" ? \"add\" : \"install\",\n ...missingDeps,\n ]);\n spinner.succeed(`Dependencies installed!`);\n spinner.start(`Installing ${chalk.bold(name)}...`);\n } catch (error) {\n spinner.fail(`Error installing dependencies`);\n console.error(error);\n return;\n }\n }\n }\n\n if (component.registryDependencies && component.registryDependencies.length > 0) {\n spinner.stop();\n console.log(chalk.dim(`\\n 📦 ${name} requires: ${component.registryDependencies.join(\", \")}`));\n\n for (const dep of component.registryDependencies) {\n await addComponent(dep, config, { ...options, yes: true });\n }\n\n console.log(); // Linha em branco\n spinner.start(`Installing ${chalk.bold(name)}...`);\n }\n\n for (const file of component.files) {\n const targetPath = resolveTargetPath(file.name, component.type, config);\n const filePath = path.join(process.cwd(), targetPath);\n\n const exists = await fs\n .access(filePath)\n .then(() => true)\n .catch(() => false);\n\n if (exists && !options.overwrite && !options.yes) {\n spinner.stop();\n const { overwrite } = await prompts({\n type: \"confirm\",\n name: \"overwrite\",\n message: `${targetPath} already exists. Overwrite?`,\n initial: false,\n });\n\n if (!overwrite) {\n spinner.warn(`Skipping ${targetPath}`);\n continue;\n }\n spinner.start();\n }\n\n await fs.mkdir(path.dirname(filePath), { recursive: true });\n\n const content = transformImports(file.content, config);\n\n await fs.writeFile(filePath, content, \"utf-8\");\n }\n\n spinner.succeed(`${chalk.bold(name)} installed successfully!`);\n } catch (error) {\n spinner.fail(`Error installing ${name}`);\n console.error(error);\n }\n}\n\nfunction resolveTargetPath(\n fileName: string,\n type: string,\n config: IConfig\n): string {\n if (type === \"registry:ui\") {\n return path.join(\n config.aliases.ui.replace(\"@/\", \"src/\"),\n fileName\n );\n }\n\n if (type === \"registry:lib\") {\n return path.join(\n config.aliases.lib.replace(\"@/\", \"src/\"),\n fileName\n );\n }\n\n if (type === \"registry:hook\") {\n return path.join(\n config.aliases.hooks.replace(\"@/\", \"src/\"),\n fileName\n );\n }\n\n return fileName;\n}\n\n","import fetch from \"node-fetch\";\r\nimport { IRegistryComponent } from \"../interfaces/IRegistryComponent\";\r\n\r\nconst REGISTRY_BASE_URL = \"https://raw.githubusercontent.com/pittaya-ui/cli/main/registry\";\r\n\r\n\r\nexport async function fetchRegistry(): Promise<any> {\r\n try {\r\n const response = await fetch(`${REGISTRY_BASE_URL}/index.json`);\r\n if (!response.ok) {\r\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\r\n }\r\n return await response.json();\r\n } catch (error) {\r\n console.error(\"Error fetching registry:\", error);\r\n throw new Error(\"Unable to load the registry of components\");\r\n }\r\n}\r\n\r\nexport async function getRegistryComponent(name: string): Promise<IRegistryComponent> {\r\n try {\r\n const response = await fetch(\r\n `${REGISTRY_BASE_URL}/components/${name}.json`\r\n );\r\n\r\n if (!response.ok) {\r\n throw new Error(`Component \"${name}\" not found in registry`);\r\n }\r\n\r\n return await response.json() as IRegistryComponent;\r\n } catch (error: any) {\r\n throw new Error(`Error loading component \"${name}\": ${error.message}`);\r\n }\r\n}\r\n\r\nexport function setRegistryUrl(url: string) {\r\n process.env.PITTAYA_REGISTRY_URL = url;\r\n}\r\n\r\n","\r\n\r\nimport { IConfig } from \"../interfaces/IConfig\";\r\n\r\nexport function transformImports(content: string, config: IConfig): string {\r\n let transformed = content;\r\n\r\n const aliasMap: Record<string, string> = {\r\n \"@/components/ui\": config.aliases.ui,\r\n \"@/components\": config.aliases.components,\r\n \"@/lib/utils\": config.aliases.utils,\r\n \"@/lib\": config.aliases.lib,\r\n \"@/hooks\": config.aliases.hooks,\r\n };\r\n\r\n const sortedAliases = Object.entries(aliasMap).sort(\r\n ([a], [b]) => b.length - a.length\r\n );\r\n\r\n for (const [from, to] of sortedAliases) {\r\n if (from !== to) {\r\n transformed = transformed.replace(\r\n new RegExp(`from [\"']${escapeRegex(from)}`, \"g\"),\r\n `from \"${to}`\r\n );\r\n transformed = transformed.replace(\r\n new RegExp(`import [\"']${escapeRegex(from)}`, \"g\"),\r\n `import \"${to}`\r\n );\r\n }\r\n }\r\n\r\n return transformed;\r\n}\r\n\r\nfunction escapeRegex(str: string): string {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\r\n}\r\n\r\n","import fs from \"fs/promises\";\r\nimport path from \"path\";\r\n\r\nexport async function detectPackageManager(): Promise<string> {\r\n try {\r\n await fs.access(\"pnpm-lock.yaml\");\r\n return \"pnpm\";\r\n } catch {}\r\n\r\n try {\r\n await fs.access(\"yarn.lock\");\r\n return \"yarn\";\r\n } catch {}\r\n\r\n try {\r\n await fs.access(\"bun.lockb\");\r\n return \"bun\";\r\n } catch {}\r\n\r\n return \"npm\";\r\n}\r\n\r\nexport async function isPackageInstalled(packageName: string): Promise<boolean> {\r\n const cwd = process.cwd();\r\n\r\n try {\r\n const packageJsonPath = path.join(cwd, \"package.json\");\r\n const packageJson = JSON.parse(await fs.readFile(packageJsonPath, \"utf-8\"));\r\n\r\n const allDeps = {\r\n ...packageJson.dependencies,\r\n ...packageJson.devDependencies,\r\n };\r\n\r\n if (allDeps[packageName]) {\r\n return true;\r\n }\r\n } catch {}\r\n\r\n try {\r\n const packagePath = path.join(cwd, \"node_modules\", packageName);\r\n await fs.access(packagePath);\r\n return true;\r\n } catch {}\r\n\r\n return false;\r\n}\r\n\r\nexport async function checkMissingDependencies(\r\n dependencies: string[]\r\n): Promise<string[]> {\r\n const missing: string[] = [];\r\n\r\n for (const dep of dependencies) {\r\n const installed = await isPackageInstalled(dep);\r\n if (!installed) {\r\n missing.push(dep);\r\n }\r\n }\r\n\r\n return missing;\r\n}\r\n\r\n","import chalk from \"chalk\";\nimport ora from \"ora\";\nimport prompts from \"prompts\";\nimport path from \"path\";\nimport fs from \"fs/promises\";\nimport { execa } from \"execa\";\n\ninterface InitOptions {\n yes?: boolean;\n}\n\nexport async function init(options: InitOptions) {\n console.log(chalk.bold(\"\\nWelcome to Pittaya UI!\\n\"));\n\n const cwd = process.cwd();\n const componentsJsonPath = path.join(cwd, \"components.json\");\n\n const exists = await fs\n .access(componentsJsonPath)\n .then(() => true)\n .catch(() => false);\n\n if (exists && !options.yes) {\n const { overwrite } = await prompts({\n type: \"confirm\",\n name: \"overwrite\",\n message: \"components.json already exists. Do you want to overwrite it?\",\n initial: false,\n });\n\n if (!overwrite) {\n console.log(chalk.yellow(\"\\n❌ Operation cancelled.\\n\"));\n return;\n }\n }\n\n const config = options.yes\n ? getDefaultConfig()\n : await prompts([\n {\n type: \"select\",\n name: \"style\",\n message: \"Which style would you like to use?\",\n choices: [\n { title: \"New York\", value: \"new-york\" },\n { title: \"Default\", value: \"default\" },\n { title: \"Recife\", value: \"recife\" },\n ],\n },\n {\n type: \"text\",\n name: \"tailwindCss\",\n message: \"Where is your globals.css file?\",\n initial: \"src/app/globals.css\",\n },\n {\n type: \"confirm\",\n name: \"rsc\",\n message: \"Use React Server Components?\",\n initial: true,\n },\n {\n type: \"text\",\n name: \"componentsPath\",\n message: \"Path for components?\",\n initial: \"@/components\",\n },\n {\n type: \"text\",\n name: \"utilsPath\",\n message: \"Path for utils?\",\n initial: \"@/lib/utils\",\n },\n ]);\n\n if (!config.style && !options.yes) {\n console.log(chalk.yellow(\"\\n❌ Operation cancelled.\\n\"));\n return;\n }\n\n const componentsJson = {\n $schema: \"https://raw.githubusercontent.com/pittaya-ui/cli/main/registry/schema.json\",\n style: config.style || \"new-york\",\n rsc: config.rsc ?? true,\n tsx: true,\n tailwind: {\n config: \"tailwind.config.ts\",\n css: config.tailwindCss || \"src/app/globals.css\",\n baseColor: \"neutral\",\n cssVariables: true,\n prefix: \"\",\n },\n aliases: {\n components: config.componentsPath || \"@/components\",\n utils: config.utilsPath || \"@/lib/utils\",\n ui: `${config.componentsPath || \"@/components\"}/pittaya/ui`,\n lib: \"@/lib\",\n hooks: \"@/hooks\",\n },\n iconLibrary: \"lucide\",\n };\n\n const spinner = ora(\"Creating components.json...\").start();\n await fs.writeFile(\n componentsJsonPath,\n JSON.stringify(componentsJson, null, 2)\n );\n spinner.succeed(\"components.json created successfully!\");\n\n const packageManager = await detectPackageManager();\n\n const depsSpinner = ora(\"Installing base dependencies...\").start();\n try {\n await execa(packageManager, [\n packageManager === \"yarn\" ? \"add\" : \"install\",\n \"class-variance-authority\",\n \"clsx\",\n \"tailwind-merge\",\n ]);\n depsSpinner.succeed(\"Dependencies installed!\");\n } catch (error) {\n depsSpinner.fail(\"Error installing dependencies\");\n console.error(error);\n }\n\n console.log(chalk.green(\"\\n✅ Pittaya UI configured successfully!\\n\"));\n console.log(chalk.dim(\"Next steps:\"));\n console.log(\n chalk.dim(\n ` ${chalk.bold(\"npx pittaya add button\")} - Add a component`\n )\n );\n console.log(\n chalk.dim(\n ` ${chalk.bold(\"npx pittaya add --all\")} - Add all components\\n`\n )\n );\n}\n\nfunction getDefaultConfig() {\n return {\n style: \"new-york\",\n tailwindCss: \"src/app/globals.css\",\n rsc: true,\n componentsPath: \"@/components\",\n utilsPath: \"@/lib/utils\",\n };\n}\n\nasync function detectPackageManager(): Promise<string> {\n try {\n await fs.access(\"pnpm-lock.yaml\");\n return \"pnpm\";\n } catch {}\n\n try {\n await fs.access(\"yarn.lock\");\n return \"yarn\";\n } catch {}\n\n return \"npm\";\n}\n\n","import chalk from \"chalk\";\r\n\r\nexport async function credits() {\r\n console.log(chalk.bold(\"\\nPittaya UI - Creators\\n\"));\r\n\r\n console.log(chalk.cyan(\" • Marcos Bueno\"));\r\n console.log(chalk.cyan(\" • Lucas Ribeiro\"));\r\n console.log(chalk.cyan(\" • Jarbas Gouveia\"));\r\n\r\n console.log(chalk.dim(\"\\n Thank you for using Pittaya UI! ❤️\\n\"));\r\n}\r\n\r\n"],"mappings":"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","names":["path","fs","path","fs","chalk","ora","prompts","path","fs","execa","detectPackageManager","chalk"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pittaya",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "CLI para adicionar componentes Pittaya UI ao seu projeto",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"nextjs"
|
|
24
24
|
],
|
|
25
25
|
"author": "Pittaya UI",
|
|
26
|
-
"license": "
|
|
26
|
+
"license": "MIT",
|
|
27
27
|
"repository": {
|
|
28
28
|
"type": "git",
|
|
29
29
|
"url": "git+https://github.com/pittaya-ui/ui.git",
|