mirror of
https://gitlab.com/ArkHost/HelixNotes.git
synced 2026-07-25 16:25:54 +02:00
Accent colors now change automatically when a user selects a theme. Also added a One Dark theme. (#130)
WIP Reviewed-on: https://codeberg.org/ArkHost/HelixNotes/pulls/130
This commit is contained in:
+25
@@ -961,6 +961,31 @@
|
|||||||
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.8);
|
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.8);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
:root[data-theme="one-dark"] {
|
||||||
|
--bg-primary: #282c34;
|
||||||
|
--bg-secondary: #21252b;
|
||||||
|
--bg-tertiary: #2c313a;
|
||||||
|
--bg-hover: #3e4451;
|
||||||
|
--bg-active: #4b5263;
|
||||||
|
--bg-editor: #282c34;
|
||||||
|
--text-primary: #abb2bf;
|
||||||
|
--text-secondary: #828997;
|
||||||
|
--text-tertiary: #5c6370;
|
||||||
|
--text-accent: #61afef;
|
||||||
|
--border-color: #3e4451;
|
||||||
|
--border-light: #2c313a;
|
||||||
|
--accent: #61afef;
|
||||||
|
--accent-hover: #4d9fdf;
|
||||||
|
--accent-light: color-mix(in srgb, #61afef 12%, transparent);
|
||||||
|
--danger: #e06c75;
|
||||||
|
--danger-hover: #cc5560;
|
||||||
|
--success: #98c379;
|
||||||
|
--warning: #e5c07b;
|
||||||
|
--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.3);
|
||||||
|
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
|
||||||
|
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
*,
|
*,
|
||||||
*::before,
|
*::before,
|
||||||
*::after {
|
*::after {
|
||||||
|
|||||||
@@ -384,7 +384,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const darkThemes = ['dark', 'solarized-dark', 'catppuccin', 'nord', 'tokyo-night', 'github-dark', 'dracula', 'blueberry', 'forest-green', 'gruvbox', 'midnight-tide', 'cherry-blossom', 'synthwave', 'ember', 'moonlit', 'dark-coffee', 'crimson', 'material-dark', 'monokai', 'rose-pine', 'everforest', 'horizon', 'cyberpunk', 'black'];
|
const darkThemes = ['dark', 'solarized-dark', 'catppuccin', 'nord', 'tokyo-night', 'github-dark', 'dracula', 'blueberry', 'forest-green', 'gruvbox', 'midnight-tide', 'cherry-blossom', 'synthwave', 'ember', 'moonlit', 'dark-coffee', 'crimson', 'material-dark', 'monokai', 'rose-pine', 'everforest', 'horizon', 'cyberpunk', 'black', 'one-dark'];
|
||||||
let isThemeDark = $derived(
|
let isThemeDark = $derived(
|
||||||
darkThemes.includes($theme) || ($theme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches)
|
darkThemes.includes($theme) || ($theme === 'system' && window.matchMedia('(prefers-color-scheme: dark)').matches)
|
||||||
);
|
);
|
||||||
@@ -422,6 +422,7 @@
|
|||||||
{ id: 'horizon', label: 'Horizon', bg: '#1c1e26', sidebar: '#16181f', accent: '#e9547f' },
|
{ id: 'horizon', label: 'Horizon', bg: '#1c1e26', sidebar: '#16181f', accent: '#e9547f' },
|
||||||
{ id: 'cyberpunk', label: 'Cyberpunk', bg: '#0a0e17', sidebar: '#060911', accent: '#ff0080' },
|
{ id: 'cyberpunk', label: 'Cyberpunk', bg: '#0a0e17', sidebar: '#060911', accent: '#ff0080' },
|
||||||
{ id: 'black', label: 'Black', bg: '#000000', sidebar: '#0a0a0a', accent: '#ffffff' },
|
{ id: 'black', label: 'Black', bg: '#000000', sidebar: '#0a0a0a', accent: '#ffffff' },
|
||||||
|
{ id: 'one-dark', label: 'One Dark', bg: '#282c34', sidebar: '#21252b', accent: '#61afef' },
|
||||||
];
|
];
|
||||||
|
|
||||||
const accentPresets = [
|
const accentPresets = [
|
||||||
@@ -573,6 +574,13 @@
|
|||||||
.catch((e) => console.error('Failed to save general settings:', e));
|
.catch((e) => console.error('Failed to save general settings:', e));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function selectTheme(preset: typeof themePresets[0]) {
|
||||||
|
$theme = preset.id;
|
||||||
|
setTheme(preset.id);
|
||||||
|
themeDropdownOpen = false;
|
||||||
|
selectCustomAccent(preset.accent);
|
||||||
|
}
|
||||||
|
|
||||||
function selectAccent(preset: typeof accentPresets[0]) {
|
function selectAccent(preset: typeof accentPresets[0]) {
|
||||||
activeAccent = preset.name;
|
activeAccent = preset.name;
|
||||||
applyAccent(preset);
|
applyAccent(preset);
|
||||||
@@ -1061,7 +1069,7 @@
|
|||||||
<button
|
<button
|
||||||
class="dropdown-item"
|
class="dropdown-item"
|
||||||
class:active={$theme === preset.id}
|
class:active={$theme === preset.id}
|
||||||
onclick={() => { $theme = preset.id; setTheme(preset.id); themeDropdownOpen = false; }}
|
onclick={() => selectTheme(preset)}
|
||||||
>
|
>
|
||||||
<span class="dropdown-preview" style="--preview-bg: {preset.bg}; --preview-sidebar: {preset.sidebar}; --preview-accent: {preset.accent}">
|
<span class="dropdown-preview" style="--preview-bg: {preset.bg}; --preview-sidebar: {preset.sidebar}; --preview-accent: {preset.accent}">
|
||||||
<span class="preview-sidebar"></span>
|
<span class="preview-sidebar"></span>
|
||||||
|
|||||||
@@ -16,8 +16,8 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
function applyTheme(t: string) {
|
function applyTheme(t: string) {
|
||||||
const darkThemes = ['dark', 'solarized-dark', 'catppuccin', 'nord', 'tokyo-night', 'github-dark', 'dracula', 'blueberry', 'forest-green', 'gruvbox', 'midnight-tide', 'cherry-blossom', 'synthwave', 'ember', 'moonlit', 'dark-coffee', 'crimson', 'material-dark', 'monokai', 'rose-pine', 'everforest', 'horizon', 'cyberpunk', 'black'];
|
const darkThemes = ['dark', 'solarized-dark', 'catppuccin', 'nord', 'tokyo-night', 'github-dark', 'dracula', 'blueberry', 'forest-green', 'gruvbox', 'midnight-tide', 'cherry-blossom', 'synthwave', 'ember', 'moonlit', 'dark-coffee', 'crimson', 'material-dark', 'monokai', 'rose-pine', 'everforest', 'horizon', 'cyberpunk', 'black', 'one-dark'];
|
||||||
const namedThemes = ['solarized-light', 'solarized-dark', 'catppuccin', 'nord', 'tokyo-night', 'github-light', 'github-dark', 'dracula', 'blueberry', 'forest-green', 'gruvbox', 'midnight-tide', 'cherry-blossom', 'synthwave', 'ember', 'moonlit', 'light-coffee', 'dark-coffee', 'cotton-candy', 'crimson', 'cloud', 'peach', 'material-dark', 'material-light', 'monokai', 'rose-pine', 'everforest', 'horizon', 'cyberpunk', 'black'];
|
const namedThemes = ['solarized-light', 'solarized-dark', 'catppuccin', 'nord', 'tokyo-night', 'github-light', 'github-dark', 'dracula', 'blueberry', 'forest-green', 'gruvbox', 'midnight-tide', 'cherry-blossom', 'synthwave', 'ember', 'moonlit', 'light-coffee', 'dark-coffee', 'cotton-candy', 'crimson', 'cloud', 'peach', 'material-dark', 'material-light', 'monokai', 'rose-pine', 'everforest', 'horizon', 'cyberpunk', 'black', 'one-dark'];
|
||||||
const root = document.documentElement;
|
const root = document.documentElement;
|
||||||
root.classList.remove('dark');
|
root.classList.remove('dark');
|
||||||
root.removeAttribute('data-theme');
|
root.removeAttribute('data-theme');
|
||||||
|
|||||||
Reference in New Issue
Block a user