landscape/ui/tailwind.config.js
Patrick O'Sullivan f9105ff7b9 first run: Prompt new users to open groups
For #165

This adds a purple bullet to the groups tile for users who have not yet opened groups. The popover will either show some text about groups or let them know that they've been invited to a group (in the case of onboarding via lure).
2023-05-31 06:27:11 -05:00

233 lines
4.6 KiB
JavaScript

const defaultTheme = require('tailwindcss/defaultTheme');
const resolveConfig = require('tailwindcss/resolveConfig');
const { Theme, ThemeManager } = require('tailwindcss-theming/api');
const themableProperties = [
'spacing',
'fontFamily',
//'fontSize', would require change in tailwindcss-theming
'fontWeight',
'letterSpacing',
'lineHeight',
'borderRadius',
'borderWidth',
'boxShadow',
];
function variablizeTheme(themeConfig, theme) {
themableProperties.forEach((prop) => {
const propSet = themeConfig[prop];
Object.entries(propSet).forEach(([key, value]) => {
theme.setVariable(key, value, prop, prop);
});
});
}
const config = resolveConfig({
theme: {
fontFamily: {
sans: [
'Inter',
'Inter UI',
'-apple-system',
'BlinkMacSystemFont',
'San Francisco',
'Helvetica Neue',
'Arial',
'sans-serif',
],
mono: ['Source Code Pro', 'Roboto mono', 'Courier New', 'monospace'],
},
extend: {
lineHeight: {
tight: 1.2,
snug: 1.33334,
relaxed: 1.66667,
},
},
},
});
const base = new Theme().addColors({
transparent: 'transparent',
white: '#FFFFFF',
black: '#000000',
gray: {
50: '#F5F5F5',
100: '#E5E5E5',
200: '#CCCCCC',
300: '#B3B3B3',
400: '#999999',
500: '#808080',
600: '#666666',
700: '#4D4D4D',
800: '#333333',
900: '#1A1A1A',
},
blue: {
DEFAULT: '#008EFF',
soft: '#E5F4FF',
50: '#EFF9FF',
100: '#C8EDFF',
200: '#A0E1FF',
300: '#5FBFFF',
400: '#219DFF',
500: '#0F75D8',
600: '#0252B2',
700: '#00388B',
800: '#002364',
900: '#00133E',
},
red: {
50: '#FFF4F2',
100: '#FFDED6',
200: '#FFC8B9',
300: '#FC9B84',
400: '#F57456',
500: '#EE5432',
600: '#D03B22',
700: '#B12918',
800: '#931C13',
900: '#751410',
},
orange: {
50: '#FFF4EF',
100: '#FFE2CE',
200: '#FFCEAB',
300: '#FFA56F',
400: '#FF7E36',
500: '#D85E1E',
600: '#B2420C',
700: '#8B2B00',
800: '#641E00',
900: '#3E1100',
},
indigo: {
DEFAULT: '#615FD3',
},
green: {
100: '#E6F5F0',
200: '#B3E2D1',
300: '#009F65',
},
yellow: {
100: '#FFF9E6',
200: '#FFEEB3',
300: '#FFDD66',
400: '#FFC700',
500: '#ECCB27',
},
});
variablizeTheme(config.theme, base);
const dark = new Theme()
.setName('dark')
.targetable()
.addColors({
transparent: 'transparent',
white: '#000000',
black: '#FFFFFF',
gray: {
50: '#1A1A1A',
100: '#333333',
200: '#4D4D4D',
300: '#666666',
400: '#808080',
500: '#999999',
600: '#B3B3B3',
700: '#CCCCCC',
800: '#E5E5E5',
900: '#F2F2F2',
},
red: {
50: '#751410',
100: '#931C13',
200: '#B12918',
300: '#D03B22',
400: '#EE5432',
500: '#F57456',
600: '#FC9B84',
700: '#FFC8B9',
800: '#FFDED6',
900: '#FFF4F2',
},
blue: {
DEFAULT: '#008EFF',
50: '#00133E',
100: '#002364',
200: '#00388B',
300: '#0252B2',
400: '#0F75D8',
500: '#219DFF',
600: '#5FBFFF',
700: '#A0E1FF',
800: '#C8EDFF',
900: '#EFF9FF',
},
orange: {
50: '#3E1100',
100: '#641E00',
200: '#8B2B00',
300: '#B2420C',
400: '#D85E1E',
500: '#FF7E36',
600: '#FFA56F',
700: '#FFCEAB',
800: '#FFE2CE',
900: '#FFF4EF',
},
green: {
100: '#182722',
200: '#134231',
300: '#009F65',
},
yellow: {
100: '#312B18',
200: '#5F4E13',
300: '#A4820B',
400: '#FFC700',
},
});
const themes = new ThemeManager().setDefaultTheme(base).addTheme(dark);
module.exports = {
mode: 'jit',
purge: ['./index.html', './src/**/*.{js,ts,jsx,tsx}'],
darkMode: 'class', // or 'media' or 'class'
theme: {
fontSize: {
xs: ['.625rem', '1rem'],
sm: ['.75rem', '1rem'],
base: ['.875rem', '1rem'],
lg: ['1rem', '1.5rem'],
xl: ['1.25rem', '2rem'],
'2xl': ['1.5rem', '2rem'],
'3xl': ['2rem', '3rem'],
},
extend: {
minWidth: (theme) => theme('spacing'),
},
},
screens: {
...defaultTheme.screens,
xl: '1440px',
'2xl': '2200px',
},
variants: {
extend: {
opacity: ['hover-none'],
display: ['group-hover'],
},
},
plugins: [
require('@tailwindcss/line-clamp'),
require('@tailwindcss/aspect-ratio'),
require('tailwindcss-touch')(),
require('tailwindcss-theming')({
themes,
strategy: 'class',
}),
],
};