import type { Config } from "tailwindcss";
import defaultTheme from "tailwindcss/defaultTheme";

export default {
  content: [
    "./app/components/**/*.{js,vue,ts}",
    "./app/layouts/**/*.vue",
    "./app/pages/**/*.vue",
    "./app/plugins/**/*.{js,ts}",
    "./app/app.vue",
    "./app/error.vue",
    "./app/**/*.{js,vue,ts}",
    "./content/**/*.{md,mdc,json,yml,yaml}",
  ],
  theme: {
    extend: {
      fontFamily: {
        sans: ["Inter var", ...defaultTheme.fontFamily.sans],
        serif: ["Crimson Text", "Georgia", ...defaultTheme.fontFamily.serif],
      },
      typography: ({ theme }) => ({
        DEFAULT: {
          css: {
            fontFamily: "'Crimson Text', Georgia, serif",
            fontSize: "1.125rem",
            lineHeight: "1.8",
            color: theme("colors.gray.900"),
            maxWidth: "none",
            h1: {
              fontFamily: "'Crimson Text', Georgia, serif",
              fontWeight: "700",
              fontSize: "2.5rem",
              marginTop: "2rem",
              marginBottom: "1rem",
              lineHeight: "1.2",
            },
            h2: {
              fontFamily: "'Crimson Text', Georgia, serif",
              fontWeight: "600",
              fontSize: "2rem",
              marginTop: "1.75rem",
              marginBottom: "0.75rem",
              lineHeight: "1.3",
            },
            h3: {
              fontFamily: "'Crimson Text', Georgia, serif",
              fontWeight: "600",
              fontSize: "1.5rem",
              marginTop: "1.5rem",
              marginBottom: "0.5rem",
              lineHeight: "1.4",
            },
            p: {
              marginTop: "1.25rem",
              marginBottom: "1.25rem",
              fontSize: "1.125rem",
              lineHeight: "1.8",
              color: theme("colors.gray.700"),
            },
            li: {
              marginTop: "0.5rem",
              marginBottom: "0.5rem",
              fontSize: "1.125rem",
              lineHeight: "1.8",
            },
            "ul > li": {
              paddingLeft: "1.75rem",
            },
            "ol > li": {
              paddingLeft: "1.75rem",
            },
            "ol li::marker": {
              color: theme("colors.gray.400"),
              fontWeight: "600",
            },
            "ul li::marker": {
              color: theme("colors.gray.400"),
            },
            a: {
              color: theme("colors.blue.600"),
              textDecoration: "underline",
              fontWeight: "500",
              "&:hover": {
                color: theme("colors.blue.800"),
              },
            },
            strong: {
              fontWeight: "700",
            },
            code: {
              fontFamily:
                "'SFMono-Regular', ui-monospace, 'JetBrains Mono', monospace",
              fontSize: "0.875em",
              fontWeight: "500",
              backgroundColor: theme("colors.gray.100"),
              padding: "0.15em 0.35em",
              borderRadius: theme("borderRadius.lg"),
            },
            "code::before": {
              content: '""',
            },
            "code::after": {
              content: '""',
            },
            blockquote: {
              fontStyle: "italic",
              borderLeftColor: theme("colors.gray.300"),
              borderLeftWidth: "0.25rem",
              paddingLeft: "1rem",
              marginTop: "1.5rem",
              marginBottom: "1.5rem",
              color: theme("colors.gray.600"),
            },
            pre: {
              fontFamily:
                "'SFMono-Regular', ui-monospace, 'JetBrains Mono', monospace",
              backgroundColor: theme("colors.gray.100"),
              borderRadius: theme("borderRadius.xl"),
              padding: "1.5rem",
              color: theme("colors.gray.800"),
            },
            hr: {
              borderColor: theme("colors.gray.200"),
            },
          },
        },
        lg: {
          css: {
            fontSize: "1.25rem",
            lineHeight: "1.8",
            p: {
              fontSize: "1.25rem",
              lineHeight: "1.8",
            },
            li: {
              fontSize: "1.25rem",
              lineHeight: "1.8",
            },
            h1: {
              fontSize: "3rem",
            },
            h2: {
              fontSize: "2.25rem",
            },
            h3: {
              fontSize: "1.75rem",
            },
          },
        },
        invert: {
          css: {
            color: theme("colors.gray.100"),
            h1: {
              color: theme("colors.gray.100"),
            },
            h2: {
              color: theme("colors.gray.100"),
            },
            h3: {
              color: theme("colors.gray.100"),
            },
            h4: {
              color: theme("colors.gray.100"),
            },
            h5: {
              color: theme("colors.gray.100"),
            },
            h6: {
              color: theme("colors.gray.100"),
            },
            strong: {
              color: theme("colors.gray.100"),
            },
            a: {
              color: theme("colors.blue.400"),
              "&:hover": {
                color: theme("colors.blue.300"),
              },
            },
            blockquote: {
              borderLeftColor: theme("colors.gray.700"),
              color: theme("colors.gray.300"),
            },
            code: {
              color: theme("colors.gray.100"),
              backgroundColor: theme("colors.gray.800"),
            },
            pre: {
              backgroundColor: theme("colors.gray.800"),
              color: theme("colors.gray.100"),
            },
            hr: {
              borderColor: theme("colors.gray.700"),
            },
          },
        },
      }),
    },
  },
} satisfies Config;
