diff --git a/themes/generate.py b/themes/generate.py new file mode 100644 index 0000000..1e7ca25 --- /dev/null +++ b/themes/generate.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 + +import json, colorsys + +colors = json.load(open("material-colors.json", "r")) +palettes = colors['palettes'] + +def hex_to_rgb(h): + return tuple(int(h[i:i+2], 16) / 255 for i in (0, 2 ,4)) + +def prep(x): + cols = [x['colors'][5], x['colors'][7]] + rgb = [hex_to_rgb(c[1:]) for c in cols] + hls = [colorsys.rgb_to_hls(*c) for c in rgb] + + main_index = 0 if hls[0][1] < 0.6 else 1 + dark_main = hls[main_index][1] < 0.6 + + return { + "name": x['shade'].lower().replace(' ', '-'), + "main": cols[main_index], + "input": x['colors'][3 if main_index == 0 else 5], + "text": "white" if dark_main else "black", + } + +print( + "\n".join( + "\ +.theme-{name} {{\n\ + --theme-main: {main};\n\ + --theme-text: {text};\n\ + --theme-input: {input};\n\ + --theme-link: #01579b;\n\ +}}\n".format(**x) + for x in (prep(palette) for palette in palettes) + ) +) diff --git a/themes/material-colors.json b/themes/material-colors.json new file mode 100644 index 0000000..77df12c --- /dev/null +++ b/themes/material-colors.json @@ -0,0 +1,369 @@ +{ + "names": [ + "50", + "100", + "200", + "300", + "400", + "500", + "600", + "700", + "800", + "900", + "A100", + "A200", + "A400", + "A700" + ], + "palettes": [ + { + "shade": "Red", + "colors": [ + "#FFEBEE", + "#FFCDD2", + "#EF9A9A", + "#E57373", + "#EF5350", + "#F44336", + "#E53935", + "#D32F2F", + "#C62828", + "#B71C1C", + "#FF8A80", + "#FF5252", + "#FF1744", + "#D50000" + ] + }, + { + "shade": "Pink", + "colors": [ + "#FCE4EC", + "#F8BBD0", + "#F48FB1", + "#F06292", + "#EC407A", + "#E91E63", + "#D81B60", + "#C2185B", + "#AD1457", + "#880E4F", + "#FF80AB", + "#FF4081", + "#F50057", + "#C51162" + ] + }, + { + "shade": "Purple", + "colors": [ + "#F3E5F5", + "#E1BEE7", + "#CE93D8", + "#BA68C8", + "#AB47BC", + "#9C27B0", + "#8E24AA", + "#7B1FA2", + "#6A1B9A", + "#4A148C", + "#EA80FC", + "#E040FB", + "#D500F9", + "#AA00FF" + ] + }, + { + "shade": "Deep purple", + "colors": [ + "#EDE7F6", + "#D1C4E9", + "#B39DDB", + "#9575CD", + "#7E57C2", + "#673AB7", + "#5E35B1", + "#512DA8", + "#4527A0", + "#311B92", + "#B388FF", + "#7C4DFF", + "#651FFF", + "#6200EA" + ] + }, + { + "shade": "Indigo", + "colors": [ + "#E8EAF6", + "#C5CAE9", + "#9FA8DA", + "#7986CB", + "#5C6BC0", + "#3F51B5", + "#3949AB", + "#303F9F", + "#283593", + "#1A237E", + "#8C9EFF", + "#536DFE", + "#3D5AFE", + "#304FFE" + ] + }, + { + "shade": "Blue", + "colors": [ + "#E3F2FD", + "#BBDEFB", + "#90CAF9", + "#64B5F6", + "#42A5F5", + "#2196F3", + "#1E88E5", + "#1976D2", + "#1565C0", + "#0D47A1", + "#82B1FF", + "#448AFF", + "#2979FF", + "#2962FF" + ] + }, + { + "shade": "Light Blue", + "colors": [ + "#E1F5FE", + "#B3E5FC", + "#81D4FA", + "#4FC3F7", + "#29B6F6", + "#03A9F4", + "#039BE5", + "#0288D1", + "#0277BD", + "#01579B", + "#80D8FF", + "#40C4FF", + "#00B0FF", + "#0091EA" + ] + }, + { + "shade": "Cyan", + "colors": [ + "#E0F7FA", + "#B2EBF2", + "#80DEEA", + "#4DD0E1", + "#26C6DA", + "#00BCD4", + "#00ACC1", + "#0097A7", + "#00838F", + "#006064", + "#84FFFF", + "#18FFFF", + "#00E5FF", + "#00B8D4" + ] + }, + { + "shade": "Teal", + "colors": [ + "#E0F2F1", + "#B2DFDB", + "#80CBC4", + "#4DB6AC", + "#26A69A", + "#009688", + "#00897B", + "#00796B", + "#00695C", + "#004D40", + "#A7FFEB", + "#64FFDA", + "#1DE9B6", + "#00BFA5" + ] + }, + { + "shade": "Green", + "colors": [ + "#E8F5E9", + "#C8E6C9", + "#A5D6A7", + "#81C784", + "#66BB6A", + "#4CAF50", + "#43A047", + "#388E3C", + "#2E7D32", + "#1B5E20", + "#B9F6CA", + "#69F0AE", + "#00E676", + "#00C853" + ] + }, + { + "shade": "Light Green", + "colors": [ + "#F1F8E9", + "#DCEDC8", + "#C5E1A5", + "#AED581", + "#9CCC65", + "#8BC34A", + "#7CB342", + "#689F38", + "#558B2F", + "#33691E", + "#CCFF90", + "#B2FF59", + "#76FF03", + "#64DD17" + ] + }, + { + "shade": "Lime", + "colors": [ + "#F9FBE7", + "#F0F4C3", + "#E6EE9C", + "#DCE775", + "#D4E157", + "#CDDC39", + "#C0CA33", + "#AFB42B", + "#9E9D24", + "#827717", + "#F4FF81", + "#EEFF41", + "#C6FF00", + "#AEEA00" + ] + }, + { + "shade": "Yellow", + "colors": [ + "#FFFDE7", + "#FFF9C4", + "#FFF59D", + "#FFF176", + "#FFEE58", + "#FFEB3B", + "#FDD835", + "#FBC02D", + "#F9A825", + "#F57F17", + "#FFFF8D", + "#FFFF00", + "#FFEA00", + "#FFD600" + ] + }, + { + "shade": "Amber", + "colors": [ + "#FFF8E1", + "#FFECB3", + "#FFE082", + "#FFD54F", + "#FFCA28", + "#FFC107", + "#FFB300", + "#FFA000", + "#FF8F00", + "#FF6F00", + "#FFE57F", + "#FFD740", + "#FFC400", + "#FFAB00" + ] + }, + { + "shade": "Orange", + "colors": [ + "#FFF3E0", + "#FFE0B2", + "#FFCC80", + "#FFB74D", + "#FFA726", + "#FF9800", + "#FB8C00", + "#F57C00", + "#EF6C00", + "#E65100", + "#FFD180", + "#FFAB40", + "#FF9100", + "#FF6D00" + ] + }, + { + "shade": "Deep Orange", + "colors": [ + "#FBE9E7", + "#FFCCBC", + "#FFAB91", + "#FF8A65", + "#FF7043", + "#FF5722", + "#F4511E", + "#E64A19", + "#D84315", + "#BF360C", + "#FF9E80", + "#FF6E40", + "#FF3D00", + "#DD2C00" + ] + }, + { + "shade": "Brown", + "colors": [ + "#EFEBE9", + "#D7CCC8", + "#BCAAA4", + "#A1887F", + "#8D6E63", + "#795548", + "#6D4C41", + "#5D4037", + "#4E342E", + "#3E2723" + ] + }, + { + "shade": "Gray", + "colors": [ + "#FAFAFA", + "#F5F5F5", + "#EEEEEE", + "#E0E0E0", + "#BDBDBD", + "#9E9E9E", + "#757575", + "#616161", + "#424242", + "#212121" + ] + }, + { + "shade": "Blue Gray", + "colors": [ + "#ECEFF1", + "#CFD8DC", + "#B0BEC5", + "#90A4AE", + "#78909C", + "#607D8B", + "#546E7A", + "#455A64", + "#37474F", + "#263238" + ] + } + ] +}