const path = require('path'); const colors = require('tailwindcss/colors'); const defaultTheme = require('tailwindcss/defaultTheme'); const generatePalette = require(path.resolve(__dirname, ('src/@fuse/tailwind/utils/generate-palette'))); /** * Custom palettes * * Uses the generatePalette helper method to generate * Tailwind-like color palettes automatically */ const customPalettes = { brand: generatePalette('#2196F3') }; /** * Themes */ const themes = { // Default theme is required for theming system to work correctly 'default': { primary : { ...colors.indigo, DEFAULT: colors.indigo[600] }, accent : { ...colors.slate, DEFAULT: colors.slate[800] }, warn : { ...colors.red, DEFAULT: colors.red[600] }, 'on-warn': { 500: colors.red['50'] } }, // Rest of the themes will use the 'default' as the base theme // and extend them with their given configuration 'brand' : { primary: customPalettes.brand }, 'teal' : { primary: { ...colors.teal, DEFAULT: colors.teal[600] } }, 'rose' : { primary: colors.rose }, 'purple': { primary: { ...colors.purple, DEFAULT: colors.purple[600] } }, 'amber' : { primary: colors.amber } }; /** * Tailwind configuration */ const config = { darkMode : 'class', content : ['./src/**/*.{html,scss,ts}'], important : true, theme : { fontSize: { 'xs' : '0.625rem', 'sm' : '0.75rem', 'md' : '0.8125rem', 'base': '0.875rem', 'lg' : '1rem', 'xl' : '1.125rem', '2xl' : '1.25rem', '3xl' : '1.5rem', '4xl' : '2rem', '5xl' : '2.25rem', '6xl' : '2.5rem', '7xl' : '3rem', '8xl' : '4rem', '9xl' : '6rem', '10xl': '8rem' }, screens : { sm: '600px', md: '960px', lg: '1280px', xl: '1440px' }, extend : { animation : { 'spin-slow': 'spin 3s linear infinite' }, colors : { gray: colors.slate }, flex : { '0': '0 0 auto' }, fontFamily : { sans: `"Inter var", ${defaultTheme.fontFamily.sans.join(',')}`, mono: `"IBM Plex Mono", ${defaultTheme.fontFamily.mono.join(',')}` }, opacity : { 12: '0.12', 38: '0.38', 87: '0.87' }, rotate : { '-270': '270deg', '15' : '15deg', '30' : '30deg', '60' : '60deg', '270' : '270deg' }, scale : { '-1': '-1' }, zIndex : { '-1' : -1, '49' : 49, '60' : 60, '70' : 70, '80' : 80, '90' : 90, '99' : 99, '999' : 999, '9999' : 9999, '99999': 99999 }, spacing : { '13': '3.25rem', '15': '3.75rem', '18': '4.5rem', '22': '5.5rem', '26': '6.5rem', '30': '7.5rem', '50': '12.5rem', '90': '22.5rem', // Bigger values '100': '25rem', '120': '30rem', '128': '32rem', '140': '35rem', '160': '40rem', '180': '45rem', '192': '48rem', '200': '50rem', '240': '60rem', '256': '64rem', '280': '70rem', '320': '80rem', '360': '90rem', '400': '100rem', '480': '120rem', // Fractional values '1/2': '50%', '1/3': '33.333333%', '2/3': '66.666667%', '1/4': '25%', '2/4': '50%', '3/4': '75%' }, minHeight : ({theme}) => ({ ...theme('spacing') }), maxHeight : { none: 'none' }, minWidth : ({theme}) => ({ ...theme('spacing'), screen: '100vw' }), maxWidth : ({theme}) => ({ ...theme('spacing'), screen: '100vw' }), transitionDuration : { '400': '400ms' }, transitionTimingFunction: { 'drawer': 'cubic-bezier(0.25, 0.8, 0.25, 1)' }, // @tailwindcss/typography typography: ({theme}) => ({ DEFAULT: { css: { color : 'var(--fuse-text-default)', '[class~="lead"]' : { color: 'var(--fuse-text-secondary)' }, a : { color: 'var(--fuse-primary-500)' }, strong : { color: 'var(--fuse-text-default)' }, 'ol > li::before' : { color: 'var(--fuse-text-secondary)' }, 'ul > li::before' : { backgroundColor: 'var(--fuse-text-hint)' }, hr : { borderColor: 'var(--fuse-border)' }, blockquote : { color : 'var(--fuse-text-default)', borderLeftColor: 'var(--fuse-border)' }, h1 : { color: 'var(--fuse-text-default)' }, h2 : { color: 'var(--fuse-text-default)' }, h3 : { color: 'var(--fuse-text-default)' }, h4 : { color: 'var(--fuse-text-default)' }, 'figure figcaption': { color: 'var(--fuse-text-secondary)' }, code : { color : 'var(--fuse-text-default)', fontWeight: '500' }, 'a code' : { color: 'var(--fuse-primary)' }, pre : { color : theme('colors.white'), backgroundColor: theme('colors.gray.800') }, thead : { color : 'var(--fuse-text-default)', borderBottomColor: 'var(--fuse-border)' }, 'tbody tr' : { borderBottomColor: 'var(--fuse-border)' }, 'ol[type="A" s]' : false, 'ol[type="a" s]' : false, 'ol[type="I" s]' : false, 'ol[type="i" s]' : false } }, sm : { css: { code : { fontSize: '1em' }, pre : { fontSize: '1em' }, table: { fontSize: '1em' } } } }) } }, corePlugins: { appearance : false, container : false, float : false, clear : false, placeholderColor : false, placeholderOpacity: false, verticalAlign : false }, plugins : [ // Fuse - Tailwind plugins require(path.resolve(__dirname, ('src/@fuse/tailwind/plugins/utilities'))), require(path.resolve(__dirname, ('src/@fuse/tailwind/plugins/icon-size'))), require(path.resolve(__dirname, ('src/@fuse/tailwind/plugins/theming')))({themes}), // Other third party and/or custom plugins require('@tailwindcss/typography')({modifiers: ['sm', 'lg']}), require('@tailwindcss/aspect-ratio'), require('@tailwindcss/line-clamp') ] }; module.exports = config;