@atiqisrak/shadcn-weekly-calendar
Version:
A beautiful weekly calendar component for shadcn/ui with zoom functionality and event management
66 lines (58 loc) • 1.53 kB
text/typescript
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!');