import type { KnipConfig } from "knip";

const config: KnipConfig = {
  // Entry points
  entry: [
    "app/**/*.{ts,tsx}",
    "next.config.ts",
    "content-collections.ts",
    "postcss.config.mjs",
    "eslint.config.mjs",
    "instrumentation-client.ts",
  ],

  // Project files to analyze
  project: ["**/*.{ts,tsx}"],

  // Paths aliases (from tsconfig.json)
  paths: {
    "@/*": ["./*"],
    "content-collections": ["./.content-collections/generated"],
  },

  // Ignore patterns
  ignore: [
    ".content-collections/**",
    ".contentlayer/**",
    ".next/**",
    ".vercel/**",
    "documentations/**",
    "node_modules/**",
  ],

  // Ignore dependencies - used via non-standard imports
  ignoreDependencies: [
    "@tailwindcss/typography", // Used via @plugin directive in globals.css
    "tailwindcss", // Required by @tailwindcss/postcss and typography
  ],

  // Plugin-specific configuration
  next: {
    entry: ["next.config.ts", "app/**/*.{ts,tsx}"],
  },

  eslint: {
    config: ["eslint.config.mjs"],
  },

  postcss: {
    config: ["postcss.config.mjs"],
  },
};

export default config;
