#!/usr/bin/env node
/**
 * Script: Criar novo componente com estrutura padrão
 * Uso: node create-component.js NomeDoComponente [feature]
 * Exemplo: node create-component.js UserCard rh
 */

const fs = require('fs');
const path = require('path');

const [, , componentName, feature] = process.argv;

if (!componentName) {
  console.error('❌ Nome do componente é obrigatório!');
  console.log('Uso: node create-component.js NomeDoComponente [feature]');
  process.exit(1);
}

// Definir caminho baseado em feature ou shared
const basePath = feature 
  ? path.join(__dirname, '../../src/features', feature, 'components', componentName)
  : path.join(__dirname, '../../src/components/shared', componentName);

// Criar pasta
if (!fs.existsSync(basePath)) {
  fs.mkdirSync(basePath, { recursive: true });
}

// Template Produção
const prodTemplate = `import { Card } from '@/components/ui/card';

/**
 * ${componentName} - Componente de produção
 */
export const ${componentName} = ({ data, className = '' }) => {
  return (
    <Card className={\`\${className}\`}>
      <div className="p-4">
        <h3 className="text-lg font-semibold">${componentName}</h3>
        {/* Implementar conteúdo */}
      </div>
    </Card>
  );
};
`;

// Template Dev (Playground)
const devTemplate = `import { ${componentName} } from './${componentName}';

/**
 * ${componentName}.dev - Versão para Playground com controles
 */
export const ${componentName}Dev = () => {
  const mockData = {
    // Mock data para testes
  };

  return (
    <div className="space-y-4">
      <div className="p-4 bg-muted rounded">
        <h4 className="text-sm font-medium mb-2">Controles (Dev)</h4>
        {/* Adicionar controles de teste */}
      </div>
      
      <${componentName} data={mockData} />
    </div>
  );
};
`;

// Template index.js
const indexTemplate = `export { ${componentName} } from './${componentName}';
export { ${componentName}Dev } from './${componentName}.dev';
`;

// Escrever arquivos
fs.writeFileSync(path.join(basePath, `${componentName}.jsx`), prodTemplate);
fs.writeFileSync(path.join(basePath, `${componentName}.dev.jsx`), devTemplate);
fs.writeFileSync(path.join(basePath, 'index.js'), indexTemplate);

console.log(`✅ Componente ${componentName} criado com sucesso!`);
console.log(`📁 Caminho: ${basePath}`);
console.log(`\n📝 Próximos passos:`);
console.log(`1. Implementar lógica em ${componentName}.jsx`);
console.log(`2. Adicionar controles em ${componentName}.dev.jsx`);
console.log(`3. Cadastrar no Playground (PlaygroundView.jsx)`);
console.log(`4. Testar no Playground antes de usar em views`);
