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

interface Schema {
  name: string;
  type: 'registry:ui';
  registryDependencies: string[];
  dependencies: string[];
  devDependencies: string[];
  tailwind?: {
    config?: Record<string, any>;
  };
  cssVars?: {
    light?: Record<string, string>;
    dark?: Record<string, string>;
  };
  files: Array<{
    name: string;
    content: string;
    type: 'registry:ui';
    target: string;
  }>;
}

const components = [
  {
    name: 'weekly-calendar',
    path: path.join(__dirname, '../components/ui/weekly-calendar.tsx'),
    registryDependencies: ['avatar', 'button', 'hover-card', 'scroll-area'],
    dependencies: ['lucide-react'],
    devDependencies: [],
  },
];

const registry = path.join(__dirname, '../public');
if (!fs.existsSync(registry)) {
  fs.mkdirSync(registry, { recursive: true });
}

for (const component of components) {
  const content = fs.readFileSync(component.path, 'utf8');

  const schema: Schema = {
    name: component.name,
    type: 'registry:ui',
    registryDependencies: component.registryDependencies,
    dependencies: component.dependencies,
    devDependencies: component.devDependencies,
    files: [
      {
        name: 'weekly-calendar.tsx',
        content,
        type: 'registry:ui',
        target: 'components/ui/weekly-calendar.tsx',
      },
    ],
  };

  fs.writeFileSync(
    path.join(registry, `${component.name}.json`),
    JSON.stringify(schema, null, 2)
  );
}

console.log('Registry generated successfully!');
