/** @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,
],
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],
},
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",
},
});
},
],
};