/** @type {import('tailwindcss').Config} */ // const lineClamp = require("@tailwindcss/line-clamp"); // module.exports = { // content: [ // "./pages/**/*.{js,ts,jsx,tsx}", // "./src/**/*.{js,ts,jsx,tsx}", // "./components/**/*.{js,ts,jsx,tsx}", // ], // darkMode: "class", // theme: { // extend: { // colors: { // default: "var(--color-bg-default)", // "default-alpha": "var(--color-bg-default-alpha)", // paper: "var(--color-paper)", // "paper-alpha": "var(--color-paper-alpha)", // primary: "var(--color-primary)", // secondary: "var(--color-secondary)", // error: "var(--color-error)", // warning: "var(--color-warning)", // info: "var(--color-info)", // success: "var(--color-success)", // "gray-light": "var(--color-gray-light)", // "gray-dark": "var(--color-gray-dark)", // }, // fontFamily: { // sans: [ // "Nunito Sans,SF Pro Text,SF Pro Icons,Roboto,Helvetica Neue,Helvetica,Arial,sans-serif", // ], // }, // }, // }, // plugins: [lineClamp], // }; const defaultTheme = require("tailwindcss/defaultTheme"); // const svgToDataUri = require("mini-svg-data-uri"); 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: { typography: (theme) => ({ DEFAULT: { css: { maxWidth: "none", color: theme("colors.slate.700"), hr: { borderColor: theme("colors.slate.100"), marginTop: "3em", marginBottom: "3em", }, "h1, h2, h3": { letterSpacing: "-0.025em", }, h2: { marginBottom: `${16 / 24}em`, }, h3: { marginTop: "2.4em", lineHeight: "1.4", }, h4: { marginTop: "2em", fontSize: "1.125em", }, "h2 small, h3 small, h4 small": { fontFamily: theme("fontFamily.mono").join(", "), color: theme("colors.slate.500"), fontWeight: 500, }, "h2 small": { fontSize: theme("fontSize.lg")[0], ...theme("fontSize.lg")[1], }, "h3 small": { fontSize: theme("fontSize.base")[0], ...theme("fontSize.base")[1], }, "h4 small": { fontSize: theme("fontSize.sm")[0], ...theme("fontSize.sm")[1], }, "h2, h3, h4": { "scroll-margin-top": "var(--scroll-mt)", }, ul: { listStyleType: "none", paddingLeft: 0, }, "ul > li": { position: "relative", paddingLeft: "1.75em", }, "ul > li::before": { content: '""', width: "0.75em", height: "0.125em", position: "absolute", top: "calc(0.875em - 0.0625em)", left: 0, borderRadius: "999px", backgroundColor: theme("colors.slate.300"), }, a: { fontWeight: theme("fontWeight.semibold"), textDecoration: "none", borderBottom: `1px solid ${theme("colors.sky.300")}`, }, "a:hover": { borderBottomWidth: "2px", }, "a code": { color: "inherit", fontWeight: "inherit", }, strong: { color: theme("colors.slate.900"), fontWeight: theme("fontWeight.semibold"), }, "a strong": { color: "inherit", fontWeight: "inherit", }, kbd: { background: theme("colors.slate.100"), borderWidth: "1px", borderColor: theme("colors.slate.200"), padding: "0.125em 0.25em", color: theme("colors.slate.700"), fontWeight: 500, fontSize: "0.875em", fontVariantLigatures: "none", borderRadius: "4px", margin: "0 1px", }, code: { fontWeight: theme("fontWeight.medium"), fontVariantLigatures: "none", }, pre: { color: theme("colors.slate.50"), borderRadius: theme("borderRadius.xl"), padding: theme("padding.5"), boxShadow: theme("boxShadow.md"), display: "flex", marginTop: `${20 / 14}em`, marginBottom: `${32 / 14}em`, }, "p + pre": { marginTop: `${-4 / 14}em`, }, "pre + pre": { marginTop: `${-16 / 14}em`, }, "pre code": { flex: "none", minWidth: "100%", }, table: { fontSize: theme("fontSize.sm")[0], lineHeight: theme("fontSize.sm")[1].lineHeight, }, thead: { color: theme("colors.slate.700"), borderBottomColor: theme("colors.slate.200"), }, "thead th": { paddingTop: 0, fontWeight: theme("fontWeight.semibold"), }, "tbody tr": { borderBottomColor: theme("colors.slate.100"), }, "tbody tr:last-child": { borderBottomWidth: "1px", }, "tbody code": { fontSize: theme("fontSize.xs")[0], }, "figure figcaption": { textAlign: "center", fontStyle: "italic", }, "figure > figcaption": { marginTop: `${12 / 14}em`, }, }, }, dark: { css: { color: theme("colors.slate.400"), "h2, h3, h4, thead th": { color: theme("colors.slate.200"), }, "h2 small, h3 small, h4 small": { color: theme("colors.slate.400"), }, kbd: { background: theme("colors.slate.700"), borderColor: theme("colors.slate.600"), color: theme("colors.slate.200"), }, code: { color: theme("colors.slate.200"), }, hr: { borderColor: theme("colors.slate.200"), opacity: "0.05", }, pre: { boxShadow: "inset 0 0 0 1px rgb(255 255 255 / 0.1)", }, a: { color: theme("colors.white"), borderBottomColor: theme("colors.sky.400"), }, strong: { color: theme("colors.slate.200"), }, thead: { color: theme("colors.slate.300"), borderBottomColor: "rgb(148 163 184 / 0.2)", }, "tbody tr": { borderBottomColor: "rgb(148 163 184 / 0.1)", }, blockQuote: { color: theme("colors.white"), }, }, }, }), fontFamily: { sans: ["Nunito Sans,SF Pro Text,SF Pro Icons, Inter var", ...defaultTheme.fontFamily.sans], mono: ["Fira Code VF", ...defaultTheme.fontFamily.mono], source: ["Source Sans Pro", ...defaultTheme.fontFamily.sans], "ubuntu-mono": ["Ubuntu Mono", ...defaultTheme.fontFamily.mono], }, spacing: { 18: "4.5rem", full: "100%", }, maxWidth: { "8xl": "90rem", }, keyframes: { "flash-code": { "0%": { backgroundColor: "rgb(125 211 252 / 0.1)" }, "100%": { backgroundColor: "transparent" }, }, }, animation: { "flash-code": "flash-code 1s forwards", "flash-code-slow": "flash-code 2s forwards", }, // backgroundImage: (theme) => ({ // squiggle: `url("${svgToDataUri( // `` // )}")`, // }), }, }, 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( // { // "bg-grid": (value) => ({ // backgroundImage: `url("${svgToDataUri( // `` // )}")`, // }), // }, // { values: flattenColorPalette(theme("backgroundColor")), type: "color" } // ); 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", }, }); }, ], };