/** @type {import('tailwindcss').Config} */ const defaultTheme = require("tailwindcss/defaultTheme"); const { default: flattenColorPalette, } = require("tailwindcss/lib/util/flattenColorPalette"); module.exports = { // experimental: { // optimizeUniversalDefaults: true, // }, content: [ "./pages/**/*.{js,ts,jsx,tsx}", "./src/**/*.{js,ts,jsx,tsx}", "./components/**/*.{js,ts,jsx,tsx}", ], darkMode: "class", theme: { // `demo-*` screens are used for the "mobile-first" responsive demo screens: { sm: "640px", "demo-sm": "720px", md: "768px", lg: "1024px", xl: "1280px", "2xl": "1536px", }, aspectRatio: { auto: "auto", square: "1 / 1", video: "16 / 9", 1: "1", 2: "2", 3: "3", 4: "4", 5: "5", 6: "6", 7: "7", 8: "8", 9: "9", 10: "10", 11: "11", 12: "12", 13: "13", 14: "14", 15: "15", 16: "16", }, extend: { fontFamily: { sans: [ "Nunito Sans", "SF Pro Text", "SF Pro Icons", "Inter var", ...defaultTheme.fontFamily.sans, ], serif: ["Merriweather", ...defaultTheme.fontFamily.serif], mono: ["Fira Code VF", ...defaultTheme.fontFamily.mono], source: ["Source Sans Pro", ...defaultTheme.fontFamily.sans], "ubuntu-mono": ["Ubuntu Mono", ...defaultTheme.fontFamily.mono], }, }, }, plugins: [ // require("daisyui"), require("@tailwindcss/line-clamp"), require("@tailwindcss/typography"), require("@tailwindcss/aspect-ratio"), require("@tailwindcss/forms")({ strategy: "class" }), function ({ addVariant }) { addVariant( "supports-backdrop-blur", "@supports (backdrop-filter: blur(0)) or (-webkit-backdrop-filter: blur(0))" ); addVariant( "supports-scrollbars", "@supports selector(::-webkit-scrollbar)" ); addVariant("children", "& > *"); addVariant("scrollbar", "&::-webkit-scrollbar"); addVariant("scrollbar-track", "&::-webkit-scrollbar-track"); addVariant("scrollbar-thumb", "&::-webkit-scrollbar-thumb"); }, function ({ matchUtilities, theme }) { matchUtilities( { highlight: (value) => ({ boxShadow: `inset 0 1px 0 0 ${value}` }), }, { values: flattenColorPalette(theme("backgroundColor")), type: "color" } ); }, function ({ addUtilities, theme }) { let backgroundSize = "7.07px 7.07px"; let backgroundImage = (color) => `linear-gradient(135deg, ${color} 10%, transparent 10%, transparent 50%, ${color} 50%, ${color} 60%, transparent 60%, transparent 100%)`; let colors = Object.entries(theme("backgroundColor")).filter( ([, value]) => typeof value === "object" && value[400] && value[500] ); addUtilities( Object.fromEntries( colors.map(([name, colors]) => { let backgroundColor = colors[400] + "1a"; // 10% opacity let stripeColor = colors[500] + "80"; // 50% opacity return [ `.bg-stripes-${name}`, { backgroundColor, backgroundImage: backgroundImage(stripeColor), backgroundSize, }, ]; }) ) ); addUtilities({ ".bg-stripes-white": { backgroundImage: backgroundImage("rgba(255 255 255 / 0.75)"), backgroundSize, }, }); addUtilities({ ".ligatures-none": { fontVariantLigatures: "none", }, }); }, ], };