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 CHANGED
@@ -1,41 +1,55 @@
1
- # Pittaya CLI
1
+ # Pittaya UI
2
2
 
3
- CLI to add Pittaya UI components to your project.
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
- See the [full documentation](https://github.com/pittaya-ui/cli#readme) for more information.
9
+ A CLI for adding components to your project.
6
10
 
7
- ## Quick Start
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@latest init
11
- npx pittaya@latest add button
18
+ npx pittaya init
12
19
  ```
13
20
 
14
- ### Local Setup
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
- # 1. Clone the repository
18
- git clone git@github.com:pittaya-ui/cli.git
19
- cd cli
28
+ npx pittaya add [component]
29
+ ```
20
30
 
21
- # 2. Install dependencies
22
- npm install
31
+ ### Example
23
32
 
24
- # 3. Build the CLI
25
- cd packages/cli
26
- npm run build
33
+ ```bash
34
+ npx pittaya add orbit-images
35
+ ```
27
36
 
28
- # 4. Link to test
29
- npm link
37
+ You can also run the command without any arguments to view a list of all available components:
30
38
 
31
- # 5. Test in another project
32
- cd /path/to/test-project
33
- pittaya init
34
- pittaya add button
39
+ ```bash
40
+ npx pittaya add
35
41
  ```
36
42
 
37
- ## Links
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
- - [Documentation](https://pittaya-ui.vercel.app)
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.4",
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": "SEE LICENSE IN LICENSE",
26
+ "license": "MIT",
27
27
  "repository": {
28
28
  "type": "git",
29
29
  "url": "git+https://github.com/pittaya-ui/ui.git",