eruda3 / src /lib /themes.js
soiz1's picture
Migrated from GitHub
271613e verified
import extend from 'licia/extend'
import isArr from 'licia/isArr'
import contain from 'licia/contain'
const keyMap = [
'background',
'foreground',
'selectForeground',
'accent',
'highlight',
'border',
'primary',
'contrast',
'varColor',
'stringColor',
'keywordColor',
'numberColor',
'operatorColor',
'linkColor',
'textColor',
'tagNameColor',
'functionColor',
'attributeNameColor',
'commentColor',
]
const keyMapLen = keyMap.length
function arrToMap(arr) {
const ret = {}
for (let i = 0; i < keyMapLen; i++) {
ret[keyMap[i]] = arr[i]
}
return ret
}
function createDarkTheme(theme) {
if (isArr(theme)) theme = arrToMap(theme)
if (!theme.darkerBackground) theme.darkerBackground = theme.contrast
return extend(
{
consoleWarnBackground: '#332a00',
consoleWarnForeground: '#ffcb6b',
consoleWarnBorder: '#650',
consoleErrorBackground: '#290000',
consoleErrorForeground: '#ff8080',
consoleErrorBorder: '#5c0000',
light: '#ccc',
dark: '#aaa',
},
theme
)
}
function createLightTheme(theme) {
if (isArr(theme)) theme = arrToMap(theme)
if (!theme.darkerBackground) theme.darkerBackground = theme.contrast
return extend(
{
consoleWarnBackground: '#fffbe5',
consoleWarnForeground: '#5c5c00',
consoleWarnBorder: '#fff5c2',
consoleErrorBackground: '#fff0f0',
consoleErrorForeground: '#f00',
consoleErrorBorder: '#ffd6d6',
light: '#fff',
dark: '#eee',
},
theme
)
}
const darkThemes = [
'Dark',
'Material Oceanic',
'Material Darker',
'Material Palenight',
'Material Deep Ocean',
'Monokai Pro',
'Dracula',
'Arc Dark',
'Atom One Dark',
'Solarized Dark',
'Night Owl',
'AMOLED',
]
export function isDarkTheme(theme) {
return contain(darkThemes, theme)
}
// prettier-ignore
export default {
Light: createLightTheme({
darkerBackground: '#f3f3f3',
background: '#fff',
foreground: '#333',
selectForeground: '#333',
accent: '#1a73e8',
highlight: '#eaeaea',
border: '#ccc',
primary: '#333',
contrast: '#f2f7fd',
varColor: '#c80000',
stringColor: '#1a1aa6',
keywordColor: '#881280',
numberColor: '#1c00cf',
operatorColor: '#808080',
linkColor: '#1155cc',
textColor: '#8097bd',
tagNameColor: '#881280',
functionColor: '#222',
attributeNameColor: '#994500',
commentColor: '#236e25',
cssProperty: '#c80000',
}),
Dark: createDarkTheme({
darkerBackground: '#333',
background: '#242424',
foreground: '#a5a5a5',
selectForeground: '#eaeaea',
accent: '#7cacf8',
highlight: '#000',
border: '#3d3d3d',
primary: '#ccc',
contrast: '#0b2544',
varColor: '#e36eec',
stringColor: '#f29766',
keywordColor: '#9980ff',
numberColor: '#9980ff',
operatorColor: '#7f7f7f',
linkColor: '#ababab',
textColor: '#42597f',
tagNameColor: '#5db0d7',
functionColor: '#d5d5d5',
attributeNameColor: '#9bbbdc',
commentColor: '#747474',
}),
'Material Oceanic': createDarkTheme([
'#263238', '#B0BEC5', '#FFFFFF', '#009688', '#425B67',
'#2A373E', '#607D8B', '#1E272C', '#eeffff', '#c3e88d',
'#c792ea', '#f78c6c', '#89ddff', '#80cbc4', '#B0BEC5',
'#f07178', '#82aaff', '#ffcb6b', '#546e7a',
]),
'Material Darker': createDarkTheme([
'#212121', '#B0BEC5', '#FFFFFF', '#FF9800', '#3F3F3F',
'#292929', '#727272', '#1A1A1A', '#eeffff', '#c3e88d',
'#c792ea', '#f78c6c', '#89ddff', '#80cbc4', '#B0BEC5',
'#f07178', '#82aaff', '#ffcb6b', '#616161',
]),
'Material Lighter': createLightTheme([
'#FAFAFA', '#546E7A', '#546e7a', '#00BCD4', '#E7E7E8',
'#d3e1e8', '#94A7B0', '#F4F4F4', '#272727', '#91B859',
'#7C4DFF', '#F76D47', '#39ADB5', '#39ADB5', '#546E7A',
'#E53935', '#6182B8', '#F6A434', '#AABFC9',
]),
'Material Palenight': createDarkTheme([
'#292D3E', '#A6ACCD', '#FFFFFF', '#ab47bc', '#444267',
'#2b2a3e', '#676E95', '#202331', '#eeffff', '#c3e88d',
'#c792ea', '#f78c6c', '#89ddff', '#80cbc4', '#A6ACCD',
'#f07178', '#82aaff', '#ffcb6b', '#676E95',
]),
'Material Deep Ocean': createDarkTheme([
'#0F111A', '#8F93A2', '#FFFFFF', '#84ffff', '#1F2233',
'#41465b', '#4B526D', '#090B10', '#eeffff', '#c3e88d',
'#c792ea', '#f78c6c', '#89ddff', '#80cbc4', '#8F93A2',
'#f07178', '#82aaff', '#ffcb6b', '#717CB4',
]),
'Monokai Pro': createDarkTheme([
'#2D2A2E', '#fcfcfa', '#FFFFFF', '#ffd866', '#5b595c',
'#423f43', '#939293', '#221F22', '#FCFCFA', '#FFD866',
'#FF6188', '#AB9DF2', '#FF6188', '#78DCE8', '#fcfcfa',
'#FF6188', '#A9DC76', '#78DCE8', '#727072',
]),
Dracula: createDarkTheme([
'#282A36', '#F8F8F2', '#8BE9FD', '#FF79C5', '#6272A4',
'#21222C', '#6272A4', '#191A21', '#F8F8F2', '#F1FA8C',
'#FF79C6', '#BD93F9', '#FF79C6', '#F1FA8C', '#F8F8F2',
'#FF79C6', '#50FA78', '#50FA7B', '#6272A4',
]),
'Arc Dark': createDarkTheme([
'#2f343f', '#D3DAE3', '#FFFFFF', '#42A5F5', '#3F3F46',
'#404552', '#8b9eb5', '#262b33', '#CF6A4C', '#8F9D6A',
'#9B859D', '#CDA869', '#A7A7A7', '#7587A6', '#D3DAE3',
'#CF6A4C', '#7587A6', '#F9EE98', '#747C84',
]),
'Atom One Dark': createDarkTheme([
'#282C34', '#979FAD', '#FFFFFF', '#2979ff', '#383D48',
'#2e3239', '#979FAD', '#21252B', '#D19A66', '#98C379',
'#C679DD', '#D19A66', '#61AFEF', '#56B6C2', '#979FAD',
'#F07178', '#61AEEF', '#E5C17C', '#59626F',
]),
'Atom One Light': createLightTheme([
'#FAFAFA', '#232324', '#232324', '#2979ff', '#EAEAEB',
'#DBDBDC', '#9D9D9F', '#FFFFFF', '#986801', '#50A14E',
'#A626A4', '#986801', '#4078F2', '#0184BC', '#232324',
'#E4564A', '#4078F2', '#C18401', '#A0A1A7',
]),
'Solarized Dark': createDarkTheme([
'#002B36', '#839496', '#FFFFFF', '#d33682', '#11353F',
'#0D3640', '#586e75', '#00252E', '#268BD2', '#2AA198',
'#859900', '#D33682', '#93A1A1', '#268BD2', '#839496',
'#268BD2', '#B58900', '#B58900', '#657B83',
]),
'Solarized Light': createLightTheme([
'#fdf6e3', '#586e75', '#002b36', '#d33682', '#F6F0DE',
'#f7f2e2', '#93a1a1', '#eee8d5', '#268BD2', '#2AA198',
'#859900', '#D33682', '#657B83', '#268BD2', '#586e75',
'#268BD2', '#B58900', '#657B83', '#93A1A1',
]),
Github: createLightTheme([
'#F7F8FA', '#5B6168', '#FFFFFF', '#79CB60', '#CCE5FF',
'#DFE1E4', '#292D31', '#FFFFFF', '#24292E', '#032F62',
'#D73A49', '#005CC5', '#D73A49', '#005CC5', '#5B6168',
'#22863A', '#6F42C1', '#6F42C1', '#6A737D',
]),
'Night Owl': createDarkTheme([
'#011627', '#b0bec5', '#ffffff', '#7e57c2', '#152C3B',
'#2a373e', '#607d8b', '#001424', '#addb67', '#ecc48d',
'#c792ea', '#f78c6c', '#c792ea', '#80CBC4', '#b0bec5',
'#7fdbca', '#82AAFF', '#FAD430', '#637777',
]),
'Light Owl': createLightTheme([
'#FAFAFA', '#546e7a', '#403f53', '#269386', '#E0E7EA',
'#efefef', '#403F53', '#FAFAFA', '#0C969B', '#c96765',
'#994cc3', '#aa0982', '#7d818b', '#994cc3', '#546e7a',
'#994cc3', '#4876d6', '#4876d6', '#637777',
]),
AMOLED: createDarkTheme([
'#000000', '#8F93A2', '#FFFFFF', '#68FFAE', '#000000',
'#41465b', '#4B526D', '#000000', '#DEFDF7', '#38ff9f',
'#ab2eff', '#A76DF7', '#38ff9f', '#86F3C7', '#8F93A2',
'#ab2eff', '#8293FF', '#38ff9f', '#6575c7',
]),
}