Teso Business 2.0 angular source code https://bacwaredev.barhendev.com/teso
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

455 lines
14 KiB

const path = require('path');
const process = require('process');
const colors = require('tailwindcss/colors');
const defaultTheme = require('tailwindcss/defaultTheme');
const generatePalette = require(path.resolve(__dirname, ('src/@teso/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.blueGray,
DEFAULT: colors.blueGray[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
},
'indigo': {
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 = {
experimental: {},
future: {},
darkMode: 'class',
important: true,
purge: {
enabled: process.env.TAILWIND_MODE === 'build',
content: ['./src/**/*.{html,scss,ts}'],
options: {
safelist: {
standard: ['dark'],
deep: [/^theme/, /^mat/]
}
}
},
theme: {
colors: {
transparent: 'transparent',
current: 'currentColor',
black: colors.black,
white: colors.white,
pink: colors.pink,
gray: colors.blueGray,
red: colors.red,
orange: colors.orange,
amber: colors.amber,
yellow: colors.yellow,
green: colors.green,
teal: colors.teal,
blue: colors.blue,
indigo: colors.indigo,
purple: colors.purple
},
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: {
print: { 'raw': 'print' },
sm: '600px',
md: '960px',
lg: '1280px',
xl: '1440px'
},
extend: {
animation: {
'spin-slow': 'spin 3s linear infinite'
},
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'
},
/**
* Extended spacing values for width and height utilities.
* This way, we won't be adding these to other utilities
* that use 'spacing' config to keep the file size
* smaller by not generating useless utilities such as
* p-1/4 or m-480.
*/
extendedSpacing: {
// Fractional values
'1/2': '50%',
'1/3': '33.333333%',
'2/3': '66.666667%',
'1/4': '25%',
'2/4': '50%',
'3/4': '75%',
// 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'
},
height: theme => ({
...theme('extendedSpacing')
}),
minHeight: theme => ({
...theme('spacing'),
...theme('extendedSpacing')
}),
maxHeight: theme => ({
...theme('extendedSpacing'),
none: 'none'
}),
width: theme => ({
...theme('extendedSpacing')
}),
minWidth: theme => ({
...theme('spacing'),
...theme('extendedSpacing'),
screen: '100vw'
}),
maxWidth: theme => ({
...theme('spacing'),
...theme('extendedSpacing'),
screen: '100vw'
}),
transitionDuration: {
'400': '400ms'
},
transitionTimingFunction: {
'drawer': 'cubic-bezier(0.25, 0.8, 0.25, 1)'
},
// @tailwindcss/typography
typography: (theme) => ({
DEFAULT: {
css: {
color: 'var(--teso-text-default)',
'[class~="lead"]': {
color: 'var(--teso-text-secondary)'
},
a: {
color: 'var(--teso-primary-500)'
},
strong: {
color: 'var(--teso-text-default)'
},
'ol > li::before': {
color: 'var(--teso-text-secondary)'
},
'ul > li::before': {
backgroundColor: 'var(--teso-text-hint)'
},
hr: {
borderColor: 'var(--teso-border)'
},
blockquote: {
color: 'var(--teso-text-default)',
borderLeftColor: 'var(--teso-border)'
},
h1: {
color: 'var(--teso-text-default)'
},
h2: {
color: 'var(--teso-text-default)'
},
h3: {
color: 'var(--teso-text-default)'
},
h4: {
color: 'var(--teso-text-default)'
},
'figure figcaption': {
color: 'var(--teso-text-secondary)'
},
code: {
color: 'var(--teso-text-default)',
fontWeight: '500'
},
'a code': {
color: 'var(--teso-primary)'
},
pre: {
color: theme('colors.white'),
backgroundColor: theme('colors.gray.800')
},
thead: {
color: 'var(--teso-text-default)',
borderBottomColor: 'var(--teso-border)'
},
'tbody tr': {
borderBottomColor: 'var(--teso-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'
}
}
}
})
}
},
variants: {
accessibility: [],
alignContent: ['responsive'],
alignItems: ['responsive'],
alignSelf: ['responsive'],
animation: [],
backgroundAttachment: [],
backgroundClip: [],
backgroundColor: ['dark', 'responsive', 'group-hover', 'hover', 'focus', 'focus-within'],
backgroundImage: [],
backgroundOpacity: ['dark', 'hover'],
backgroundPosition: [],
backgroundRepeat: [],
backgroundSize: [],
borderCollapse: [],
borderColor: ['dark', 'group-hover', 'hover', 'focus', 'focus-within'],
borderOpacity: ['group-hover', 'hover'],
borderRadius: ['responsive'],
borderStyle: [],
borderWidth: ['dark', 'responsive', 'first', 'last', 'odd', 'even'],
boxShadow: ['dark', 'responsive', 'hover', 'focus-within'],
boxSizing: [],
cursor: [],
display: ['dark', 'responsive', 'hover', 'group-hover'],
divideColor: ['dark'],
divideOpacity: [],
divideStyle: [],
divideWidth: ['responsive'],
fill: [],
flex: ['responsive'],
flexDirection: ['responsive'],
flexGrow: ['responsive'],
flexShrink: ['responsive'],
flexWrap: ['responsive'],
fontFamily: [],
fontSize: ['responsive'],
fontSmoothing: [],
fontStyle: ['responsive'],
fontVariantNumeric: [],
fontWeight: ['responsive'],
gap: ['responsive'],
gridAutoColumns: ['responsive'],
gridAutoFlow: ['responsive'],
gridAutoRows: ['responsive'],
gridColumn: ['responsive'],
gridColumnEnd: ['responsive'],
gridColumnStart: ['responsive'],
gridRow: ['responsive'],
gridRowEnd: ['responsive'],
gridRowStart: ['responsive'],
gridTemplateColumns: ['responsive'],
gridTemplateRows: ['responsive'],
height: ['responsive'],
inset: ['responsive'],
justifyContent: ['responsive'],
justifyItems: ['responsive'],
justifySelf: ['responsive'],
letterSpacing: ['responsive'],
lineHeight: ['responsive'],
listStylePosition: [],
listStyleType: [],
margin: ['responsive'],
maxHeight: ['responsive'],
maxWidth: ['responsive'],
minHeight: ['responsive'],
minWidth: ['responsive'],
objectFit: ['responsive'],
objectPosition: ['responsive'],
opacity: ['responsive', 'group-hover', 'hover'],
order: ['responsive'],
outline: [],
overflow: ['responsive'],
overscrollBehavior: ['responsive'],
padding: ['responsive'],
placeContent: ['responsive'],
placeItems: ['responsive'],
placeSelf: ['responsive'],
pointerEvents: ['responsive'],
position: ['responsive'],
resize: [],
ringColor: ['dark', 'group-hover'],
ringOffsetColor: ['dark'],
ringOffsetWidth: [],
ringOpacity: [],
ringWidth: [],
rotate: [],
scale: [],
skew: [],
space: ['responsive'],
stroke: ['responsive'],
strokeWidth: ['responsive'],
tableLayout: ['responsive'],
textAlign: ['responsive'],
textColor: ['dark', 'group-hover', 'hover'],
textDecoration: ['group-hover', 'hover'],
textOpacity: ['group-hover', 'hover'],
textOverflow: ['responsive'],
textTransform: [],
transform: [],
transformOrigin: [],
transitionDelay: [],
transitionDuration: [],
transitionProperty: [],
transitionTimingFunction: [],
translate: ['responsive', 'hover'],
userSelect: ['responsive'],
visibility: ['responsive'],
whitespace: ['responsive'],
width: ['responsive'],
wordBreak: ['responsive'],
zIndex: ['responsive']
},
corePlugins: {
appearance: false,
gradientColorStops: false,
container: false,
float: false,
clear: false,
placeholderColor: false,
placeholderOpacity: false,
verticalAlign: false
},
plugins: [
// teso - Tailwind plugins
require(path.resolve(__dirname, ('src/@teso/tailwind/plugins/extract-config'))),
require(path.resolve(__dirname, ('src/@teso/tailwind/plugins/utilities'))),
require(path.resolve(__dirname, ('src/@teso/tailwind/plugins/icon-size'))),
require(path.resolve(__dirname, ('src/@teso/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;