Files
vue-bits/jsrepo.config.ts
David Haz e621971723 jsrepo v3
2025-12-15 23:50:24 +02:00

75 lines
1.9 KiB
TypeScript

import { defineConfig, type RegistryItem } from 'jsrepo';
import { distributed } from 'jsrepo/outputs';
import { componentMetadata } from './src/constants/Information';
export default defineConfig({
registry: {
name: '@vue-bits',
description:
'An open source collection of animated, interactive & fully customizable Vue components for building stunning, memorable user interfaces.',
homepage: 'https://vue-bits.dev',
authors: ['David Haz'],
bugs: 'https://github.com/DavidHDev/vue-bits/issues',
repository: 'https://github.com/DavidHDev/vue-bits',
tags: [
'vue',
'javascript',
'components',
'web',
'vuejs',
'css-animations',
'component-library',
'ui-components',
'3d',
'ui-library',
'tailwind',
'tailwindcss',
'components',
'components-library'
],
excludeDeps: ['vue'],
outputs: [distributed({ dir: 'public/r' })],
items: [
...Object.values(componentMetadata).map(component =>
defineComponent({
title: component.name,
description: component.description,
category: component.category
})
)
].flat()
}
});
/**
* Define a component to be exposed from the registry. Creates a single variant of the component.
*
* @param title The title of the component.
* @param description The description of the component.
* @param category The category of the component.
* @returns An array with a single RegistryItem object.
*/
function defineComponent({
title,
description,
category
}: {
title: string;
description: string;
category: string;
}): RegistryItem[] {
return [
{
name: title,
title,
description,
type: 'registry:component',
categories: [category],
files: [
{
path: `src/content/${category}/${title}`
}
]
}
];
}