// postcss.config.js
import { purgeCSSPlugin } from '@fullhuman/postcss-purgecss';
import glob from 'glob-all';
import path from 'path';
import postcssGlobalData from '@csstools/postcss-global-data';
import postcssEasing from 'postcss-easings';
import postcssImport from 'postcss-import';
import postcssMixins from 'postcss-mixins';
import postcssNesting from 'postcss-nesting';
import postcssPresetEnv from 'postcss-preset-env';
import postcssUtilities from 'postcss-utilities';
import postcssFunctions from 'postcss-functions';
import customFunctions from './src/lib/postcss/functions';

const plugins = [
  postcssGlobalData({
    files: ['./src/styles/globals/custom-media.css'],
  }),
  postcssMixins({
    mixinsDir: './src/styles/mixins/',
  }),
  postcssImport(),
  postcssPresetEnv({
    stage: 1,
    features: {
      'nesting-rules': false,
      'media-query-ranges': {
        preserve: true,
      },
    },
  }),
  postcssEasing(),
  postcssUtilities(),
  postcssNesting(),
  postcssFunctions({
    functions: customFunctions,
  }),
];

if (process.env.NODE_ENV === 'production') {
  plugins.push(
    purgeCSSPlugin({
      content: glob.sync([
        path.join(process.cwd(), 'src/**/*.{js,jsx,ts,tsx,css}'),
        path.join(process.cwd(), 'content/**/*.{md,mdx}'),
      ]),
      safelist: ['html', 'body'],
    })
  );
}

export default {
  plugins,
};
