@creative-tim/ui 0.1.0-beta.0 ā 0.2.0-beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -41,10 +41,11 @@ async function addComponent(name, cwd, opts) {
|
|
|
41
41
|
const data = await response.json();
|
|
42
42
|
spinner.text = `Installing ${pc.cyan(name)}...`;
|
|
43
43
|
for (const file of data.files) {
|
|
44
|
-
const
|
|
44
|
+
const installPath = file.target && file.target !== "" ? file.target : file.path;
|
|
45
|
+
const filePath = path.join(cwd, installPath);
|
|
45
46
|
const fileDir = path.dirname(filePath);
|
|
46
47
|
if (fs.existsSync(filePath) && !opts.overwrite && !opts.yes) {
|
|
47
|
-
spinner.warn(`File ${pc.dim(
|
|
48
|
+
spinner.warn(`File ${pc.dim(installPath)} already exists. Use --overwrite to replace.`);
|
|
48
49
|
continue;
|
|
49
50
|
}
|
|
50
51
|
await fs.ensureDir(fileDir);
|
|
@@ -119,7 +120,8 @@ var initCommand = new Command2().name("init").description("Initialize your proje
|
|
|
119
120
|
"utils": "@/lib/utils",
|
|
120
121
|
"ui": "@/components/ui",
|
|
121
122
|
"lib": "@/lib",
|
|
122
|
-
"hooks": "@/hooks"
|
|
123
|
+
"hooks": "@/hooks",
|
|
124
|
+
"creative-tim": "@/components/creative-tim"
|
|
123
125
|
},
|
|
124
126
|
"registry": "https://creative-tim.com/ui"
|
|
125
127
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/commands/add.ts","../src/commands/init.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\"\nimport pc from \"picocolors\"\nimport { addCommand } from \"./commands/add.js\"\nimport { initCommand } from \"./commands/init.js\"\nimport { readFileSync } from \"fs\"\nimport { fileURLToPath } from \"url\"\nimport { dirname, join } from \"path\"\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = dirname(__filename)\n\n// Read version from package.json\nlet packageVersion = \"0.1.0\"\ntry {\n const packageJsonPath = join(__dirname, \"../package.json\")\n const packageJsonContent = readFileSync(packageJsonPath, \"utf-8\")\n const packageJson = JSON.parse(packageJsonContent)\n packageVersion = packageJson.version\n} catch (error) {\n // Fallback to default version\n}\n\nasync function main() {\n const program = new Command()\n .name(\"creative-tim-ui\")\n .description(\"A CLI for adding Creative Tim UI components to your project\")\n .version(\n packageVersion,\n \"-v, --version\",\n \"display the version number\"\n )\n\n program\n .addCommand(initCommand)\n .addCommand(addCommand)\n\n program.parse()\n}\n\nmain().catch((error) => {\n console.error(pc.red(\"Error:\"), error.message)\n process.exit(1)\n})\n\n","import { Command } from \"commander\"\nimport pc from \"picocolors\"\nimport ora from \"ora\"\nimport path from \"path\"\nimport fs from \"fs-extra\"\nimport fetch from \"node-fetch\"\n\nconst REGISTRY_URL = \"https://creative-tim.com/ui/r\"\n\ninterface RegistryItem {\n name: string\n type: string\n files: Array<{\n path: string\n content: string\n type: string\n target?: string\n }>\n dependencies?: string[]\n registryDependencies?: string[]\n}\n\nexport const addCommand = new Command()\n .name(\"add\")\n .description(\"Add a component or block to your project\")\n .argument(\"[components...]\", \"The components to add\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .option(\"-o, --overwrite\", \"Overwrite existing files\")\n .option(\"--cwd <path>\", \"The working directory. Defaults to the current directory.\", process.cwd())\n .option(\"-p, --path <path>\", \"The path to add the component to\")\n .action(async (components: string[], opts) => {\n if (!components || components.length === 0) {\n console.error(pc.red(\"Error: Please specify at least one component to add.\"))\n console.log(pc.dim(\"\\nExample:\"))\n console.log(pc.dim(\" npx @creative-tim/ui add button\"))\n console.log(pc.dim(\" npx @creative-tim/ui add card button\"))\n console.log(pc.dim(\" npx @creative-tim/ui add software-purchase-01\"))\n process.exit(1)\n }\n\n const cwd = path.resolve(opts.cwd || process.cwd())\n\n console.log(pc.cyan(\"\\nš¦ Adding components to your project...\\n\"))\n\n for (const component of components) {\n await addComponent(component, cwd, opts)\n }\n\n console.log(pc.green(\"\\nā Components added successfully!\\n\"))\n })\n\nasync function addComponent(name: string, cwd: string, opts: any) {\n const spinner = ora(`Fetching ${pc.cyan(name)}...`).start()\n\n try {\n // Fetch component from registry\n const url = `${REGISTRY_URL}/${name}.json`\n const response = await fetch(url)\n\n if (!response.ok) {\n spinner.fail(`Component ${pc.cyan(name)} not found`)\n console.log(pc.dim(` Tried: ${url}`))\n return\n }\n\n const data = await response.json() as RegistryItem\n\n spinner.text = `Installing ${pc.cyan(name)}...`\n\n // Install files\n for (const file of data.files) {\n const filePath = path.join(cwd, file.path)\n const fileDir = path.dirname(filePath)\n\n // Check if file exists\n if (fs.existsSync(filePath) && !opts.overwrite && !opts.yes) {\n spinner.warn(`File ${pc.dim(file.path)} already exists. Use --overwrite to replace.`)\n continue\n }\n\n // Create directory if it doesn't exist\n await fs.ensureDir(fileDir)\n\n // Write file\n await fs.writeFile(filePath, file.content, \"utf-8\")\n }\n\n // Install npm dependencies\n if (data.dependencies && data.dependencies.length > 0) {\n spinner.text = `Installing dependencies for ${pc.cyan(name)}...`\n \n const deps = data.dependencies.join(\" \")\n const { execSync } = await import(\"child_process\")\n \n try {\n execSync(`npm install ${deps}`, { cwd, stdio: \"ignore\" })\n } catch (error) {\n spinner.warn(`Failed to install dependencies: ${deps}`)\n console.log(pc.dim(` Run manually: npm install ${deps}`))\n }\n }\n\n // Handle registry dependencies (other components)\n if (data.registryDependencies && data.registryDependencies.length > 0) {\n spinner.text = `Installing registry dependencies for ${pc.cyan(name)}...`\n \n for (const dep of data.registryDependencies) {\n await addComponent(dep, cwd, { ...opts, yes: true })\n }\n }\n\n spinner.succeed(`Added ${pc.cyan(name)}`)\n\n } catch (error: any) {\n spinner.fail(`Failed to add ${pc.cyan(name)}`)\n console.error(pc.red(` ${error.message}`))\n }\n}\n\n","import { Command } from \"commander\"\nimport pc from \"picocolors\"\nimport prompts from \"prompts\"\nimport { existsSync } from \"fs\"\nimport fs from \"fs-extra\"\nimport path from \"path\"\nimport ora from \"ora\"\n\nexport const initCommand = new Command()\n .name(\"init\")\n .description(\"Initialize your project with Creative Tim UI configuration\")\n .option(\"-y, --yes\", \"Skip prompts and use default values\")\n .option(\"--cwd <path>\", \"The working directory. Defaults to the current directory.\", process.cwd())\n .action(async (opts) => {\n const cwd = path.resolve(opts.cwd || process.cwd())\n \n console.log(pc.cyan(\"\\nāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\"))\n console.log(pc.cyan(\"ā Welcome to Creative Tim UI ā\"))\n console.log(pc.cyan(\"āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\\n\"))\n\n // Check if components.json exists\n const componentsJsonPath = path.resolve(cwd, \"components.json\")\n \n if (existsSync(componentsJsonPath) && !opts.yes) {\n const { overwrite } = await prompts({\n type: \"confirm\",\n name: \"overwrite\",\n message: \"components.json already exists. Overwrite?\",\n initial: false\n })\n\n if (!overwrite) {\n console.log(pc.yellow(\"Initialization cancelled.\"))\n return\n }\n }\n\n const spinner = ora(\"Initializing project...\").start()\n\n try {\n // Create components.json\n const config = {\n \"$schema\": \"https://ui.shadcn.com/schema.json\",\n \"style\": \"default\",\n \"rsc\": true,\n \"tsx\": true,\n \"tailwind\": {\n \"config\": \"tailwind.config.ts\",\n \"css\": \"app/globals.css\",\n \"baseColor\": \"slate\",\n \"cssVariables\": true,\n \"prefix\": \"\"\n },\n \"aliases\": {\n \"components\": \"@/components\",\n \"utils\": \"@/lib/utils\",\n \"ui\": \"@/components/ui\",\n \"lib\": \"@/lib\",\n \"hooks\": \"@/hooks\"\n },\n \"registry\": \"https://creative-tim.com/ui\"\n }\n\n await fs.writeJSON(componentsJsonPath, config, { spaces: 2 })\n\n spinner.succeed(\"Project initialized successfully!\")\n \n console.log(pc.green(\"\\nā Created components.json\"))\n console.log(pc.dim(\"\\nNext steps:\"))\n console.log(pc.dim(\" 1. Review your components.json\"))\n console.log(pc.dim(\" 2. Run: npx @creative-tim/ui add button\"))\n console.log(pc.dim(\" 3. Start using Creative Tim UI components!\\n\"))\n\n } catch (error) {\n spinner.fail(\"Failed to initialize project\")\n throw error\n }\n })\n\n"],"mappings":"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","names":["Command","pc","Command","pc","fs","path","ora","Command","pc"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/commands/add.ts","../src/commands/init.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\"\nimport pc from \"picocolors\"\nimport { addCommand } from \"./commands/add.js\"\nimport { initCommand } from \"./commands/init.js\"\nimport { readFileSync } from \"fs\"\nimport { fileURLToPath } from \"url\"\nimport { dirname, join } from \"path\"\n\nconst __filename = fileURLToPath(import.meta.url)\nconst __dirname = dirname(__filename)\n\n// Read version from package.json\nlet packageVersion = \"0.1.0\"\ntry {\n const packageJsonPath = join(__dirname, \"../package.json\")\n const packageJsonContent = readFileSync(packageJsonPath, \"utf-8\")\n const packageJson = JSON.parse(packageJsonContent)\n packageVersion = packageJson.version\n} catch (error) {\n // Fallback to default version\n}\n\nasync function main() {\n const program = new Command()\n .name(\"creative-tim-ui\")\n .description(\"A CLI for adding Creative Tim UI components to your project\")\n .version(\n packageVersion,\n \"-v, --version\",\n \"display the version number\"\n )\n\n program\n .addCommand(initCommand)\n .addCommand(addCommand)\n\n program.parse()\n}\n\nmain().catch((error) => {\n console.error(pc.red(\"Error:\"), error.message)\n process.exit(1)\n})\n\n","import { Command } from \"commander\"\nimport pc from \"picocolors\"\nimport ora from \"ora\"\nimport path from \"path\"\nimport fs from \"fs-extra\"\nimport fetch from \"node-fetch\"\n\nconst REGISTRY_URL = \"https://creative-tim.com/ui/r\"\n\ninterface RegistryItem {\n name: string\n type: string\n files: Array<{\n path: string\n content: string\n type: string\n target?: string\n }>\n dependencies?: string[]\n registryDependencies?: string[]\n}\n\nexport const addCommand = new Command()\n .name(\"add\")\n .description(\"Add a component or block to your project\")\n .argument(\"[components...]\", \"The components to add\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .option(\"-o, --overwrite\", \"Overwrite existing files\")\n .option(\"--cwd <path>\", \"The working directory. Defaults to the current directory.\", process.cwd())\n .option(\"-p, --path <path>\", \"The path to add the component to\")\n .action(async (components: string[], opts) => {\n if (!components || components.length === 0) {\n console.error(pc.red(\"Error: Please specify at least one component to add.\"))\n console.log(pc.dim(\"\\nExample:\"))\n console.log(pc.dim(\" npx @creative-tim/ui add button\"))\n console.log(pc.dim(\" npx @creative-tim/ui add card button\"))\n console.log(pc.dim(\" npx @creative-tim/ui add software-purchase-01\"))\n process.exit(1)\n }\n\n const cwd = path.resolve(opts.cwd || process.cwd())\n\n console.log(pc.cyan(\"\\nš¦ Adding components to your project...\\n\"))\n\n for (const component of components) {\n await addComponent(component, cwd, opts)\n }\n\n console.log(pc.green(\"\\nā Components added successfully!\\n\"))\n })\n\nasync function addComponent(name: string, cwd: string, opts: any) {\n const spinner = ora(`Fetching ${pc.cyan(name)}...`).start()\n\n try {\n // Fetch component from registry\n const url = `${REGISTRY_URL}/${name}.json`\n const response = await fetch(url)\n\n if (!response.ok) {\n spinner.fail(`Component ${pc.cyan(name)} not found`)\n console.log(pc.dim(` Tried: ${url}`))\n return\n }\n\n const data = await response.json() as RegistryItem\n\n spinner.text = `Installing ${pc.cyan(name)}...`\n\n // Install files\n for (const file of data.files) {\n // Use target path if available, otherwise use the path field\n const installPath = file.target && file.target !== \"\" ? file.target : file.path\n const filePath = path.join(cwd, installPath)\n const fileDir = path.dirname(filePath)\n\n // Check if file exists\n if (fs.existsSync(filePath) && !opts.overwrite && !opts.yes) {\n spinner.warn(`File ${pc.dim(installPath)} already exists. Use --overwrite to replace.`)\n continue\n }\n\n // Create directory if it doesn't exist\n await fs.ensureDir(fileDir)\n\n // Write file\n await fs.writeFile(filePath, file.content, \"utf-8\")\n }\n\n // Install npm dependencies\n if (data.dependencies && data.dependencies.length > 0) {\n spinner.text = `Installing dependencies for ${pc.cyan(name)}...`\n \n const deps = data.dependencies.join(\" \")\n const { execSync } = await import(\"child_process\")\n \n try {\n execSync(`npm install ${deps}`, { cwd, stdio: \"ignore\" })\n } catch (error) {\n spinner.warn(`Failed to install dependencies: ${deps}`)\n console.log(pc.dim(` Run manually: npm install ${deps}`))\n }\n }\n\n // Handle registry dependencies (other components)\n if (data.registryDependencies && data.registryDependencies.length > 0) {\n spinner.text = `Installing registry dependencies for ${pc.cyan(name)}...`\n \n for (const dep of data.registryDependencies) {\n await addComponent(dep, cwd, { ...opts, yes: true })\n }\n }\n\n spinner.succeed(`Added ${pc.cyan(name)}`)\n\n } catch (error: any) {\n spinner.fail(`Failed to add ${pc.cyan(name)}`)\n console.error(pc.red(` ${error.message}`))\n }\n}\n\n","import { Command } from \"commander\"\nimport pc from \"picocolors\"\nimport prompts from \"prompts\"\nimport { existsSync } from \"fs\"\nimport fs from \"fs-extra\"\nimport path from \"path\"\nimport ora from \"ora\"\n\nexport const initCommand = new Command()\n .name(\"init\")\n .description(\"Initialize your project with Creative Tim UI configuration\")\n .option(\"-y, --yes\", \"Skip prompts and use default values\")\n .option(\"--cwd <path>\", \"The working directory. Defaults to the current directory.\", process.cwd())\n .action(async (opts) => {\n const cwd = path.resolve(opts.cwd || process.cwd())\n \n console.log(pc.cyan(\"\\nāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\"))\n console.log(pc.cyan(\"ā Welcome to Creative Tim UI ā\"))\n console.log(pc.cyan(\"āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā\\n\"))\n\n // Check if components.json exists\n const componentsJsonPath = path.resolve(cwd, \"components.json\")\n \n if (existsSync(componentsJsonPath) && !opts.yes) {\n const { overwrite } = await prompts({\n type: \"confirm\",\n name: \"overwrite\",\n message: \"components.json already exists. Overwrite?\",\n initial: false\n })\n\n if (!overwrite) {\n console.log(pc.yellow(\"Initialization cancelled.\"))\n return\n }\n }\n\n const spinner = ora(\"Initializing project...\").start()\n\n try {\n // Create components.json\n const config = {\n \"$schema\": \"https://ui.shadcn.com/schema.json\",\n \"style\": \"default\",\n \"rsc\": true,\n \"tsx\": true,\n \"tailwind\": {\n \"config\": \"tailwind.config.ts\",\n \"css\": \"app/globals.css\",\n \"baseColor\": \"slate\",\n \"cssVariables\": true,\n \"prefix\": \"\"\n },\n \"aliases\": {\n \"components\": \"@/components\",\n \"utils\": \"@/lib/utils\",\n \"ui\": \"@/components/ui\",\n \"lib\": \"@/lib\",\n \"hooks\": \"@/hooks\",\n \"creative-tim\": \"@/components/creative-tim\"\n },\n \"registry\": \"https://creative-tim.com/ui\"\n }\n\n await fs.writeJSON(componentsJsonPath, config, { spaces: 2 })\n\n spinner.succeed(\"Project initialized successfully!\")\n \n console.log(pc.green(\"\\nā Created components.json\"))\n console.log(pc.dim(\"\\nNext steps:\"))\n console.log(pc.dim(\" 1. Review your components.json\"))\n console.log(pc.dim(\" 2. Run: npx @creative-tim/ui add button\"))\n console.log(pc.dim(\" 3. Start using Creative Tim UI components!\\n\"))\n\n } catch (error) {\n spinner.fail(\"Failed to initialize project\")\n throw error\n }\n })\n\n"],"mappings":"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","names":["Command","pc","Command","pc","fs","path","ora","Command","pc"]}
|