import { ProjectOptions } from '../utils/prompts';
export function generateMainFile(options: ProjectOptions): string {
const ext = options.language === 'TypeScript' ? 'tsx' : 'jsx';
switch (options.framework) {
case 'Next.js':
case 'Astro':
return ''; // Next.js uses app directory structure, Astro doesn't need main file
case 'React': {
const cssImport = getCssImport(options.cssTool);
return `import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
${cssImport}
ReactDOM.createRoot(document.getElementById('root')!).render(
,
);
`;
}
case 'Vue': {
const cssImport = getCssImport(options.cssTool);
return `import { createApp } from 'vue';
import App from './App.vue';
${cssImport}
createApp(App).mount('#root');
`;
}
default:
return '';
}
}
function getCssImport(cssTool: ProjectOptions['cssTool']): string {
switch (cssTool) {
case 'Tailwind CSS':
return "import './index.css';";
case 'SCSS':
return "import './index.scss';";
case 'CSS':
default:
return "import './index.css';";
}
}
export function generateViteEnvFile(options: ProjectOptions): string {
switch (options.language) {
case 'TypeScript':
return `///
`;
case 'JavaScript':
default:
return '';
}
}