mirror of
https://github.com/zen-browser/theme-store.git
synced 2025-07-07 17:05:31 +02:00
This commit modifies the theme creation process to include support for color themes. It adds a new checkbox field in the theme creation form to indicate whether the theme is a color theme. If the checkbox is selected, the CSS styles for the theme should be provided as a JSON object with the color values. Additionally, the `create-theme.yml` workflow file is updated to include the `THEME_IS_COLOR_THEME` environment variable when building the theme. The `rebuild-themes.py` script is also updated to generate a `chrome.css` file for color themes based on the provided color values in a `colors.json` file. Fixes #69
59 lines
2.1 KiB
Python
59 lines
2.1 KiB
Python
|
|
import os
|
|
import json
|
|
|
|
THEMES_FOLDER = './themes'
|
|
THEMES_DATA_FILE = './themes.json'
|
|
|
|
def get_color_css_variable(color):
|
|
if color == "primaryColor":
|
|
return '--zen-colors-primary'
|
|
if color == "secondaryColor":
|
|
return '--zen-colors-secondary'
|
|
if color == "tertiaryColor":
|
|
return '--zen-colors-tertiary'
|
|
if color == "colorsBorder":
|
|
return '--zen-colors-border'
|
|
print(f"Unknown color: {color}")
|
|
exit(1)
|
|
|
|
def write_colors(colors_file, output_file):
|
|
with open(colors_file, 'r') as f:
|
|
colors = json.load(f)
|
|
with open(output_file, 'w') as f:
|
|
f.write('/* This is a color theme. */\n')
|
|
f.write(':root {\n')
|
|
for color in colors:
|
|
if color == "isDarkMode":
|
|
continue
|
|
f.write(f' {get_color_css_variable(color)}: {colors[color]};\n')
|
|
if colors["isDarkMode"]:
|
|
f.write(' color-scheme: dark !important;\n')
|
|
f.write('}\n')
|
|
|
|
def main():
|
|
with open(THEMES_DATA_FILE, 'w') as f:
|
|
json.dump({}, f, indent=4)
|
|
for theme in os.listdir(THEMES_FOLDER):
|
|
theme_folder = os.path.join(THEMES_FOLDER, theme)
|
|
if not os.path.isdir(theme_folder):
|
|
continue
|
|
theme_data_file = os.path.join(theme_folder, 'theme.json')
|
|
if not os.path.exists(theme_data_file):
|
|
continue
|
|
with open(theme_data_file, 'r') as f:
|
|
theme_data = json.load(f)
|
|
with open(THEMES_DATA_FILE, 'r') as f:
|
|
themes_data = json.load(f)
|
|
themes_data[theme] = theme_data
|
|
with open(THEMES_DATA_FILE, 'w') as f:
|
|
json.dump(themes_data, f, indent=4)
|
|
theme_colors_file = os.path.join(theme_folder, 'colors.json')
|
|
if os.path.exists(theme_colors_file):
|
|
theme_colors_output = os.path.join(theme_folder, 'chrome.css')
|
|
write_colors(theme_colors_file, theme_colors_output)
|
|
print(f"Rebuilt theme: {theme}")
|
|
print("Rebuilt all themes!")
|
|
|
|
if __name__ == '__main__':
|
|
main()
|