landscape/ui/tailwind.config.js
Patrick O'Sullivan d953ffe501 Add Get Apps screen, rename "Leap" to "AppSearch"
AppSearch is just for apps. Real Leap to come later.
Make sure we respect calm settings for notifications.
Create WayfindingAppLink component.
Use hard coded list of apps for Get Apps.
2023-03-08 09:49:36 -06:00

230 lines
4.5 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',
},
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',
}),
],
};