#!/usr/bin/env node /** * Component Structure Setup Script * * This script creates the proper folder structure for each component in the migration list * following the React component conventions. */ const fs = require('node:fs') const path = require('node:path') // Base directory for components const BASE_DIR = path.join(process.cwd(), 'apps/deploy-fe/src/components') // Component mappings from migration list const componentMappings = [ // Core Components { name: 'Dropdown', targetDir: 'core/dropdown' }, { name: 'FormatMilliSecond', targetDir: 'core/format-milli-second' }, { name: 'Logo', targetDir: 'core/logo' }, { name: 'SearchBar', targetDir: 'core/search-bar' }, { name: 'Stepper', targetDir: 'core/stepper' }, { name: 'StopWatch', targetDir: 'core/stop-watch' }, { name: 'VerticalStepper', targetDir: 'core/vertical-stepper' }, // Layout Components - Navigation { name: 'GitHubSessionButton', targetDir: 'layout/navigation/github-session-button' }, { name: 'LaconicIcon', targetDir: 'layout/navigation/laconic-icon' }, { name: 'NavigationActions', targetDir: 'layout/navigation/navigation-actions' }, { name: 'WalletSessionId', targetDir: 'layout/navigation/wallet-session-id' }, // Layout Components - Screen Header { name: 'ActionButton', targetDir: 'layout/screen-header/action-button' }, { name: 'Header', targetDir: 'layout/screen-header/header' }, // Layout Components - Screen Wrapper { name: 'TabWrapper', targetDir: 'layout/screen-wrapper/tab-wrapper' }, // Layout Components - Search { name: 'ProjectSearchBar', targetDir: 'layout/search/project-search-bar' } ] /** * Create index.ts barrel file content */ function createIndexFileContent(componentName) { return `export * from './${componentName}';\nexport * from './types';\n` } /** * Create types.ts file content */ function createTypesFileContent(componentName) { return `export interface ${componentName}Props {\n // Define component props here\n}\n` } /** * Create README.md file content */ function createReadmeContent(componentName) { return `# ${componentName} Component\n\n## Overview\nThis component was migrated from the original Laconic repository.\n\n## Usage\n\`\`\`tsx\nimport { ${componentName} } from '@/components/${componentName.toLowerCase()}';\n\n// Example usage\n<${componentName} />\n\`\`\`\n` } /** * Create placeholder component file content */ function createComponentFileContent(componentName) { return `import { FC } from 'react';\nimport { ${componentName}Props } from './types';\n\n/**\n * ${componentName} component\n */\nexport const ${componentName}: FC<${componentName}Props> = (props) => {\n return (\n