const lineClamp = require('./plugins/line-clamp.js')
const plugin = require('tailwindcss/plugin')
const designToken = require('./theme/theme.json')
const { loadColor, loadLayout, loadCssVar } = require('./plugins/loadTheme.js')
const customColors = loadColor(designToken)
const layoutToken = loadLayout(designToken)
const borderRadiusToken = loadCssVar(designToken.baseLayout.radius)
module.exports = {
content: ['./src/**/*.{css,less}'],
theme: {
colors: customColors,
boxShadow: layoutToken.boxShadow,
spacing: layoutToken.spacing,
lineHeight: layoutToken.lineHeight,
fontSize: layoutToken.fontSize,
borderRadius: layoutToken.borderRadius,
borderWidth: layoutToken.borderWidth,
opacity: layoutToken.opacity,
extend: {
backgroundSize: {
'w200h100': '200% 100%'
},
animation: {
'skeleton-loading-1500ms': '1.5s skeleton-loading-1500ms ease-in-out infinite'
},
keyframes: {
leftMove: {
'0%': { transform: 'translateX(0)' },
'100%': { transform: 'translateX(-100%)' }
},
'loading-dash': {
'0%': {
'stroke-dasharray': '1, 200',
'stroke-dashoffset': '0'
},
'50%': {
'stroke-dasharray': '90, 150',
'stroke-dashoffset': '-40px'
},
'100%': {
'stroke-dasharray': '90, 150',
'stroke-dashoffset': '-120px'
}
},
'skeleton-loading-1500ms': {
'from': {
'background-position-x': '180%'
},
'to': {
'background-position-x': '-20%'
}
}
}
}
},
variants: {
extend: {}
},
plugins: [
lineClamp,
plugin(function ({ addUtilities, matchUtilities, theme, addBase }) {
addUtilities({
'.scrollbar-size-0::-webkit-scrollbar': {
'width': 0,
'height': 0
},
'.tiny-loading-path': {
'animation': 'loading-dash 1.5s ease-in-out infinite',
'stroke-dasharray': '90, 150',
'stroke-dashoffset': 0,
'stroke-linecap': 'round'
},
'.tiny-modal-lockscroll': {
'overflow': 'hidden'
}
})
matchUtilities(
{
'gap': (value) => ({
'grid-row-gap': value,
'grid-column-gap': value
})
},
{ values: theme('gap') }
)
matchUtilities(
{
'gap-y': (value) => ({
'grid-row-gap': value
})
},
{ values: theme('gap') }
)
matchUtilities(
{
'gap-x': (value) => ({
'grid-column-gap': value
})
},
{ values: theme('gap') }
)
matchUtilities(
{
'shadow': (value) => ({
'box-shadow': value
})
},
{ values: theme('boxShadow') }
)
addBase({
html: {
...borderRadiusToken
}
})
})
],
corePlugins: {
preflight: true
}
}