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