import { ProjectOptions } from '../utils/prompts';
export function generateAppComponent(options: ProjectOptions): string {
const ext = options.language === 'TypeScript' ? 'tsx' : 'jsx';
switch (options.framework) {
case 'Next.js':
// Next.js app/page.tsx
return `export default function Home() {
return (
Welcome to ${options.projectName}
);
}
`;
case 'Astro':
return `---
---
${options.projectName}
Welcome to ${options.projectName}
`;
case 'React':
return `function App() {
return (
Welcome to ${options.projectName}
Get started by editing src/App.${ext}
);
}
export default App;
`;
case 'Vue': {
const lang = options.language === 'TypeScript' ? 'ts' : 'js';
return `
Welcome to ${options.projectName}
Get started by editing src/App.vue
`;
}
default:
return '';
}
}
export function generateNextLayout(options: ProjectOptions): string {
let cssImport = '';
switch (options.cssTool) {
case 'Tailwind CSS':
cssImport = "import './globals.css'";
break;
case 'SCSS':
case 'CSS':
default:
break;
}
const isTypeScript = options.language === 'TypeScript';
const typeAnnotation = isTypeScript
? `: {
children: React.ReactNode
}`
: '';
return `export const metadata = {
title: '${options.projectName}',
description: 'Generated by chi CLI',
}
${cssImport ? cssImport + '\n' : ''}export default function RootLayout({ children }${typeAnnotation}) {
return (
{children}
)
}
`;
}