import { dirname, resolve } from 'node:path';
import { fileURLToPath } from 'node:url';
import react from '@vitejs/plugin-react';
import { defineConfig } from 'vite';
import dts from 'vite-plugin-dts';

const dir = dirname(fileURLToPath(import.meta.url));

export default defineConfig({
  /** Avoid copying `public/` assets (e.g. favicon) into the library bundle. */
  publicDir: false,
  plugins: [
    react(),
    dts({
      tsconfigPath: './tsconfig.lib.json',
      outDir: 'dist/npm',
      insertTypesEntry: true,
    }),
  ],
  build: {
    emptyOutDir: true,
    outDir: 'dist/npm',
    sourcemap: true,
    lib: {
      entry: resolve(dir, 'src/lib/index.ts'),
      fileName: 'index',
      formats: ['es'],
    },
    rollupOptions: {
      external: ['react', 'react-dom', 'react/jsx-runtime'],
      output: {
        assetFileNames: 'index.css',
      },
    },
  },
});
