Theme editor
This commit is contained in:
178
src/webui/theme-editor/index.html
Normal file
178
src/webui/theme-editor/index.html
Normal file
@ -0,0 +1,178 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta charset="UTF-8">
|
||||
<title>Theme Editor</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='style/style.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Top bar -->
|
||||
<div class="nav-bar">
|
||||
<div class="content-inner nav">
|
||||
<div class="nav-cta">
|
||||
<div class="arrow">→</div>
|
||||
<a class="button" href="/site-info">
|
||||
<span id="step">← Back to Site Info</span>
|
||||
</a>
|
||||
</div>
|
||||
<input type="checkbox" id="nav-check">
|
||||
<div class="nav-header">
|
||||
<div class="nav-title">
|
||||
<img src="../img/logo.svg">
|
||||
</div>
|
||||
</div>
|
||||
<div class="nav-btn">
|
||||
<label for="nav-check">
|
||||
<span></span>
|
||||
<span></span>
|
||||
<span></span>
|
||||
</label>
|
||||
</div>
|
||||
<div class="nav-links">
|
||||
<ul class="nav-list">
|
||||
<li class="nav-item appear2"><a href="/site-info">Site info</a></li>
|
||||
<li class="nav-item appear2"><a href="/theme-editor">Theme editor</a></li>
|
||||
<li class="nav-item appear2"><a href="#">Gallery</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Toast container for notifications -->
|
||||
<div id="theme-editor" class="content-inner">
|
||||
<div id="toast-container"></div>
|
||||
<h1>Edit Theme</h1>
|
||||
<!-- Show current theme -->
|
||||
<div class="theme-info">
|
||||
<strong>Current theme:</strong> <span id="current-theme"></span>
|
||||
</div>
|
||||
<form id="theme-editor-form">
|
||||
<!-- Colors Section -->
|
||||
<fieldset>
|
||||
<h2>Colors</h2>
|
||||
<div class="fields">
|
||||
<div class="input-field">
|
||||
<label>Primary</label>
|
||||
<input type="color" name="colors.primary" id="color-primary">
|
||||
<input type="text" name="colors.primary_text" id="color-primary-text" style="width:100px;">
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<label>Primary Dark</label>
|
||||
<input type="color" name="colors.primary_dark" id="color-primary-dark">
|
||||
<input type="text" name="colors.primary_dark_text" id="color-primary-dark-text" style="width:100px;">
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<label>Secondary</label>
|
||||
<input type="color" name="colors.secondary" id="color-secondary">
|
||||
<input type="text" name="colors.secondary_text" id="color-secondary-text" style="width:100px;">
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<label>Accent</label>
|
||||
<input type="color" name="colors.accent" id="color-accent">
|
||||
<input type="text" name="colors.accent_text" id="color-accent-text" style="width:100px;">
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<label>Text Dark</label>
|
||||
<input type="color" name="colors.text_dark" id="color-text-dark">
|
||||
<input type="text" name="colors.text_dark_text" id="color-text-dark-text" style="width:100px;">
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<label>Background</label>
|
||||
<input type="color" name="colors.background" id="color-background">
|
||||
<input type="text" name="colors.background_text" id="color-background-text" style="width:100px;">
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<label>Browser Color</label>
|
||||
<input type="color" name="colors.browser_color" id="color-browser-color">
|
||||
<input type="text" name="colors.browser_color_text" id="color-browser-color-text" style="width:100px;">
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<!-- Google Fonts Section -->
|
||||
<fieldset>
|
||||
<h2>Google Fonts</h2>
|
||||
<div class="fields" id="google-fonts-fields">
|
||||
<!-- JS will render font family and weights inputs here -->
|
||||
</div>
|
||||
<button type="button" id="add-google-font">Add Google Font</button>
|
||||
</fieldset>
|
||||
<!-- Custom Font Upload Section -->
|
||||
<fieldset>
|
||||
<h2>Upload Custom Font (.woff, .woff2)</h2>
|
||||
<div class="fields">
|
||||
<input type="file" id="font-upload" accept=".woff,.woff2" style="display:none;">
|
||||
<button type="button" id="choose-font-btn" class="up-btn">🖋️ Upload font</button>
|
||||
<div id="local-fonts-list" class="font-list"></div>
|
||||
<span id="font-upload-status"></span>
|
||||
</div>
|
||||
</fieldset>
|
||||
<!-- Fonts Section -->
|
||||
<fieldset>
|
||||
<h2>Fonts</h2>
|
||||
<div class="fields">
|
||||
<div class="input-field">
|
||||
<label>Primary Font</label>
|
||||
<select name="fonts.primary.name" id="font-primary"></select>
|
||||
<label>Fallback</label>
|
||||
<select name="fonts.primary.fallback" id="font-primary-fallback">
|
||||
<option value="sans-serif">sans-serif</option>
|
||||
<option value="serif">serif</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="input-field">
|
||||
<label>Secondary Font</label>
|
||||
<select name="fonts.secondary.name" id="font-secondary"></select>
|
||||
<label>Fallback</label>
|
||||
<select name="fonts.secondary.fallback" id="font-secondary-fallback">
|
||||
<option value="sans-serif">sans-serif</option>
|
||||
<option value="serif">serif</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<!-- Favicon Section -->
|
||||
<fieldset>
|
||||
<h2>Favicon</h2>
|
||||
<div class="fields">
|
||||
<div class="input-field">
|
||||
<label>Favicon Path</label>
|
||||
<input type="text" name="favicon.path" id="favicon-path" readonly>
|
||||
<input type="file" id="favicon-upload" accept=".png,.jpg,.jpeg,.ico" style="display:none;">
|
||||
<button type="button" id="choose-favicon-btn" class="up-btn">🖼️ Upload favicon</button>
|
||||
<div class="favicon-form">
|
||||
<img id="favicon-preview" src="" alt="Favicon preview" style="max-width:48px;display:none;">
|
||||
<button type="button" id="remove-favicon-btn" class="remove-btn up-btn danger" style="display:none;">Remove</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<button type="submit">Save Theme</button>
|
||||
</form>
|
||||
</div>
|
||||
<!-- Delete confirmation modal for favicon -->
|
||||
<div id="delete-favicon-modal" class="modal" style="display:none;">
|
||||
<div class="modal-content">
|
||||
<span id="delete-favicon-modal-close" class="modal-close">×</span>
|
||||
<h3>Confirm Deletion</h3>
|
||||
<p id="delete-favicon-modal-text">Are you sure you want to remove this favicon?</p>
|
||||
<div class="modal-actions">
|
||||
<button id="delete-favicon-modal-confirm" class="modal-btn danger">Remove</button>
|
||||
<button id="delete-favicon-modal-cancel" class="modal-btn">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Delete confirmation modal for font -->
|
||||
<div id="delete-font-modal" class="modal" style="display:none;">
|
||||
<div class="modal-content">
|
||||
<span id="delete-font-modal-close" class="modal-close">×</span>
|
||||
<h3>Confirm Deletion</h3>
|
||||
<p id="delete-font-modal-text">Are you sure you want to remove this font?</p>
|
||||
<div class="modal-actions">
|
||||
<button id="delete-font-modal-confirm" class="modal-btn danger">Remove</button>
|
||||
<button id="delete-font-modal-cancel" class="modal-btn">Cancel</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="{{ url_for('static', filename='js/theme-editor.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
Reference in New Issue
Block a user