// tailwind.config.js // Reference: https://www.tailwindcss.cn/docs/configuration // 默认配置文件: https://unpkg.com/browse/tailwindcss@2.2.7/stubs/defaultConfig.stub.js const plugin = require('tailwindcss/plugin'); const colors = require('tailwindcss/colors'); const path = require('path'); const customTheme = { boxShadow: { normal: 'rgba(0, 0, 0, 0.15) 0 0 8px', elevationStroke: '0 0 0 1px rgba(4,4,5,0.15)', elevationLow: '0 1px 0 rgba(4,4,5,0.2),0 1.5px 0 rgba(6,6,7,0.05),0 2px 0 rgba(4,4,5,0.05)', elevationMedium: '0 4px 4px rgba(0,0,0,0.16)', elevationHigh: '0 8px 16px rgba(0,0,0,0.24)', }, }; const tailchat = plugin(({ e, addUtilities }) => { // Reference: https://www.tailwindcss.cn/docs/plugins#adding-utilities const newUtilities = { '.thin-line-bottom': { '&::after': { content: '" "', position: 'absolute', display: 'block', bottom: '1px', left: 0, right: 0, height: '1px', boxShadow: customTheme.boxShadow.elevationLow, // zIndex: 1, pointerEvents: 'none', }, }, '.thin-scrollbar': { '&::-webkit-scrollbar': { width: '8px', height: '8px', }, '&::-webkit-scrollbar-thumb': { borderWidth: '2px', borderRadius: '3px', }, '&::-webkit-scrollbar-track': { borderWidth: '2px', borderRadius: '4px', }, }, }; addUtilities(newUtilities); addUtilities( { '.overflow-smart': { overflow: ['auto', 'overlay'], }, '.overflow-x-smart': { 'overflow-x': ['auto', 'overlay'], }, '.overflow-y-smart': { 'overflow-y': ['auto', 'overlay'], }, }, { variants: ['hover'], } ); // Fork from https://github.com/ItzAfroBoy/tailwindcss-zoom/blob/master/index.js const percents = [ { key: '1/2', value: '50%', }, { key: '1/3', value: '33.333333%', }, { key: '2/3', value: '66.666667%', }, { key: '1/4', value: '25%', }, { key: '3/4', value: '75%', }, { key: '1/5', value: '20%', }, { key: '2/5', value: '40%', }, { key: '3/5', value: '60%', }, { key: '4/5', value: '80%', }, { key: '1/6', value: '16.666667%', }, { key: '5/6', value: '83.333333%', }, { key: '1/10', value: '10%', }, { key: '3/10', value: '30%', }, { key: '7/10', value: '70%', }, { key: '9/10', value: '90%', }, { key: 'full', value: '100%', }, { key: '1.1', value: '110%', }, { key: '1.2', value: '120%', }, { key: '1.25', value: '125%', }, { key: '1.5', value: '150%', }, { key: '1.75', value: '175%', }, { key: '2', value: '200%', }, ]; const zoom = percents.map((item) => { return { [`.${e(`zoom-${item.key}`)}`]: { zoom: item.value, }, }; }); addUtilities(zoom, { variants: ['responsive', 'hover'], }); }); module.exports = { purge: { enabled: process.env.NODE_ENV !== 'development', content: [path.resolve(__dirname, './src/**/*.{js,jsx,ts,tsx}')], }, darkMode: 'class', // or 'media' important: '#app', theme: { screens: { sm: { min: '640px' }, md: { min: '768px' }, lg: { min: '1024px' }, xl: { min: '1280px' }, '2xl': { min: '1536px' }, mobile: { max: '639px' }, // alias desktop: { min: '640px' }, // alias }, extend: { colors: { inherit: { DEFAULT: 'inherit', }, navbar: { light: colors.coolGray[300], dark: colors.coolGray[900], }, sidebar: { light: colors.coolGray[200], dark: colors.coolGray[800], }, content: { light: colors.coolGray[100], dark: colors.coolGray[700], }, typography: { light: colors.coolGray[700], dark: 'rgba(255, 255, 255, 0.85)', }, }, borderRadius: { '1/2': '50%', }, spacing: { 18: '4.5rem', 142: '35.5rem', 160: '40rem', }, lineHeight: { 13: '3.25rem', }, boxShadow: { ...customTheme.boxShadow, }, transitionProperty: { width: 'width', }, zIndex: { '-1': '-1', }, }, }, variants: { extend: { opacity: ['disabled'], display: ['group-hover'], borderRadius: ['hover'], borderWidth: ['last'], height: ['group-hover'], overflow: ['hover'], }, }, plugins: [tailchat], corePlugins: { gap: false, }, };