import { type PluginUtils } from "tailwindcss/types/config"; export default function typographyStyles({ theme }: PluginUtils) { return { DEFAULT: { css: { "--tw-prose-body": theme("colors.zinc.700"), "--tw-prose-headings": theme("colors.zinc.900"), "--tw-prose-links": theme("colors.emerald.500"), "--tw-prose-links-hover": theme("colors.emerald.600"), "--tw-prose-links-underline": theme("colors.emerald.500 / 0.3"), "--tw-prose-bold": theme("colors.zinc.900"), "--tw-prose-counters": theme("colors.zinc.500"), "--tw-prose-bullets": theme("colors.zinc.300"), "--tw-prose-hr": theme("colors.zinc.900 / 0.05"), "--tw-prose-quotes": theme("colors.zinc.900"), "--tw-prose-quote-borders": theme("colors.zinc.200"), "--tw-prose-captions": theme("colors.zinc.500"), "--tw-prose-code": theme("colors.zinc.900"), "--tw-prose-code-bg": theme("colors.zinc.100"), "--tw-prose-code-ring": theme("colors.zinc.300"), "--tw-prose-th-borders": theme("colors.zinc.300"), "--tw-prose-td-borders": theme("colors.zinc.200"), "--tw-prose-invert-body": theme("colors.zinc.400"), "--tw-prose-invert-headings": theme("colors.white"), "--tw-prose-invert-links": theme("colors.emerald.400"), "--tw-prose-invert-links-hover": theme("colors.emerald.500"), "--tw-prose-invert-links-underline": theme("colors.emerald.500 / 0.3"), "--tw-prose-invert-bold": theme("colors.white"), "--tw-prose-invert-counters": theme("colors.zinc.400"), "--tw-prose-invert-bullets": theme("colors.zinc.600"), "--tw-prose-invert-hr": theme("colors.white / 0.05"), "--tw-prose-invert-quotes": theme("colors.zinc.100"), "--tw-prose-invert-quote-borders": theme("colors.zinc.700"), "--tw-prose-invert-captions": theme("colors.zinc.400"), "--tw-prose-invert-code": theme("colors.white"), "--tw-prose-invert-code-bg": theme("colors.zinc.700 / 0.15"), "--tw-prose-invert-code-ring": theme("colors.white / 0.1"), "--tw-prose-invert-th-borders": theme("colors.zinc.600"), "--tw-prose-invert-td-borders": theme("colors.zinc.700"), // Base color: "var(--tw-prose-body)", fontSize: theme("fontSize.sm")[0], lineHeight: theme("lineHeight.7"), // Text p: { marginTop: theme("spacing.6"), marginBottom: theme("spacing.6"), }, '[class~="lead"]': { fontSize: theme("fontSize.base")[0], ...theme("fontSize.base")[1], }, // Lists ol: { listStyleType: "decimal", marginTop: theme("spacing.5"), marginBottom: theme("spacing.5"), paddingLeft: "1.625rem", }, 'ol[type="A"]': { listStyleType: "upper-alpha", }, 'ol[type="a"]': { listStyleType: "lower-alpha", }, 'ol[type="A" s]': { listStyleType: "upper-alpha", }, 'ol[type="a" s]': { listStyleType: "lower-alpha", }, 'ol[type="I"]': { listStyleType: "upper-roman", }, 'ol[type="i"]': { listStyleType: "lower-roman", }, 'ol[type="I" s]': { listStyleType: "upper-roman", }, 'ol[type="i" s]': { listStyleType: "lower-roman", }, 'ol[type="1"]': { listStyleType: "decimal", }, ul: { listStyleType: "disc", marginTop: theme("spacing.5"), marginBottom: theme("spacing.5"), paddingLeft: "1.625rem", }, li: { marginTop: theme("spacing.2"), marginBottom: theme("spacing.2"), }, ":is(ol, ul) > li": { paddingLeft: theme("spacing[1.5]"), }, "ol > li::marker": { fontWeight: "400", color: "var(--tw-prose-counters)", }, "ul > li::marker": { color: "var(--tw-prose-bullets)", }, "> ul > li p": { marginTop: theme("spacing.3"), marginBottom: theme("spacing.3"), }, "> ul > li > *:first-child": { marginTop: theme("spacing.5"), }, "> ul > li > *:last-child": { marginBottom: theme("spacing.5"), }, "> ol > li > *:first-child": { marginTop: theme("spacing.5"), }, "> ol > li > *:last-child": { marginBottom: theme("spacing.5"), }, "ul ul, ul ol, ol ul, ol ol": { marginTop: theme("spacing.3"), marginBottom: theme("spacing.3"), }, // Horizontal rules hr: { borderColor: "var(--tw-prose-hr)", borderTopWidth: 1, marginTop: theme("spacing.16"), marginBottom: theme("spacing.16"), maxWidth: "none", marginLeft: `calc(-1 * ${theme("spacing.4")})`, marginRight: `calc(-1 * ${theme("spacing.4")})`, "@screen sm": { marginLeft: `calc(-1 * ${theme("spacing.6")})`, marginRight: `calc(-1 * ${theme("spacing.6")})`, }, "@screen lg": { marginLeft: `calc(-1 * ${theme("spacing.8")})`, marginRight: `calc(-1 * ${theme("spacing.8")})`, }, }, // Quotes blockquote: { fontWeight: "500", fontStyle: "italic", color: "var(--tw-prose-quotes)", borderLeftWidth: "0.25rem", borderLeftColor: "var(--tw-prose-quote-borders)", quotes: '"\\201C""\\201D""\\2018""\\2019"', marginTop: theme("spacing.8"), marginBottom: theme("spacing.8"), paddingLeft: theme("spacing.5"), }, "blockquote p:first-of-type::before": { content: "open-quote", }, "blockquote p:last-of-type::after": { content: "close-quote", }, // Headings h1: { color: "var(--tw-prose-headings)", fontWeight: "700", fontSize: theme("fontSize.2xl")[0], ...theme("fontSize.2xl")[1], marginBottom: theme("spacing.2"), }, h2: { color: "var(--tw-prose-headings)", fontWeight: "600", fontSize: theme("fontSize.lg")[0], ...theme("fontSize.lg")[1], marginTop: theme("spacing.16"), marginBottom: theme("spacing.2"), }, h3: { color: "var(--tw-prose-headings)", fontSize: theme("fontSize.base")[0], ...theme("fontSize.base")[1], fontWeight: "600", marginTop: theme("spacing.10"), marginBottom: theme("spacing.2"), }, // Media // img: { // marginTop: theme("spacing.2"), // marginBottom: theme("spacing.2"), // }, "video, figure": { marginTop: theme("spacing.8"), marginBottom: theme("spacing.8"), }, "figure > *": { marginTop: "0", marginBottom: "0", }, figcaption: { color: "var(--tw-prose-captions)", fontSize: theme("fontSize.xs")[0], ...theme("fontSize.xs")[1], marginTop: theme("spacing.2"), }, // Tables table: { width: "100%", tableLayout: "auto", textAlign: "left", marginTop: theme("spacing.8"), marginBottom: theme("spacing.8"), lineHeight: theme("lineHeight.6"), }, thead: { borderBottomWidth: "1px", borderBottomColor: "var(--tw-prose-th-borders)", }, "thead th": { color: "var(--tw-prose-headings)", fontWeight: "600", verticalAlign: "bottom", paddingRight: theme("spacing.2"), paddingBottom: theme("spacing.2"), paddingLeft: theme("spacing.2"), }, "thead th:first-child": { paddingLeft: "0", }, "thead th:last-child": { paddingRight: "0", }, "tbody tr": { borderBottomWidth: "1px", borderBottomColor: "var(--tw-prose-td-borders)", }, "tbody tr:last-child": { borderBottomWidth: "0", }, "tbody td": { verticalAlign: "baseline", }, tfoot: { borderTopWidth: "1px", borderTopColor: "var(--tw-prose-th-borders)", }, "tfoot td": { verticalAlign: "top", }, ":is(tbody, tfoot) td": { paddingTop: theme("spacing.2"), paddingRight: theme("spacing.2"), paddingBottom: theme("spacing.2"), paddingLeft: theme("spacing.2"), }, ":is(tbody, tfoot) td:first-child": { paddingLeft: "0", }, ":is(tbody, tfoot) td:last-child": { paddingRight: "0", }, // Inline elements a: { color: "var(--tw-prose-links)", textDecoration: "underline transparent", fontWeight: "500", transitionProperty: "color, text-decoration-color", transitionDuration: theme("transitionDuration.DEFAULT"), transitionTimingFunction: theme("transitionTimingFunction.DEFAULT"), "&:hover": { color: "var(--tw-prose-links-hover)", textDecorationColor: "var(--tw-prose-links-underline)", }, }, ":is(h1, h2, h3) a": { fontWeight: "inherit", }, strong: { color: "var(--tw-prose-bold)", fontWeight: "600", }, ":is(a, blockquote, thead th) strong": { color: "inherit", }, code: { color: "var(--tw-prose-code)", borderRadius: theme("borderRadius.lg"), paddingTop: theme("padding.1"), paddingRight: theme("padding[1.5]"), paddingBottom: theme("padding.1"), paddingLeft: theme("padding[1.5]"), boxShadow: "inset 0 0 0 1px var(--tw-prose-code-ring)", backgroundColor: "var(--tw-prose-code-bg)", fontSize: theme("fontSize.2xs"), }, ":is(a, h1, h2, h3, blockquote, thead th) code": { color: "inherit", }, "h2 code": { fontSize: theme("fontSize.base")[0], fontWeight: "inherit", }, "h3 code": { fontSize: theme("fontSize.sm")[0], fontWeight: "inherit", }, // Overrides ":is(h1, h2, h3) + *": { marginTop: "0", }, "> :first-child": { marginTop: "0 !important", }, "> :last-child": { marginBottom: "0 !important", }, }, }, invert: { css: { "--tw-prose-body": "var(--tw-prose-invert-body)", "--tw-prose-headings": "var(--tw-prose-invert-headings)", "--tw-prose-links": "var(--tw-prose-invert-links)", "--tw-prose-links-hover": "var(--tw-prose-invert-links-hover)", "--tw-prose-links-underline": "var(--tw-prose-invert-links-underline)", "--tw-prose-bold": "var(--tw-prose-invert-bold)", "--tw-prose-counters": "var(--tw-prose-invert-counters)", "--tw-prose-bullets": "var(--tw-prose-invert-bullets)", "--tw-prose-hr": "var(--tw-prose-invert-hr)", "--tw-prose-quotes": "var(--tw-prose-invert-quotes)", "--tw-prose-quote-borders": "var(--tw-prose-invert-quote-borders)", "--tw-prose-captions": "var(--tw-prose-invert-captions)", "--tw-prose-code": "var(--tw-prose-invert-code)", "--tw-prose-code-bg": "var(--tw-prose-invert-code-bg)", "--tw-prose-code-ring": "var(--tw-prose-invert-code-ring)", "--tw-prose-th-borders": "var(--tw-prose-invert-th-borders)", "--tw-prose-td-borders": "var(--tw-prose-invert-td-borders)", }, }, }; }