homeontour-ui 0.1.7 → 0.1.8

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 CHANGED
@@ -302,22 +302,18 @@ function generateComponentContent(componentName, componentPascal) {
302
302
  return `import * as React from "react"
303
303
  import { cn } from "@/lib/utils"
304
304
 
305
- export interface ${componentPascal}Props extends React.HTMLAttributes<HTMLDivElement> {
305
+ export interface ${componentPascal}Props {
306
+ className?: string
306
307
  // Add your custom props here
307
308
  }
308
309
 
309
- export const ${componentPascal} = React.forwardRef<HTMLDivElement, ${componentPascal}Props>(
310
- ({ className, ...props }, ref) => {
311
- return (
312
- <div
313
- ref={ref}
314
- className={cn("", className)}
315
- {...props}
316
- />
317
- )
318
- }
319
- )
320
- ${componentPascal}.displayName = "${componentPascal}"
310
+ export function ${componentPascal}({ className }: ${componentPascal}Props) {
311
+ return (
312
+ <div className={cn("", className)}>
313
+ {/* Add your component content here */}
314
+ </div>
315
+ )
316
+ }
321
317
 
322
318
  export default ${componentPascal}
323
319
  `;
@@ -361,7 +357,7 @@ export function DefaultExample() {
361
357
  }
362
358
 
363
359
  // Code for this example (used in documentation)
364
- export const code = \`import { ${componentPascal} } from "./index"
360
+ export const code = \`import { ${componentPascal} } from "@/components/homeontour-ui/${componentName}"
365
361
 
366
362
  export function DefaultExample() {
367
363
  return (
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/commands/add.ts","../src/commands/init.ts","../src/commands/generate.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander'\nimport { addCommand } from './commands/add.js'\nimport { initCommand } from './commands/init.js'\nimport { generateCommand } from './commands/generate.js'\n\nconst program = new Command()\n\nprogram\n .name('homeontour-ui')\n .description('Add HomeOnTour UI components to your project')\n .version('0.1.0')\n\nprogram.addCommand(addCommand)\nprogram.addCommand(initCommand)\nprogram.addCommand(generateCommand)\n\nprogram.parse()\n","import { Command } from 'commander'\nimport prompts from 'prompts'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport { execa } from 'execa'\nimport fs from 'fs-extra'\nimport path from 'path'\nimport fetch from 'node-fetch'\n\nconst REGISTRY_URL = 'https://ui.homeontour.com/api/registry'\n\nfunction getComponentsDir(cwd: string): string {\n // 1. Check components.json (shadcn/ui style config)\n const componentsJsonPath = path.join(cwd, 'components.json')\n if (fs.existsSync(componentsJsonPath)) {\n try {\n const config = fs.readJsonSync(componentsJsonPath)\n if (config['homeontour-ui']?.components) {\n return config['homeontour-ui'].components\n }\n } catch (error) {\n // Ignore JSON parse errors\n }\n }\n\n // 2. Check environment variable (for CI/CD or temporary overrides)\n if (process.env.HOMEONTOUR_UI_COMPONENTS_DIR) {\n return process.env.HOMEONTOUR_UI_COMPONENTS_DIR\n }\n\n // 3. Default: auto-detect src directory\n const srcDir = path.join(cwd, 'src')\n const baseDir = fs.existsSync(srcDir) ? 'src/components' : 'components'\n return path.join(baseDir, 'homeontour-ui')\n}\n\nasync function ensureComponentsJson(cwd: string, componentsPath: string): Promise<void> {\n const componentsJsonPath = path.join(cwd, 'components.json')\n \n // Make path relative to project root for storage\n const relativePath = path.isAbsolute(componentsPath)\n ? path.relative(cwd, componentsPath)\n : componentsPath\n \n if (fs.existsSync(componentsJsonPath)) {\n // File exists, check if we need to add homeontour-ui section\n try {\n const config = fs.readJsonSync(componentsJsonPath)\n if (!config['homeontour-ui']) {\n config['homeontour-ui'] = { components: relativePath }\n fs.writeJsonSync(componentsJsonPath, config, { spaces: 2 })\n }\n } catch (error) {\n // If file exists but is invalid JSON, don't overwrite it\n return\n }\n } else {\n // File doesn't exist, run shadcn init first\n const spinner = ora('Setting up shadcn/ui...').start()\n try {\n await execa('pnpm', ['dlx', 'shadcn@latest', 'init', '-y'], {\n cwd,\n })\n spinner.succeed('shadcn/ui initialized')\n } catch (error) {\n spinner.warn('Could not run shadcn init automatically')\n console.log(chalk.yellow('\\nPlease run manually: pnpm dlx shadcn@latest init'))\n }\n \n // Now add homeontour-ui section to the config\n try {\n const config = fs.readJsonSync(componentsJsonPath)\n config['homeontour-ui'] = { components: relativePath }\n fs.writeJsonSync(componentsJsonPath, config, { spaces: 2 })\n } catch (error) {\n // If we can't read the config, create a minimal one\n const config = {\n $schema: 'https://ui.shadcn.com/schema.json',\n 'homeontour-ui': {\n components: relativePath,\n },\n }\n fs.writeJsonSync(componentsJsonPath, config, { spaces: 2 })\n }\n }\n}\n\nexport const addCommand = new Command()\n .name('add')\n .description('Add a component 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 .action(async (components: string[], options) => {\n try {\n const cwd = process.cwd()\n \n // Check if we're in a valid project\n const packageJsonPath = path.join(cwd, 'package.json')\n if (!fs.existsSync(packageJsonPath)) {\n console.error(chalk.red('Error: No package.json found. Are you in a project directory?'))\n process.exit(1)\n }\n\n // If no components specified, show interactive selection\n if (!components || components.length === 0) {\n const spinner = ora('Fetching components...').start()\n \n try {\n const response = await fetch(REGISTRY_URL)\n if (!response.ok) {\n throw new Error('Failed to fetch components')\n }\n \n const allComponents = await response.json() as any[]\n spinner.succeed('Fetched available components')\n \n const { selectedComponents } = await prompts({\n type: 'multiselect',\n name: 'selectedComponents',\n message: 'Which components would you like to add?',\n choices: allComponents.map((c: any) => ({\n title: `${c.name} - ${c.description}`,\n value: c.name,\n })),\n min: 1,\n })\n \n if (!selectedComponents || selectedComponents.length === 0) {\n console.log(chalk.yellow('No components selected. Exiting.'))\n process.exit(0)\n }\n \n components = selectedComponents\n } catch (error) {\n spinner.fail('Failed to fetch components')\n console.error(chalk.red('Error: Could not connect to registry. Is the server running?'))\n process.exit(1)\n }\n }\n\n // Ensure components.json exists with homeontour-ui config\n const defaultComponentsDir = getComponentsDir(cwd)\n await ensureComponentsJson(cwd, defaultComponentsDir)\n\n // Add each component\n for (const componentName of components) {\n await addComponent(componentName, { cwd, ...options })\n }\n\n console.log()\n console.log(chalk.green('✓ Done! Components added successfully.'))\n console.log()\n console.log('Import and use them in your project:')\n const componentsDir = getComponentsDir(cwd)\n const importPath = componentsDir.replace(/\\\\/g, '/')\n console.log(chalk.cyan(`import { LogoSvg } from '@/${importPath}/logo-svg'`))\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n\nasync function addComponent(\n componentName: string,\n options: { cwd: string; yes?: boolean; overwrite?: boolean }\n) {\n const spinner = ora(`Adding ${componentName}...`).start()\n\n try {\n // Fetch component from registry\n const response = await fetch(`${REGISTRY_URL}/${componentName}`)\n \n if (!response.ok) {\n throw new Error(`Component \"${componentName}\" not found in registry`)\n }\n \n const component = await response.json() as any\n\n // Check if component already exists\n const componentsDir = getComponentsDir(options.cwd)\n const componentDir = path.isAbsolute(componentsDir) \n ? componentsDir \n : path.join(options.cwd, componentsDir)\n const componentPath = path.join(componentDir, component.files[0].name)\n \n if (fs.existsSync(componentPath) && !options.overwrite) {\n spinner.warn(`${componentName} already exists`)\n \n if (!options.yes) {\n const { overwrite } = await prompts({\n type: 'confirm',\n name: 'overwrite',\n message: `Overwrite existing ${componentName}?`,\n initial: false,\n })\n \n if (!overwrite) {\n return\n }\n } else {\n return\n }\n }\n\n // Install npm dependencies\n if (component.dependencies && component.dependencies.length > 0) {\n spinner.text = `Installing dependencies for ${componentName}...`\n const deps = component.dependencies.map((d: any) => `${d.name}@${d.version}`).join(' ')\n \n try {\n await execa('pnpm', ['add', ...deps.split(' ')], {\n cwd: options.cwd,\n })\n } catch (error) {\n // Try npm as fallback\n try {\n await execa('npm', ['install', ...deps.split(' ')], {\n cwd: options.cwd,\n })\n } catch (npmError) {\n spinner.warn(`Could not install dependencies automatically`)\n console.log(chalk.yellow(`\\nPlease install manually: pnpm add ${deps}`))\n }\n }\n }\n\n // Install shadcn/ui dependencies\n if (component.registryDependencies && component.registryDependencies.length > 0) {\n spinner.text = `Installing shadcn/ui components...`\n const shadcnDeps = component.registryDependencies.join(' ')\n \n try {\n await execa('pnpm', ['dlx', 'shadcn@latest', 'add', ...shadcnDeps.split(' '), '-y'], {\n cwd: options.cwd,\n })\n } catch (error) {\n spinner.warn(`Could not install shadcn/ui components automatically`)\n console.log(chalk.yellow(`\\nPlease install manually: pnpm dlx shadcn@latest add ${shadcnDeps}`))\n }\n }\n\n // Create component files\n spinner.text = `Creating ${componentName} files...`\n await fs.ensureDir(componentDir)\n \n for (const file of component.files) {\n const filePath = path.join(componentDir, file.name)\n await fs.writeFile(filePath, file.content, 'utf-8')\n }\n\n spinner.succeed(`Added ${componentName}`)\n } catch (error) {\n spinner.fail(`Failed to add ${componentName}`)\n throw error\n }\n}\n","import { Command } from 'commander'\nimport prompts from 'prompts'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport { execa } from 'execa'\nimport fs from 'fs-extra'\nimport path from 'path'\n\nexport const initCommand = new Command()\n .name('init')\n .description('Initialize your project for HomeOnTour UI')\n .option('-y, --yes', 'Skip confirmation prompt')\n .action(async (options) => {\n try {\n const cwd = process.cwd()\n \n console.log()\n console.log(chalk.bold('Initializing HomeOnTour UI...'))\n console.log()\n\n // Check if package.json exists\n const packageJsonPath = path.join(cwd, 'package.json')\n if (!fs.existsSync(packageJsonPath)) {\n console.error(chalk.red('Error: No package.json found. Please run this in a project directory.'))\n process.exit(1)\n }\n\n // Check for required dependencies\n const requiredDeps = [\n 'class-variance-authority',\n 'clsx',\n 'tailwind-merge',\n 'lucide-react',\n ]\n\n const spinner = ora('Checking dependencies...').start()\n \n const packageJson = await fs.readJson(packageJsonPath)\n const installedDeps = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n }\n\n const missingDeps = requiredDeps.filter((dep) => !installedDeps[dep])\n\n if (missingDeps.length > 0) {\n spinner.info('Installing required dependencies...')\n \n try {\n await execa('pnpm', ['add', ...missingDeps], { cwd })\n spinner.succeed('Dependencies installed')\n } catch (error) {\n spinner.fail('Failed to install dependencies')\n console.log(chalk.yellow(`\\nPlease install manually:`))\n console.log(chalk.cyan(`pnpm add ${missingDeps.join(' ')}`))\n }\n } else {\n spinner.succeed('All dependencies are installed')\n }\n\n // Check for utils file\n const utilsPath = path.join(cwd, 'lib', 'utils.ts')\n const srcUtilsPath = path.join(cwd, 'src', 'lib', 'utils.ts')\n const utilsExists = fs.existsSync(utilsPath) || fs.existsSync(srcUtilsPath)\n\n if (!utilsExists) {\n const { createUtils } = await prompts({\n type: 'confirm',\n name: 'createUtils',\n message: 'Create lib/utils.ts with cn helper?',\n initial: true,\n })\n\n if (createUtils) {\n const targetUtilsPath = fs.existsSync(path.join(cwd, 'src')) ? srcUtilsPath : utilsPath\n \n await fs.ensureDir(path.dirname(targetUtilsPath))\n await fs.writeFile(\n targetUtilsPath,\n `import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n`,\n 'utf-8'\n )\n console.log(chalk.green('✓ Created lib/utils.ts'))\n }\n }\n\n // Create components directory\n const componentsDir = path.join(cwd, 'components', 'homeontour-ui')\n await fs.ensureDir(componentsDir)\n console.log(chalk.green('✓ Created components/homeontour-ui directory'))\n\n console.log()\n console.log(chalk.green('✓ Initialization complete!'))\n console.log()\n console.log('You can now add components:')\n console.log(chalk.cyan(' pnpm dlx homeontour-ui@latest add logo-svg'))\n console.log()\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n","import { Command } from 'commander'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport fs from 'fs-extra'\nimport path from 'path'\n\n// Convert kebab-case to PascalCase\nfunction toPascalCase(str: string): string {\n return str\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n}\n\n// Convert kebab-case to camelCase\nfunction toCamelCase(str: string): string {\n const pascal = toPascalCase(str)\n return pascal.charAt(0).toLowerCase() + pascal.slice(1)\n}\n\n// Generate component TSX content\nfunction generateComponentContent(componentName: string, componentPascal: string): string {\n return `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface ${componentPascal}Props extends React.HTMLAttributes<HTMLDivElement> {\n // Add your custom props here\n}\n\nexport const ${componentPascal} = React.forwardRef<HTMLDivElement, ${componentPascal}Props>(\n ({ className, ...props }, ref) => {\n return (\n <div\n ref={ref}\n className={cn(\"\", className)}\n {...props}\n />\n )\n }\n)\n${componentPascal}.displayName = \"${componentPascal}\"\n\nexport default ${componentPascal}\n`\n}\n\n// Generate metadata content\nfunction generateMetadataContent(componentName: string, componentPascal: string): string {\n return `import { ComponentMetadata } from \"@/lib/component-metadata\"\n\nexport const metadata: ComponentMetadata = {\n name: \"${componentName}\",\n type: \"components:ui\",\n description: \"${componentPascal} component.\",\n category: \"UI Components\",\n registryDependencies: [],\n examples: [\n {\n name: \"Default\",\n description: \"Default ${componentPascal} component\",\n exampleComponent: \"DefaultExample\",\n },\n ],\n usage: {\n importCode: \\`import { ${componentPascal} } from \"@/components/homeontour-ui/${componentName}\"\\`,\n componentCode: \\`<${componentPascal} />\\`,\n },\n}\n`\n}\n\n// Generate example component content\nfunction generateExampleContent(componentName: string, componentPascal: string): string {\n return `\"use client\"\n\nimport { ${componentPascal} } from \"./index\"\n\n/**\n * Example: Default\n * Default ${componentPascal} component\n */\nexport function DefaultExample() {\n return (\n <${componentPascal} />\n )\n}\n\n// Code for this example (used in documentation)\nexport const code = \\`import { ${componentPascal} } from \"./index\"\n\nexport function DefaultExample() {\n return (\n <${componentPascal} />\n )\n}\\`\n`\n}\n\n// Update metadata registry\nasync function updateMetadataRegistry(\n projectRoot: string,\n componentName: string,\n componentPascal: string\n) {\n const metadataRegistryPath = path.join(projectRoot, 'src/lib/metadata-registry.ts')\n \n if (!fs.existsSync(metadataRegistryPath)) {\n throw new Error('metadata-registry.ts not found')\n }\n\n let lines = (await fs.readFile(metadataRegistryPath, 'utf-8')).split('\\n')\n const importName = `${toCamelCase(componentName)}Metadata`\n const importStatement = `import { metadata as ${importName} } from \"@/components/registry/${componentName}/metadata\"`\n \n // Check if import already exists\n if (lines.some(line => line.includes(importStatement))) {\n throw new Error('Import already exists')\n }\n \n // Find the last import line and insert after it\n let lastImportIndex = -1\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].trim().startsWith('import ') && lines[i].includes('from')) {\n lastImportIndex = i\n }\n }\n \n if (lastImportIndex >= 0) {\n lines.splice(lastImportIndex + 1, 0, importStatement)\n }\n \n // Add to registry object - find the registry object and insert before closing brace\n const registryEntry = ` \"${componentName}\": ${importName},`\n let inRegistryObject = false\n let lastRegistryEntryIndex = -1\n \n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n \n if (line.includes('export const metadataRegistry')) {\n inRegistryObject = true\n continue\n }\n \n if (inRegistryObject) {\n // Check if this is a registry entry (contains \": metadata\" or similar)\n if (line.trim().match(/^\"[^\"]+\":\\s+\\w+Metadata,?$/)) {\n lastRegistryEntryIndex = i\n }\n \n // Check if we've reached the closing brace\n if (line.trim() === '}') {\n // Insert before this closing brace\n if (lastRegistryEntryIndex >= 0) {\n lines.splice(lastRegistryEntryIndex + 1, 0, registryEntry)\n } else {\n // No entries found, insert right after opening brace\n // Find the opening brace line\n for (let j = i - 1; j >= 0; j--) {\n if (lines[j].includes('metadataRegistry') && lines[j].includes('{')) {\n lines.splice(j + 1, 0, registryEntry)\n break\n }\n }\n }\n break\n }\n }\n }\n \n await fs.writeFile(metadataRegistryPath, lines.join('\\n'), 'utf-8')\n}\n\nexport const generateCommand = new Command()\n .name('generate')\n .alias('gen')\n .description('Generate boilerplate for a new component')\n .argument('<name>', 'Component name in kebab-case (e.g., my-component)')\n .action(async (name: string) => {\n try {\n const cwd = process.cwd()\n \n // Validate component name (kebab-case or simple lowercase)\n if (!/^[a-z][a-z0-9-]*$/.test(name)) {\n console.error(chalk.red('Error: Component name must be in kebab-case (e.g., my-component) or simple lowercase (e.g., basic)'))\n process.exit(1)\n }\n\n const spinner = ora(`Generating ${name} component...`).start()\n\n // Check if we're in the project root (has src/components/registry directory)\n const registryDir = path.join(cwd, 'src/components/registry')\n if (!fs.existsSync(registryDir)) {\n spinner.fail('Error: src/components/registry directory not found')\n console.error(chalk.red('Are you in the correct project directory?'))\n process.exit(1)\n }\n\n const componentPascal = toPascalCase(name)\n const componentDir = path.join(registryDir, name)\n const componentFile = path.join(componentDir, 'index.tsx')\n const metadataFile = path.join(componentDir, 'metadata.ts')\n const exampleFile = path.join(componentDir, 'default.example.tsx')\n\n // Check if component already exists\n if (fs.existsSync(componentDir)) {\n spinner.warn(`${name} already exists`)\n console.log(chalk.yellow(`Component directory already exists. Skipping generation.`))\n process.exit(0)\n }\n\n // Create component directory\n await fs.ensureDir(componentDir)\n\n // Generate component file\n const componentContent = generateComponentContent(name, componentPascal)\n await fs.writeFile(componentFile, componentContent, 'utf-8')\n spinner.succeed(`Created ${name}/index.tsx`)\n\n // Generate metadata file\n const metadataContent = generateMetadataContent(name, componentPascal)\n await fs.writeFile(metadataFile, metadataContent, 'utf-8')\n spinner.succeed(`Created ${name}/metadata.ts`)\n\n // Generate example file\n const exampleContent = generateExampleContent(name, componentPascal)\n await fs.writeFile(exampleFile, exampleContent, 'utf-8')\n spinner.succeed(`Created ${name}/default.example.tsx`)\n\n // Update metadata registry\n spinner.start('Updating metadata registry...')\n try {\n await updateMetadataRegistry(cwd, name, componentPascal)\n spinner.succeed('Updated metadata registry')\n } catch (error) {\n spinner.warn('Could not automatically update metadata registry')\n console.log(chalk.yellow('\\nPlease manually add the following to src/lib/metadata-registry.ts:'))\n console.log(chalk.cyan(`import { metadata as ${toCamelCase(name)}Metadata } from \"@/components/registry/${name}/metadata\"`))\n console.log(chalk.cyan(` \"${name}\": ${toCamelCase(name)}Metadata,`))\n }\n\n console.log()\n console.log(chalk.green('✓ Component generated successfully!'))\n console.log()\n console.log('Next steps:')\n console.log(chalk.cyan(` 1. Edit src/components/registry/${name}/index.tsx`))\n console.log(chalk.cyan(` 2. Update src/components/registry/${name}/metadata.ts with examples and description`))\n console.log(chalk.cyan(` 3. Add more examples in src/components/registry/${name}/*.example.tsx`))\n console.log()\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n"],"mappings":"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","names":["Command","Command","prompts","chalk","ora","execa","fs","path","Command","chalk","ora","fs","path","Command"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/commands/add.ts","../src/commands/init.ts","../src/commands/generate.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from 'commander'\nimport { addCommand } from './commands/add.js'\nimport { initCommand } from './commands/init.js'\nimport { generateCommand } from './commands/generate.js'\n\nconst program = new Command()\n\nprogram\n .name('homeontour-ui')\n .description('Add HomeOnTour UI components to your project')\n .version('0.1.0')\n\nprogram.addCommand(addCommand)\nprogram.addCommand(initCommand)\nprogram.addCommand(generateCommand)\n\nprogram.parse()\n","import { Command } from 'commander'\nimport prompts from 'prompts'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport { execa } from 'execa'\nimport fs from 'fs-extra'\nimport path from 'path'\nimport fetch from 'node-fetch'\n\nconst REGISTRY_URL = 'https://ui.homeontour.com/api/registry'\n\nfunction getComponentsDir(cwd: string): string {\n // 1. Check components.json (shadcn/ui style config)\n const componentsJsonPath = path.join(cwd, 'components.json')\n if (fs.existsSync(componentsJsonPath)) {\n try {\n const config = fs.readJsonSync(componentsJsonPath)\n if (config['homeontour-ui']?.components) {\n return config['homeontour-ui'].components\n }\n } catch (error) {\n // Ignore JSON parse errors\n }\n }\n\n // 2. Check environment variable (for CI/CD or temporary overrides)\n if (process.env.HOMEONTOUR_UI_COMPONENTS_DIR) {\n return process.env.HOMEONTOUR_UI_COMPONENTS_DIR\n }\n\n // 3. Default: auto-detect src directory\n const srcDir = path.join(cwd, 'src')\n const baseDir = fs.existsSync(srcDir) ? 'src/components' : 'components'\n return path.join(baseDir, 'homeontour-ui')\n}\n\nasync function ensureComponentsJson(cwd: string, componentsPath: string): Promise<void> {\n const componentsJsonPath = path.join(cwd, 'components.json')\n \n // Make path relative to project root for storage\n const relativePath = path.isAbsolute(componentsPath)\n ? path.relative(cwd, componentsPath)\n : componentsPath\n \n if (fs.existsSync(componentsJsonPath)) {\n // File exists, check if we need to add homeontour-ui section\n try {\n const config = fs.readJsonSync(componentsJsonPath)\n if (!config['homeontour-ui']) {\n config['homeontour-ui'] = { components: relativePath }\n fs.writeJsonSync(componentsJsonPath, config, { spaces: 2 })\n }\n } catch (error) {\n // If file exists but is invalid JSON, don't overwrite it\n return\n }\n } else {\n // File doesn't exist, run shadcn init first\n const spinner = ora('Setting up shadcn/ui...').start()\n try {\n await execa('pnpm', ['dlx', 'shadcn@latest', 'init', '-y'], {\n cwd,\n })\n spinner.succeed('shadcn/ui initialized')\n } catch (error) {\n spinner.warn('Could not run shadcn init automatically')\n console.log(chalk.yellow('\\nPlease run manually: pnpm dlx shadcn@latest init'))\n }\n \n // Now add homeontour-ui section to the config\n try {\n const config = fs.readJsonSync(componentsJsonPath)\n config['homeontour-ui'] = { components: relativePath }\n fs.writeJsonSync(componentsJsonPath, config, { spaces: 2 })\n } catch (error) {\n // If we can't read the config, create a minimal one\n const config = {\n $schema: 'https://ui.shadcn.com/schema.json',\n 'homeontour-ui': {\n components: relativePath,\n },\n }\n fs.writeJsonSync(componentsJsonPath, config, { spaces: 2 })\n }\n }\n}\n\nexport const addCommand = new Command()\n .name('add')\n .description('Add a component 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 .action(async (components: string[], options) => {\n try {\n const cwd = process.cwd()\n \n // Check if we're in a valid project\n const packageJsonPath = path.join(cwd, 'package.json')\n if (!fs.existsSync(packageJsonPath)) {\n console.error(chalk.red('Error: No package.json found. Are you in a project directory?'))\n process.exit(1)\n }\n\n // If no components specified, show interactive selection\n if (!components || components.length === 0) {\n const spinner = ora('Fetching components...').start()\n \n try {\n const response = await fetch(REGISTRY_URL)\n if (!response.ok) {\n throw new Error('Failed to fetch components')\n }\n \n const allComponents = await response.json() as any[]\n spinner.succeed('Fetched available components')\n \n const { selectedComponents } = await prompts({\n type: 'multiselect',\n name: 'selectedComponents',\n message: 'Which components would you like to add?',\n choices: allComponents.map((c: any) => ({\n title: `${c.name} - ${c.description}`,\n value: c.name,\n })),\n min: 1,\n })\n \n if (!selectedComponents || selectedComponents.length === 0) {\n console.log(chalk.yellow('No components selected. Exiting.'))\n process.exit(0)\n }\n \n components = selectedComponents\n } catch (error) {\n spinner.fail('Failed to fetch components')\n console.error(chalk.red('Error: Could not connect to registry. Is the server running?'))\n process.exit(1)\n }\n }\n\n // Ensure components.json exists with homeontour-ui config\n const defaultComponentsDir = getComponentsDir(cwd)\n await ensureComponentsJson(cwd, defaultComponentsDir)\n\n // Add each component\n for (const componentName of components) {\n await addComponent(componentName, { cwd, ...options })\n }\n\n console.log()\n console.log(chalk.green('✓ Done! Components added successfully.'))\n console.log()\n console.log('Import and use them in your project:')\n const componentsDir = getComponentsDir(cwd)\n const importPath = componentsDir.replace(/\\\\/g, '/')\n console.log(chalk.cyan(`import { LogoSvg } from '@/${importPath}/logo-svg'`))\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n\nasync function addComponent(\n componentName: string,\n options: { cwd: string; yes?: boolean; overwrite?: boolean }\n) {\n const spinner = ora(`Adding ${componentName}...`).start()\n\n try {\n // Fetch component from registry\n const response = await fetch(`${REGISTRY_URL}/${componentName}`)\n \n if (!response.ok) {\n throw new Error(`Component \"${componentName}\" not found in registry`)\n }\n \n const component = await response.json() as any\n\n // Check if component already exists\n const componentsDir = getComponentsDir(options.cwd)\n const componentDir = path.isAbsolute(componentsDir) \n ? componentsDir \n : path.join(options.cwd, componentsDir)\n const componentPath = path.join(componentDir, component.files[0].name)\n \n if (fs.existsSync(componentPath) && !options.overwrite) {\n spinner.warn(`${componentName} already exists`)\n \n if (!options.yes) {\n const { overwrite } = await prompts({\n type: 'confirm',\n name: 'overwrite',\n message: `Overwrite existing ${componentName}?`,\n initial: false,\n })\n \n if (!overwrite) {\n return\n }\n } else {\n return\n }\n }\n\n // Install npm dependencies\n if (component.dependencies && component.dependencies.length > 0) {\n spinner.text = `Installing dependencies for ${componentName}...`\n const deps = component.dependencies.map((d: any) => `${d.name}@${d.version}`).join(' ')\n \n try {\n await execa('pnpm', ['add', ...deps.split(' ')], {\n cwd: options.cwd,\n })\n } catch (error) {\n // Try npm as fallback\n try {\n await execa('npm', ['install', ...deps.split(' ')], {\n cwd: options.cwd,\n })\n } catch (npmError) {\n spinner.warn(`Could not install dependencies automatically`)\n console.log(chalk.yellow(`\\nPlease install manually: pnpm add ${deps}`))\n }\n }\n }\n\n // Install shadcn/ui dependencies\n if (component.registryDependencies && component.registryDependencies.length > 0) {\n spinner.text = `Installing shadcn/ui components...`\n const shadcnDeps = component.registryDependencies.join(' ')\n \n try {\n await execa('pnpm', ['dlx', 'shadcn@latest', 'add', ...shadcnDeps.split(' '), '-y'], {\n cwd: options.cwd,\n })\n } catch (error) {\n spinner.warn(`Could not install shadcn/ui components automatically`)\n console.log(chalk.yellow(`\\nPlease install manually: pnpm dlx shadcn@latest add ${shadcnDeps}`))\n }\n }\n\n // Create component files\n spinner.text = `Creating ${componentName} files...`\n await fs.ensureDir(componentDir)\n \n for (const file of component.files) {\n const filePath = path.join(componentDir, file.name)\n await fs.writeFile(filePath, file.content, 'utf-8')\n }\n\n spinner.succeed(`Added ${componentName}`)\n } catch (error) {\n spinner.fail(`Failed to add ${componentName}`)\n throw error\n }\n}\n","import { Command } from 'commander'\nimport prompts from 'prompts'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport { execa } from 'execa'\nimport fs from 'fs-extra'\nimport path from 'path'\n\nexport const initCommand = new Command()\n .name('init')\n .description('Initialize your project for HomeOnTour UI')\n .option('-y, --yes', 'Skip confirmation prompt')\n .action(async (options) => {\n try {\n const cwd = process.cwd()\n \n console.log()\n console.log(chalk.bold('Initializing HomeOnTour UI...'))\n console.log()\n\n // Check if package.json exists\n const packageJsonPath = path.join(cwd, 'package.json')\n if (!fs.existsSync(packageJsonPath)) {\n console.error(chalk.red('Error: No package.json found. Please run this in a project directory.'))\n process.exit(1)\n }\n\n // Check for required dependencies\n const requiredDeps = [\n 'class-variance-authority',\n 'clsx',\n 'tailwind-merge',\n 'lucide-react',\n ]\n\n const spinner = ora('Checking dependencies...').start()\n \n const packageJson = await fs.readJson(packageJsonPath)\n const installedDeps = {\n ...packageJson.dependencies,\n ...packageJson.devDependencies,\n }\n\n const missingDeps = requiredDeps.filter((dep) => !installedDeps[dep])\n\n if (missingDeps.length > 0) {\n spinner.info('Installing required dependencies...')\n \n try {\n await execa('pnpm', ['add', ...missingDeps], { cwd })\n spinner.succeed('Dependencies installed')\n } catch (error) {\n spinner.fail('Failed to install dependencies')\n console.log(chalk.yellow(`\\nPlease install manually:`))\n console.log(chalk.cyan(`pnpm add ${missingDeps.join(' ')}`))\n }\n } else {\n spinner.succeed('All dependencies are installed')\n }\n\n // Check for utils file\n const utilsPath = path.join(cwd, 'lib', 'utils.ts')\n const srcUtilsPath = path.join(cwd, 'src', 'lib', 'utils.ts')\n const utilsExists = fs.existsSync(utilsPath) || fs.existsSync(srcUtilsPath)\n\n if (!utilsExists) {\n const { createUtils } = await prompts({\n type: 'confirm',\n name: 'createUtils',\n message: 'Create lib/utils.ts with cn helper?',\n initial: true,\n })\n\n if (createUtils) {\n const targetUtilsPath = fs.existsSync(path.join(cwd, 'src')) ? srcUtilsPath : utilsPath\n \n await fs.ensureDir(path.dirname(targetUtilsPath))\n await fs.writeFile(\n targetUtilsPath,\n `import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n`,\n 'utf-8'\n )\n console.log(chalk.green('✓ Created lib/utils.ts'))\n }\n }\n\n // Create components directory\n const componentsDir = path.join(cwd, 'components', 'homeontour-ui')\n await fs.ensureDir(componentsDir)\n console.log(chalk.green('✓ Created components/homeontour-ui directory'))\n\n console.log()\n console.log(chalk.green('✓ Initialization complete!'))\n console.log()\n console.log('You can now add components:')\n console.log(chalk.cyan(' pnpm dlx homeontour-ui@latest add logo-svg'))\n console.log()\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n","import { Command } from 'commander'\nimport chalk from 'chalk'\nimport ora from 'ora'\nimport fs from 'fs-extra'\nimport path from 'path'\n\n// Convert kebab-case to PascalCase\nfunction toPascalCase(str: string): string {\n return str\n .split('-')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('')\n}\n\n// Convert kebab-case to camelCase\nfunction toCamelCase(str: string): string {\n const pascal = toPascalCase(str)\n return pascal.charAt(0).toLowerCase() + pascal.slice(1)\n}\n\n// Generate component TSX content\nfunction generateComponentContent(componentName: string, componentPascal: string): string {\n return `import * as React from \"react\"\nimport { cn } from \"@/lib/utils\"\n\nexport interface ${componentPascal}Props {\n className?: string\n // Add your custom props here\n}\n\nexport function ${componentPascal}({ className }: ${componentPascal}Props) {\n return (\n <div className={cn(\"\", className)}>\n {/* Add your component content here */}\n </div>\n )\n}\n\nexport default ${componentPascal}\n`\n}\n\n// Generate metadata content\nfunction generateMetadataContent(componentName: string, componentPascal: string): string {\n return `import { ComponentMetadata } from \"@/lib/component-metadata\"\n\nexport const metadata: ComponentMetadata = {\n name: \"${componentName}\",\n type: \"components:ui\",\n description: \"${componentPascal} component.\",\n category: \"UI Components\",\n registryDependencies: [],\n examples: [\n {\n name: \"Default\",\n description: \"Default ${componentPascal} component\",\n exampleComponent: \"DefaultExample\",\n },\n ],\n usage: {\n importCode: \\`import { ${componentPascal} } from \"@/components/homeontour-ui/${componentName}\"\\`,\n componentCode: \\`<${componentPascal} />\\`,\n },\n}\n`\n}\n\n// Generate example component content\nfunction generateExampleContent(componentName: string, componentPascal: string): string {\n return `\"use client\"\n\nimport { ${componentPascal} } from \"./index\"\n\n/**\n * Example: Default\n * Default ${componentPascal} component\n */\nexport function DefaultExample() {\n return (\n <${componentPascal} />\n )\n}\n\n// Code for this example (used in documentation)\nexport const code = \\`import { ${componentPascal} } from \"@/components/homeontour-ui/${componentName}\"\n\nexport function DefaultExample() {\n return (\n <${componentPascal} />\n )\n}\\`\n`\n}\n\n// Update metadata registry\nasync function updateMetadataRegistry(\n projectRoot: string,\n componentName: string,\n componentPascal: string\n) {\n const metadataRegistryPath = path.join(projectRoot, 'src/lib/metadata-registry.ts')\n \n if (!fs.existsSync(metadataRegistryPath)) {\n throw new Error('metadata-registry.ts not found')\n }\n\n let lines = (await fs.readFile(metadataRegistryPath, 'utf-8')).split('\\n')\n const importName = `${toCamelCase(componentName)}Metadata`\n const importStatement = `import { metadata as ${importName} } from \"@/components/registry/${componentName}/metadata\"`\n \n // Check if import already exists\n if (lines.some(line => line.includes(importStatement))) {\n throw new Error('Import already exists')\n }\n \n // Find the last import line and insert after it\n let lastImportIndex = -1\n for (let i = 0; i < lines.length; i++) {\n if (lines[i].trim().startsWith('import ') && lines[i].includes('from')) {\n lastImportIndex = i\n }\n }\n \n if (lastImportIndex >= 0) {\n lines.splice(lastImportIndex + 1, 0, importStatement)\n }\n \n // Add to registry object - find the registry object and insert before closing brace\n const registryEntry = ` \"${componentName}\": ${importName},`\n let inRegistryObject = false\n let lastRegistryEntryIndex = -1\n \n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]\n \n if (line.includes('export const metadataRegistry')) {\n inRegistryObject = true\n continue\n }\n \n if (inRegistryObject) {\n // Check if this is a registry entry (contains \": metadata\" or similar)\n if (line.trim().match(/^\"[^\"]+\":\\s+\\w+Metadata,?$/)) {\n lastRegistryEntryIndex = i\n }\n \n // Check if we've reached the closing brace\n if (line.trim() === '}') {\n // Insert before this closing brace\n if (lastRegistryEntryIndex >= 0) {\n lines.splice(lastRegistryEntryIndex + 1, 0, registryEntry)\n } else {\n // No entries found, insert right after opening brace\n // Find the opening brace line\n for (let j = i - 1; j >= 0; j--) {\n if (lines[j].includes('metadataRegistry') && lines[j].includes('{')) {\n lines.splice(j + 1, 0, registryEntry)\n break\n }\n }\n }\n break\n }\n }\n }\n \n await fs.writeFile(metadataRegistryPath, lines.join('\\n'), 'utf-8')\n}\n\nexport const generateCommand = new Command()\n .name('generate')\n .alias('gen')\n .description('Generate boilerplate for a new component')\n .argument('<name>', 'Component name in kebab-case (e.g., my-component)')\n .action(async (name: string) => {\n try {\n const cwd = process.cwd()\n \n // Validate component name (kebab-case or simple lowercase)\n if (!/^[a-z][a-z0-9-]*$/.test(name)) {\n console.error(chalk.red('Error: Component name must be in kebab-case (e.g., my-component) or simple lowercase (e.g., basic)'))\n process.exit(1)\n }\n\n const spinner = ora(`Generating ${name} component...`).start()\n\n // Check if we're in the project root (has src/components/registry directory)\n const registryDir = path.join(cwd, 'src/components/registry')\n if (!fs.existsSync(registryDir)) {\n spinner.fail('Error: src/components/registry directory not found')\n console.error(chalk.red('Are you in the correct project directory?'))\n process.exit(1)\n }\n\n const componentPascal = toPascalCase(name)\n const componentDir = path.join(registryDir, name)\n const componentFile = path.join(componentDir, 'index.tsx')\n const metadataFile = path.join(componentDir, 'metadata.ts')\n const exampleFile = path.join(componentDir, 'default.example.tsx')\n\n // Check if component already exists\n if (fs.existsSync(componentDir)) {\n spinner.warn(`${name} already exists`)\n console.log(chalk.yellow(`Component directory already exists. Skipping generation.`))\n process.exit(0)\n }\n\n // Create component directory\n await fs.ensureDir(componentDir)\n\n // Generate component file\n const componentContent = generateComponentContent(name, componentPascal)\n await fs.writeFile(componentFile, componentContent, 'utf-8')\n spinner.succeed(`Created ${name}/index.tsx`)\n\n // Generate metadata file\n const metadataContent = generateMetadataContent(name, componentPascal)\n await fs.writeFile(metadataFile, metadataContent, 'utf-8')\n spinner.succeed(`Created ${name}/metadata.ts`)\n\n // Generate example file\n const exampleContent = generateExampleContent(name, componentPascal)\n await fs.writeFile(exampleFile, exampleContent, 'utf-8')\n spinner.succeed(`Created ${name}/default.example.tsx`)\n\n // Update metadata registry\n spinner.start('Updating metadata registry...')\n try {\n await updateMetadataRegistry(cwd, name, componentPascal)\n spinner.succeed('Updated metadata registry')\n } catch (error) {\n spinner.warn('Could not automatically update metadata registry')\n console.log(chalk.yellow('\\nPlease manually add the following to src/lib/metadata-registry.ts:'))\n console.log(chalk.cyan(`import { metadata as ${toCamelCase(name)}Metadata } from \"@/components/registry/${name}/metadata\"`))\n console.log(chalk.cyan(` \"${name}\": ${toCamelCase(name)}Metadata,`))\n }\n\n console.log()\n console.log(chalk.green('✓ Component generated successfully!'))\n console.log()\n console.log('Next steps:')\n console.log(chalk.cyan(` 1. Edit src/components/registry/${name}/index.tsx`))\n console.log(chalk.cyan(` 2. Update src/components/registry/${name}/metadata.ts with examples and description`))\n console.log(chalk.cyan(` 3. Add more examples in src/components/registry/${name}/*.example.tsx`))\n console.log()\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error)\n process.exit(1)\n }\n })\n"],"mappings":"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","names":["Command","Command","prompts","chalk","ora","execa","fs","path","Command","chalk","ora","fs","path","Command"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homeontour-ui",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
4
4
  "description": "CLI for adding HomeOnTour UI components to your project",
5
5
  "type": "module",
6
6
  "bin": {