|
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) |
|
} |
|
|
|
|
|
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', |
|
]), |
|
} |
|
|