import fs from "fs-extra"; import path from "path"; import chalk from "chalk"; /** * Generate a new page * @param pageName The name of the page * @param projectType 'next-app' | 'next-pages' | 'react' * @param withStyles Optional: add Tailwind class example */ export async function generatePage( pageName: string, projectType: "next-app" | "next-pages" | "react" = "react", withStyles: boolean = true ) { if (!pageName) { console.error(chalk.red("❌ Page name is required!")); return; } let pagePath: string; switch (projectType) { case "next-app": pagePath = path.join(process.cwd(), "app", pageName); fs.ensureDirSync(pagePath); pagePath = path.join(pagePath, "page.tsx"); // App Router break; case "next-pages": const pagesDir = path.join(process.cwd(), "src", "pages"); fs.ensureDirSync(pagesDir); pagePath = path.join(pagesDir, `${pageName}.tsx`); break; case "react": default: const reactPagesDir = fs.existsSync(path.join(process.cwd(), "src")) ? path.join(process.cwd(), "src", "pages") : path.join(process.cwd(), "pages"); fs.ensureDirSync(reactPagesDir); pagePath = path.join(reactPagesDir, `${pageName}.tsx`); break; } const pageContent = `import React from 'react'; const ${pageName} = () => { return (
This is the ${pageName} page.