mirror of
https://github.com/r-freeman/portfolio.git
synced 2024-11-24 22:15:41 +00:00
321 lines
14 KiB
TypeScript
321 lines
14 KiB
TypeScript
import type {Config} from 'tailwindcss'
|
|
|
|
export default {
|
|
content: [
|
|
'./app/**/*.{js,ts,jsx,tsx,mdx}',
|
|
'./components/**/*.{js,jsx,tsx}'
|
|
],
|
|
darkMode: 'class',
|
|
plugins: [
|
|
require('@tailwindcss/typography')
|
|
],
|
|
theme: {
|
|
extend: {
|
|
colors: {
|
|
green: {
|
|
950: '#1fdf64'
|
|
},
|
|
black: {
|
|
950: '#0a0a0a'
|
|
}
|
|
}
|
|
},
|
|
fontSize: {
|
|
xs: ['0.8125rem', {lineHeight: '1.5rem'}],
|
|
sm: ['0.875rem', {lineHeight: '1.5rem'}],
|
|
base: ['1rem', {lineHeight: '1.75rem'}],
|
|
lg: ['1.125rem', {lineHeight: '1.75rem'}],
|
|
xl: ['1.25rem', {lineHeight: '2rem'}],
|
|
'2xl': ['1.5rem', {lineHeight: '2rem'}],
|
|
'3xl': ['1.875rem', {lineHeight: '2.25rem'}],
|
|
'4xl': ['2rem', {lineHeight: '2.5rem'}],
|
|
'5xl': ['3rem', {lineHeight: '3.5rem'}],
|
|
'6xl': ['3.75rem', {lineHeight: '1'}],
|
|
'7xl': ['4.5rem', {lineHeight: '1'}],
|
|
'8xl': ['6rem', {lineHeight: '1'}],
|
|
'9xl': ['8rem', {lineHeight: '1'}],
|
|
},
|
|
typography: (theme: any) => ({
|
|
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-underline': 'var(--tw-prose-invert-underline)',
|
|
'--tw-prose-underline-hover':
|
|
'var(--tw-prose-invert-underline-hover)',
|
|
'--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-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-pre-code': 'var(--tw-prose-invert-pre-code)',
|
|
'--tw-prose-pre-bg': 'var(--tw-prose-invert-pre-bg)',
|
|
'--tw-prose-pre-border': 'var(--tw-prose-invert-pre-border)',
|
|
'--tw-prose-th-borders': 'var(--tw-prose-invert-th-borders)',
|
|
'--tw-prose-td-borders': 'var(--tw-prose-invert-td-borders)',
|
|
},
|
|
},
|
|
DEFAULT: {
|
|
css: {
|
|
'--tw-prose-body': theme('colors.zinc.600'),
|
|
'--tw-prose-headings': theme('colors.zinc.900'),
|
|
'--tw-prose-links': theme('colors.indigo.500'),
|
|
'--tw-prose-links-hover': theme('colors.indigo.600'),
|
|
'--tw-prose-underline': theme('colors.teal.500 / 0.2'),
|
|
'--tw-prose-underline-hover': theme('colors.indigo.500'),
|
|
'--tw-prose-bold': theme('colors.zinc.900'),
|
|
'--tw-prose-counters': theme('colors.zinc.900'),
|
|
'--tw-prose-bullets': theme('colors.zinc.900'),
|
|
'--tw-prose-hr': theme('colors.zinc.100'),
|
|
'--tw-prose-quote-borders': theme('colors.zinc.200'),
|
|
'--tw-prose-captions': theme('colors.zinc.400'),
|
|
'--tw-prose-code': theme('colors.zinc.700'),
|
|
'--tw-prose-code-bg': theme('colors.zinc.300 / 0.2'),
|
|
'--tw-prose-pre-code': theme('colors.zinc.100'),
|
|
'--tw-prose-pre-bg': theme('colors.zinc.900'),
|
|
'--tw-prose-pre-border': 'transparent',
|
|
'--tw-prose-th-borders': theme('colors.zinc.200'),
|
|
'--tw-prose-td-borders': theme('colors.zinc.100'),
|
|
|
|
'--tw-prose-invert-body': theme('colors.zinc.400'),
|
|
'--tw-prose-invert-headings': theme('colors.zinc.200'),
|
|
'--tw-prose-invert-links': theme('colors.indigo.400'),
|
|
'--tw-prose-invert-links-hover': theme('colors.indigo.400'),
|
|
'--tw-prose-invert-underline': theme('colors.indigo.400 / 0.3'),
|
|
'--tw-prose-invert-underline-hover': theme('colors.indigo.400'),
|
|
'--tw-prose-invert-bold': theme('colors.zinc.200'),
|
|
'--tw-prose-invert-counters': theme('colors.zinc.200'),
|
|
'--tw-prose-invert-bullets': theme('colors.zinc.200'),
|
|
'--tw-prose-invert-hr': theme('colors.zinc.700 / 0.4'),
|
|
'--tw-prose-invert-quote-borders': theme('colors.zinc.500'),
|
|
'--tw-prose-invert-captions': theme('colors.zinc.500'),
|
|
'--tw-prose-invert-code': theme('colors.zinc.300'),
|
|
'--tw-prose-invert-code-bg': theme('colors.zinc.200 / 0.05'),
|
|
'--tw-prose-invert-pre-code': theme('colors.zinc.100'),
|
|
'--tw-prose-invert-pre-bg': 'rgb(0 0 0 / 0.4)',
|
|
'--tw-prose-invert-pre-border': theme('colors.zinc.200 / 0.1'),
|
|
'--tw-prose-invert-th-borders': theme('colors.zinc.700'),
|
|
'--tw-prose-invert-td-borders': theme('colors.zinc.800'),
|
|
|
|
// Base
|
|
color: 'var(--tw-prose-body)',
|
|
lineHeight: theme('lineHeight.7'),
|
|
'> *': {
|
|
marginTop: theme('spacing.10'),
|
|
marginBottom: theme('spacing.10'),
|
|
},
|
|
p: {
|
|
marginTop: theme('spacing.7'),
|
|
marginBottom: theme('spacing.7'),
|
|
},
|
|
|
|
// Headings
|
|
'h2, h3': {
|
|
color: 'var(--tw-prose-headings)',
|
|
fontWeight: theme('fontWeight.semibold'),
|
|
},
|
|
h2: {
|
|
fontSize: theme('fontSize.xl')[0],
|
|
lineHeight: theme('lineHeight.7'),
|
|
marginTop: theme('spacing.20'),
|
|
marginBottom: theme('spacing.4'),
|
|
},
|
|
h3: {
|
|
fontSize: theme('fontSize.base')[0],
|
|
lineHeight: theme('lineHeight.7'),
|
|
marginTop: theme('spacing.16'),
|
|
marginBottom: theme('spacing.4'),
|
|
},
|
|
':is(h2, h3) + *': {
|
|
marginTop: 0,
|
|
},
|
|
|
|
// Images
|
|
img: {
|
|
borderRadius: theme('borderRadius.3xl'),
|
|
},
|
|
|
|
// Inline elements
|
|
a: {
|
|
color: 'var(--tw-prose-links)',
|
|
fontWeight: theme('fontWeight.semibold'),
|
|
textDecoration: 'underline',
|
|
textDecorationColor: 'var(--tw-prose-underline)',
|
|
transitionProperty: 'color, text-decoration-color',
|
|
transitionDuration: theme('transitionDuration.150'),
|
|
transitionTimingFunction: theme('transitionTimingFunction.in-out'),
|
|
},
|
|
'a:hover': {
|
|
color: 'var(--tw-prose-links-hover)',
|
|
textDecorationColor: 'var(--tw-prose-underline-hover)',
|
|
},
|
|
strong: {
|
|
color: 'var(--tw-prose-bold)',
|
|
fontWeight: theme('fontWeight.semibold'),
|
|
},
|
|
code: {
|
|
display: 'inline-block',
|
|
color: 'var(--tw-prose-code)',
|
|
fontSize: theme('fontSize.sm')[0],
|
|
fontWeight: theme('fontWeight.semibold'),
|
|
backgroundColor: 'var(--tw-prose-code-bg)',
|
|
borderRadius: theme('borderRadius.lg'),
|
|
paddingLeft: theme('spacing.1'),
|
|
paddingRight: theme('spacing.1'),
|
|
},
|
|
'a code': {
|
|
color: 'inherit',
|
|
},
|
|
':is(h2, h3) code': {
|
|
fontWeight: theme('fontWeight.bold'),
|
|
},
|
|
|
|
// Quotes
|
|
blockquote: {
|
|
paddingLeft: theme('spacing.6'),
|
|
borderLeftWidth: theme('borderWidth.2'),
|
|
borderLeftColor: 'var(--tw-prose-quote-borders)',
|
|
fontStyle: 'italic',
|
|
},
|
|
|
|
// Figures
|
|
figcaption: {
|
|
color: 'var(--tw-prose-captions)',
|
|
fontSize: theme('fontSize.sm')[0],
|
|
lineHeight: theme('lineHeight.6'),
|
|
marginTop: theme('spacing.3'),
|
|
},
|
|
'figcaption > p': {
|
|
margin: 0,
|
|
},
|
|
|
|
// Lists
|
|
ul: {
|
|
listStyleType: 'disc',
|
|
},
|
|
ol: {
|
|
listStyleType: 'decimal',
|
|
},
|
|
'ul, ol': {
|
|
paddingLeft: theme('spacing.6'),
|
|
},
|
|
li: {
|
|
marginTop: theme('spacing.6'),
|
|
marginBottom: theme('spacing.6'),
|
|
paddingLeft: theme('spacing[3.5]'),
|
|
},
|
|
'li::marker': {
|
|
fontSize: theme('fontSize.sm')[0],
|
|
fontWeight: theme('fontWeight.semibold'),
|
|
},
|
|
'ol > li::marker': {
|
|
color: 'var(--tw-prose-counters)',
|
|
},
|
|
'ul > li::marker': {
|
|
color: 'var(--tw-prose-bullets)',
|
|
},
|
|
'li :is(ol, ul)': {
|
|
marginTop: theme('spacing.4'),
|
|
marginBottom: theme('spacing.4'),
|
|
},
|
|
'li :is(li, p)': {
|
|
marginTop: theme('spacing.3'),
|
|
marginBottom: theme('spacing.3'),
|
|
},
|
|
|
|
// Code blocks
|
|
pre: {
|
|
color: 'var(--tw-prose-pre-code)',
|
|
fontSize: theme('fontSize.sm')[0],
|
|
fontWeight: theme('fontWeight.medium'),
|
|
backgroundColor: 'var(--tw-prose-pre-bg)',
|
|
borderRadius: theme('borderRadius.3xl'),
|
|
padding: theme('spacing.8'),
|
|
overflowX: 'auto',
|
|
border: '1px solid',
|
|
borderColor: 'var(--tw-prose-pre-border)',
|
|
},
|
|
'pre code': {
|
|
display: 'inline',
|
|
color: 'inherit',
|
|
fontSize: 'inherit',
|
|
fontWeight: 'inherit',
|
|
backgroundColor: 'transparent',
|
|
borderRadius: 0,
|
|
padding: 0,
|
|
},
|
|
|
|
// Horizontal rules
|
|
hr: {
|
|
marginTop: theme('spacing.20'),
|
|
marginBottom: theme('spacing.20'),
|
|
borderTopWidth: '1px',
|
|
borderColor: 'var(--tw-prose-hr)',
|
|
'@screen lg': {
|
|
marginLeft: `calc(${theme('spacing.12')} * -1)`,
|
|
marginRight: `calc(${theme('spacing.12')} * -1)`,
|
|
},
|
|
},
|
|
|
|
// Tables
|
|
table: {
|
|
width: '100%',
|
|
tableLayout: 'auto',
|
|
textAlign: 'left',
|
|
fontSize: theme('fontSize.sm')[0],
|
|
},
|
|
thead: {
|
|
borderBottomWidth: '1px',
|
|
borderBottomColor: 'var(--tw-prose-th-borders)',
|
|
},
|
|
'thead th': {
|
|
color: 'var(--tw-prose-headings)',
|
|
fontWeight: theme('fontWeight.semibold'),
|
|
verticalAlign: 'bottom',
|
|
paddingBottom: theme('spacing.2'),
|
|
},
|
|
'thead th:not(:first-child)': {
|
|
paddingLeft: theme('spacing.2'),
|
|
},
|
|
'thead th:not(:last-child)': {
|
|
paddingRight: theme('spacing.2'),
|
|
},
|
|
'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'),
|
|
paddingBottom: theme('spacing.2'),
|
|
},
|
|
':is(tbody, tfoot) td:not(:first-child)': {
|
|
paddingLeft: theme('spacing.2'),
|
|
},
|
|
':is(tbody, tfoot) td:not(:last-child)': {
|
|
paddingRight: theme('spacing.2'),
|
|
},
|
|
},
|
|
},
|
|
}),
|
|
},
|
|
} satisfies Config
|
|
|