graphql-engine/frontend/tailwind.config.js
Matthew Goodwin aa273cdc4c console: Add alert/confirm/prompt component
PR-URL: https://github.com/hasura/graphql-engine-mono/pull/8701
GitOrigin-RevId: 558b6d3e688e4d9d945ba33c459565f4b0f6f502
2023-04-12 11:33:48 +00:00

246 lines
6.8 KiB
JavaScript

const colors = require('tailwindcss/colors');
const plugin = require('tailwindcss/plugin');
const { blackA, mauve, violet } = require('@radix-ui/colors');
function dataStateVariant(state, { addVariant, e }) {
addVariant(`data-state-${state}`, ({ modifySelectors, separator }) => {
modifySelectors(({ className }) => {
return `.${e(
`data-state-${state}${separator}${className}`
)}[data-state='${state}']`;
});
});
addVariant(`group-data-state-${state}`, ({ modifySelectors, separator }) => {
modifySelectors(({ className }) => {
return `.group[data-state='${state}'] .${e(
`group-data-state-${state}${separator}${className}`
)}`;
});
});
addVariant(`peer-data-state-${state}`, ({ modifySelectors, separator }) => {
modifySelectors(({ className }) => {
return `.peer[data-state='${state}'] ~ .${e(
`peer-data-state-${state}${separator}${className}`
)}`;
});
});
}
module.exports = {
safelist: {
standard: /background$/,
},
darkMode: 'class',
theme: {
fontFamily: {
sans: ['Gudea', 'ui-sans-serif', 'system-ui'],
mono: ['"Overpass Mono"', 'ui-monospace', 'monospace'],
},
extend: {
boxShadow: {
eq: 'rgb(0 0 0) 0px 0px 2px',
},
colors: {
current: 'currentColor',
yellow: colors.amber,
gray: colors.slate,
primary: {
light: '#fad170',
DEFAULT: '#f9c548',
dark: '#d5ae52',
darker: '#ae8e3e',
},
cloud: {
DEFAULT: '#1eb4d4',
dark: '#197b98',
darker: '#074c4c',
},
secondary: {
light: '#eef4f7',
DEFAULT: '#297393',
dark: '#14394a',
},
legacybg: {
DEFAULT: '#f8fafb',
},
muted: {
DEFAULT: '#64748B',
dark: '#64748B',
},
},
spacing: {
xs: '0.571rem', // ~9.5 px
sm: '0.857rem', // ~14 px
md: '1.429rem', // ~23 px
lg: '2.286rem', // 36.5px
xl: '2.857rem', // 45.7px
input: '2.5rem', // 41.5px
btn: '2.5rem', // 41.5px
btnsm: '2rem', // 32px
formlabel: '0.571rem', // ~9.5 px
},
fontSize: {
sm: ['0.875rem', { lineHeight: '1.25rem' }],
base: ['1rem', { lineHeight: '1.5rem' }],
lg: ['1.143rem', { lineHeight: '1.429rem' }],
xl: ['1.714rem', { lineHeight: '2.143rem' }],
subtitle: ['1.300rem', { lineHeight: '2.143rem' }], // ~20 px
title: ['1.5rem', { lineHeight: '2.143rem' }], // ~24 px
},
width: {
inherit: 'inherit',
},
keyframes: {
onboardingWizardFadeIn: {
'0%': {
opacity: '0',
scale: '.9',
},
'50%': {
opacity: '.5',
scale: '.95',
},
'100%': {
opacity: '1',
scale: '1',
},
},
collapsibleContentOpen: {
from: {
height: '0',
},
to: {
height: 'var(--radix-collapsible-content-height)',
},
},
collapsibleContentClose: {
from: {
height: 'var(--radix-collapsible-content-height)',
},
to: {
height: '0',
},
},
slideUpAndFade: {
from: {
opacity: `0`,
transform: `translateY(2px)`,
},
to: {
opacity: `1`,
transform: `translateY(0)`,
},
},
slideRightAndFade: {
from: {
opacity: `0`,
transform: `translateX(-2px)`,
},
to: {
opacity: `1`,
transform: `translateX(0)`,
},
},
slideDownAndFade: {
from: {
opacity: `0`,
transform: `translateY(-2px)`,
},
to: {
opacity: `1`,
transform: `translateY(0)`,
},
},
slideLeftAndFade: {
from: {
opacity: `0`,
transform: `translateX(2px)`,
},
to: {
opacity: `1`,
transform: `translateX(0)`,
},
},
notificationOpen: {
from: {
opacity: `0`,
transform: `translateX(100%)`,
},
to: {
opacity: `1`,
transform: `translateX(0)`,
},
},
notificationClose: {
from: {
opacity: `1`,
transform: `translateY(0)`,
},
to: {
opacity: `0`,
transform: `translateY(-100%)`,
},
},
dropdownMenuContentOpen: {
from: {
opacity: '0',
},
to: {
opacity: '1',
},
},
dropdownMenuContentClose: {
from: {
opacity: '1',
},
to: {
opacity: '0',
},
},
fadeIn: {
from: { opacity: 0 },
to: { opacity: 1 },
},
alertContentShow: {
from: { opacity: 0, transform: 'translate(-50%, -48%) scale(0.96)' },
to: { opacity: 1, transform: 'translate(-50%, -50%) scale(1)' },
},
},
animation: {
collapsibleContentOpen: 'collapsibleContentOpen 300ms ease-out',
collapsibleContentClose: 'collapsibleContentClose 300ms ease-out',
collapsibleContentOpenFast: 'collapsibleContentOpen 200ms ease-out',
collapsibleContentCloseFast: 'collapsibleContentClose 200ms ease-out',
slideUpAndFade: 'slideUpAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
slideRightAndFade:
'slideRightAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
slideDownAndFade:
'slideDownAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
slideLeftAndFade:
'slideLeftAndFade 400ms cubic-bezier(0.16, 1, 0.3, 1)',
notificationOpen: 'notificationOpen 300ms ease-in-out',
notificationClose: 'notificationClose 300ms ease-in-out',
dropdownMenuContentOpen: 'dropdownMenuContentOpen 100ms ease-in',
dropdownMenuContentClose: 'dropdownMenuContentClose 100ms ease-out',
overlayShow: 'overlayShow 150ms cubic-bezier(0.16, 1, 0.3, 1)',
contentShow: 'contentShow 150ms cubic-bezier(0.16, 1, 0.3, 1)',
},
},
},
plugins: [
require('@tailwindcss/typography'),
require('@tailwindcss/forms'),
require('tailwindcss-radix')(),
plugin(helpers => {
// variants that help styling Radix-UI components
dataStateVariant('open', helpers);
dataStateVariant('closed', helpers);
dataStateVariant('on', helpers);
dataStateVariant('checked', helpers);
dataStateVariant('unchecked', helpers);
}),
],
};