- themes.js: 15 palettes (Defaut ObsiGate, GitHub, Linear, Spotify, Notion, Discord, Dracula, One Dark, Tokyo Night, Nord, Night Owl, Anthracite, Cyberpunk, Navy Elegance, Tons Terreux) - Chaque theme a un mode sombre ET clair - UI: grille de themes dans Configuration → Themes - Toggle Sombre/Clair par theme - Persistance localStorage (obsigate-theme + obsigate-theme-mode) - Preview visuel: barre de couleur + accent bouton - initThemes() appele au startup dans sync.js - Defaut ObsiGate conserve le theme actuel
567 lines
36 KiB
JavaScript
567 lines
36 KiB
JavaScript
/* ObsiGate — Theme System
|
|
* 15 themes x 2 modes (dark/light)
|
|
* Persisted in localStorage as 'obsigate-theme'
|
|
* Usage: import { initThemes, applyTheme, getCurrentTheme, THEMES } from './themes.js'
|
|
*/
|
|
|
|
// ── Theme definitions ────────────────────────────────────────────────
|
|
// Each theme has 'dark' and 'light' variants.
|
|
// CSS variables are applied to :root via setProperty.
|
|
|
|
var THEMES = {
|
|
|
|
'defaut-obsigate': {
|
|
name: 'Defaut ObsiGate',
|
|
desc: 'Theme original',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#0f1117', '--bg-secondary': '#161b22', '--bg-sidebar': '#13161d',
|
|
'--bg-hover': '#1f2430', '--border': '#21262d', '--text-primary': '#e6edf3',
|
|
'--text-secondary': '#8b949e', '--text-muted': '#484f58', '--accent': '#58a6ff',
|
|
'--accent-green': '#3fb950', '--tag-bg': '#1f2a3a', '--tag-text': '#79c0ff',
|
|
'--code-bg': '#161b22', '--search-bg': '#21262d', '--scrollbar': '#30363d',
|
|
'--resize-handle': '#30363d', '--overlay-bg': 'rgba(0,0,0,0.5)',
|
|
'--danger': '#ff7b72', '--danger-bg': '#3d1a18', '--success': '#3fb950', '--success-bg': '#1a3d1f',
|
|
'--accent-card': '#58a6ff', '--accent-bg': '#1f2a3a', '--accent-text': '#79c0ff',
|
|
'--green': '#3fb950', '--green-bg': '#1a3d1f', '--purple': '#a371f7', '--purple-bg': '#2d1b4e',
|
|
'--surface': '#161b22', '--surface2': '#0f1117', '--surface3': '#0d0f14',
|
|
'--border-md': '#30363d', '--text': '#e6edf3', '--text-2': '#8b949e', '--text-3': '#484f58',
|
|
'--ok': '#34d399', '--warn': '#fbbf24', '--ai': '#8b5cf6', '--err': '#f87171'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#ffffff', '--bg-secondary': '#f6f8fa', '--bg-sidebar': '#f0f2f5',
|
|
'--bg-hover': '#e8ecf0', '--border': '#d0d7de', '--text-primary': '#1f2328',
|
|
'--text-secondary': '#57606a', '--text-muted': '#9198a1', '--accent': '#0969da',
|
|
'--accent-green': '#1a7f37', '--tag-bg': '#ddf4ff', '--tag-text': '#0969da',
|
|
'--code-bg': '#f6f8fa', '--search-bg': '#ffffff', '--scrollbar': '#d0d7de',
|
|
'--resize-handle': '#d0d7de', '--overlay-bg': 'rgba(0,0,0,0.3)',
|
|
'--danger': '#cf222e', '--danger-bg': '#ffebe9', '--success': '#1a7f37', '--success-bg': '#dafbe1',
|
|
'--accent-card': '#0969da', '--accent-bg': '#ddf4ff', '--accent-text': '#0969da',
|
|
'--green': '#1a7f37', '--green-bg': '#dafbe1', '--purple': '#8250df', '--purple-bg': '#fbefff',
|
|
'--surface': '#f6f8fa', '--surface2': '#ffffff', '--surface3': '#f0f2f5',
|
|
'--border-md': '#d0d7de', '--text': '#1f2328', '--text-2': '#57606a', '--text-3': '#9198a1',
|
|
'--ok': '#1a7f37', '--warn': '#9a6700', '--ai': '#8250df', '--err': '#cf222e'
|
|
}
|
|
}
|
|
},
|
|
|
|
'github': {
|
|
name: 'GitHub', desc: 'Contraste doux',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#0d1117', '--bg-secondary': '#161b22', '--bg-sidebar': '#0d1117',
|
|
'--bg-hover': '#1c2128', '--border': '#30363d', '--text-primary': '#f0f6fc',
|
|
'--text-secondary': '#8b949e', '--text-muted': '#6e7681', '--accent': '#58a6ff',
|
|
'--accent-green': '#3fb950', '--tag-bg': '#13233a', '--tag-text': '#58a6ff',
|
|
'--code-bg': '#161b22', '--search-bg': '#0d1117', '--scrollbar': '#30363d',
|
|
'--resize-handle': '#30363d', '--overlay-bg': 'rgba(0,0,0,0.6)',
|
|
'--danger': '#f85149', '--danger-bg': '#490202', '--success': '#3fb950', '--success-bg': '#04260f',
|
|
'--accent-card': '#58a6ff', '--accent-bg': '#13233a', '--accent-text': '#58a6ff',
|
|
'--green': '#3fb950', '--green-bg': '#04260f', '--purple': '#a371f7', '--purple-bg': '#1c1130',
|
|
'--surface': '#161b22', '--surface2': '#0d1117', '--surface3': '#010409',
|
|
'--border-md': '#30363d', '--text': '#f0f6fc', '--text-2': '#8b949e', '--text-3': '#6e7681',
|
|
'--ok': '#3fb950', '--warn': '#d29922', '--ai': '#a371f7', '--err': '#f85149'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#ffffff', '--bg-secondary': '#f6f8fa', '--bg-sidebar': '#f6f8fa',
|
|
'--bg-hover': '#eaeef2', '--border': '#d0d7de', '--text-primary': '#1f2328',
|
|
'--text-secondary': '#656d76', '--text-muted': '#8c959f', '--accent': '#0969da',
|
|
'--accent-green': '#1a7f37', '--tag-bg': '#ddf4ff', '--tag-text': '#0969da',
|
|
'--code-bg': '#f6f8fa', '--search-bg': '#ffffff', '--scrollbar': '#d0d7de',
|
|
'--resize-handle': '#d0d7de', '--overlay-bg': 'rgba(0,0,0,0.25)',
|
|
'--danger': '#cf222e', '--danger-bg': '#ffebe9', '--success': '#1a7f37', '--success-bg': '#dafbe1',
|
|
'--accent-card': '#0969da', '--accent-bg': '#ddf4ff', '--accent-text': '#0969da',
|
|
'--green': '#1a7f37', '--green-bg': '#dafbe1', '--purple': '#8250df', '--purple-bg': '#fbefff',
|
|
'--surface': '#f6f8fa', '--surface2': '#ffffff', '--surface3': '#ebedf0',
|
|
'--border-md': '#d0d7de', '--text': '#1f2328', '--text-2': '#656d76', '--text-3': '#8c959f',
|
|
'--ok': '#1a7f37', '--warn': '#9a6700', '--ai': '#8250df', '--err': '#cf222e'
|
|
}
|
|
}
|
|
},
|
|
|
|
'linear': {
|
|
name: 'Linear', desc: 'Dégradés subtils',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#1a1a2e', '--bg-secondary': '#16162a', '--bg-sidebar': '#12121f',
|
|
'--bg-hover': '#222240', '--border': '#2a2a45', '--text-primary': '#e1e1f5',
|
|
'--text-secondary': '#8888aa', '--text-muted': '#555577', '--accent': '#5e6ad2',
|
|
'--accent-green': '#2ecc71', '--tag-bg': '#222050', '--tag-text': '#8b95e0',
|
|
'--code-bg': '#16162a', '--search-bg': '#1e1e38', '--scrollbar': '#2a2a45',
|
|
'--resize-handle': '#2a2a45', '--overlay-bg': 'rgba(0,0,0,0.6)',
|
|
'--danger': '#e0556a', '--danger-bg': '#361520', '--success': '#2ecc71', '--success-bg': '#0d2818',
|
|
'--accent-card': '#5e6ad2', '--accent-bg': '#222050', '--accent-text': '#8b95e0',
|
|
'--green': '#2ecc71', '--green-bg': '#0d2818', '--purple': '#9b6bff', '--purple-bg': '#25183d',
|
|
'--surface': '#16162a', '--surface2': '#1a1a2e', '--surface3': '#12121f',
|
|
'--border-md': '#2a2a45', '--text': '#e1e1f5', '--text-2': '#8888aa', '--text-3': '#555577',
|
|
'--ok': '#2ecc71', '--warn': '#f0b429', '--ai': '#9b6bff', '--err': '#e0556a'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#fafafa', '--bg-secondary': '#f0f0f5', '--bg-sidebar': '#e8e8f0',
|
|
'--bg-hover': '#e0e0ea', '--border': '#d5d5e0', '--text-primary': '#1a1a2e',
|
|
'--text-secondary': '#5c5c7a', '--text-muted': '#9090a8', '--accent': '#5e6ad2',
|
|
'--accent-green': '#1a8b4a', '--tag-bg': '#e8e8ff', '--tag-text': '#5e6ad2',
|
|
'--code-bg': '#f0f0f5', '--search-bg': '#fafafa', '--scrollbar': '#d5d5e0',
|
|
'--resize-handle': '#d5d5e0', '--overlay-bg': 'rgba(0,0,0,0.2)',
|
|
'--danger': '#c92a3e', '--danger-bg': '#ffeaea', '--success': '#1a8b4a', '--success-bg': '#e0ffe0',
|
|
'--accent-card': '#5e6ad2', '--accent-bg': '#e8e8ff', '--accent-text': '#5e6ad2',
|
|
'--green': '#1a8b4a', '--green-bg': '#e0ffe0', '--purple': '#7c5ce0', '--purple-bg': '#efe8ff',
|
|
'--surface': '#f0f0f5', '--surface2': '#fafafa', '--surface3': '#e8e8f0',
|
|
'--border-md': '#d5d5e0', '--text': '#1a1a2e', '--text-2': '#5c5c7a', '--text-3': '#9090a8',
|
|
'--ok': '#1a8b4a', '--warn': '#9a6700', '--ai': '#7c5ce0', '--err': '#c92a3e'
|
|
}
|
|
}
|
|
},
|
|
|
|
'spotify': {
|
|
name: 'Spotify', desc: 'Noir pur & vert',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#000000', '--bg-secondary': '#121212', '--bg-sidebar': '#000000',
|
|
'--bg-hover': '#1a1a1a', '--border': '#282828', '--text-primary': '#ffffff',
|
|
'--text-secondary': '#b3b3b3', '--text-muted': '#727272', '--accent': '#1db954',
|
|
'--accent-green': '#1db954', '--tag-bg': '#0d3317', '--tag-text': '#1db954',
|
|
'--code-bg': '#121212', '--search-bg': '#242424', '--scrollbar': '#333333',
|
|
'--resize-handle': '#282828', '--overlay-bg': 'rgba(0,0,0,0.7)',
|
|
'--danger': '#e22134', '--danger-bg': '#2a0a0e', '--success': '#1db954', '--success-bg': '#0d3317',
|
|
'--accent-card': '#1db954', '--accent-bg': '#0d3317', '--accent-text': '#1db954',
|
|
'--green': '#1db954', '--green-bg': '#0d3317', '--purple': '#af2896', '--purple-bg': '#2a0d33',
|
|
'--surface': '#121212', '--surface2': '#000000', '--surface3': '#000000',
|
|
'--border-md': '#282828', '--text': '#ffffff', '--text-2': '#b3b3b3', '--text-3': '#727272',
|
|
'--ok': '#1db954', '--warn': '#f59b23', '--ai': '#af2896', '--err': '#e22134'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#ffffff', '--bg-secondary': '#f5f5f5', '--bg-sidebar': '#f0f0f0',
|
|
'--bg-hover': '#e5e5e5', '--border': '#d5d5d5', '--text-primary': '#121212',
|
|
'--text-secondary': '#575757', '--text-muted': '#8c8c8c', '--accent': '#1db954',
|
|
'--accent-green': '#1db954', '--tag-bg': '#e0ffe0', '--tag-text': '#128a3c',
|
|
'--code-bg': '#f5f5f5', '--search-bg': '#ffffff', '--scrollbar': '#d5d5d5',
|
|
'--resize-handle': '#d5d5d5', '--overlay-bg': 'rgba(0,0,0,0.2)',
|
|
'--danger': '#c92a2a', '--danger-bg': '#ffe3e3', '--success': '#1db954', '--success-bg': '#e0ffe0',
|
|
'--accent-card': '#1db954', '--accent-bg': '#e0ffe0', '--accent-text': '#128a3c',
|
|
'--green': '#1db954', '--green-bg': '#e0ffe0', '--purple': '#8a2be2', '--purple-bg': '#f3e0ff',
|
|
'--surface': '#f5f5f5', '--surface2': '#ffffff', '--surface3': '#f0f0f0',
|
|
'--border-md': '#d5d5d5', '--text': '#121212', '--text-2': '#575757', '--text-3': '#8c8c8c',
|
|
'--ok': '#1db954', '--warn': '#9a6700', '--ai': '#8a2be2', '--err': '#c92a2a'
|
|
}
|
|
}
|
|
},
|
|
|
|
'notion': {
|
|
name: 'Notion', desc: 'Lecture propre',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#191919', '--bg-secondary': '#202020', '--bg-sidebar': '#191919',
|
|
'--bg-hover': '#262626', '--border': '#333333', '--text-primary': '#e6e6e6',
|
|
'--text-secondary': '#999999', '--text-muted': '#666666', '--accent': '#4b85e8',
|
|
'--accent-green': '#0ca16a', '--tag-bg': '#1c2744', '--tag-text': '#6ba1f0',
|
|
'--code-bg': '#202020', '--search-bg': '#262626', '--scrollbar': '#333333',
|
|
'--resize-handle': '#333333', '--overlay-bg': 'rgba(0,0,0,0.6)',
|
|
'--danger': '#e03e3e', '--danger-bg': '#2a1010', '--success': '#0ca16a', '--success-bg': '#0d2818',
|
|
'--accent-card': '#4b85e8', '--accent-bg': '#1c2744', '--accent-text': '#6ba1f0',
|
|
'--green': '#0ca16a', '--green-bg': '#0d2818', '--purple': '#9065e0', '--purple-bg': '#24183d',
|
|
'--surface': '#202020', '--surface2': '#191919', '--surface3': '#141414',
|
|
'--border-md': '#333333', '--text': '#e6e6e6', '--text-2': '#999999', '--text-3': '#666666',
|
|
'--ok': '#0ca16a', '--warn': '#dfab3e', '--ai': '#9065e0', '--err': '#e03e3e'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#ffffff', '--bg-secondary': '#f7f6f3', '--bg-sidebar': '#f7f6f3',
|
|
'--bg-hover': '#edece9', '--border': '#e3e2e0', '--text-primary': '#37352f',
|
|
'--text-secondary': '#787774', '--text-muted': '#abaaa7', '--accent': '#4b85e8',
|
|
'--accent-green': '#0ca16a', '--tag-bg': '#e8f0fe', '--tag-text': '#4b85e8',
|
|
'--code-bg': '#f7f6f3', '--search-bg': '#ffffff', '--scrollbar': '#e3e2e0',
|
|
'--resize-handle': '#e3e2e0', '--overlay-bg': 'rgba(0,0,0,0.15)',
|
|
'--danger': '#e03e3e', '--danger-bg': '#fdebec', '--success': '#0ca16a', '--success-bg': '#e6f7ec',
|
|
'--accent-card': '#4b85e8', '--accent-bg': '#e8f0fe', '--accent-text': '#4b85e8',
|
|
'--green': '#0ca16a', '--green-bg': '#e6f7ec', '--purple': '#9065e0', '--purple-bg': '#f3effc',
|
|
'--surface': '#f7f6f3', '--surface2': '#ffffff', '--surface3': '#edece9',
|
|
'--border-md': '#e3e2e0', '--text': '#37352f', '--text-2': '#787774', '--text-3': '#abaaa7',
|
|
'--ok': '#0ca16a', '--warn': '#dfab3e', '--ai': '#9065e0', '--err': '#e03e3e'
|
|
}
|
|
}
|
|
},
|
|
|
|
'discord': {
|
|
name: 'Discord', desc: 'Standard communautaire',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#313338', '--bg-secondary': '#2b2d31', '--bg-sidebar': '#1e1f22',
|
|
'--bg-hover': '#3c3e45', '--border': '#3f4147', '--text-primary': '#f2f3f5',
|
|
'--text-secondary': '#b5bac1', '--text-muted': '#80848e', '--accent': '#5865f2',
|
|
'--accent-green': '#23a559', '--tag-bg': '#28315c', '--tag-text': '#8891f2',
|
|
'--code-bg': '#2b2d31', '--search-bg': '#383a40', '--scrollbar': '#1a1b1e',
|
|
'--resize-handle': '#3f4147', '--overlay-bg': 'rgba(0,0,0,0.7)',
|
|
'--danger': '#da373c', '--danger-bg': '#3a1518', '--success': '#23a559', '--success-bg': '#122b1a',
|
|
'--accent-card': '#5865f2', '--accent-bg': '#28315c', '--accent-text': '#8891f2',
|
|
'--green': '#23a559', '--green-bg': '#122b1a', '--purple': '#9c5bf0', '--purple-bg': '#2c1a46',
|
|
'--surface': '#2b2d31', '--surface2': '#313338', '--surface3': '#1e1f22',
|
|
'--border-md': '#3f4147', '--text': '#f2f3f5', '--text-2': '#b5bac1', '--text-3': '#80848e',
|
|
'--ok': '#23a559', '--warn': '#f0b232', '--ai': '#9c5bf0', '--err': '#da373c'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#ffffff', '--bg-secondary': '#f2f3f5', '--bg-sidebar': '#e3e5e8',
|
|
'--bg-hover': '#e3e5e8', '--border': '#d4d7dc', '--text-primary': '#313338',
|
|
'--text-secondary': '#5c5e66', '--text-muted': '#91949e', '--accent': '#5865f2',
|
|
'--accent-green': '#248046', '--tag-bg': '#e8eafe', '--tag-text': '#4752c4',
|
|
'--code-bg': '#f2f3f5', '--search-bg': '#ffffff', '--scrollbar': '#d4d7dc',
|
|
'--resize-handle': '#d4d7dc', '--overlay-bg': 'rgba(0,0,0,0.2)',
|
|
'--danger': '#d92028', '--danger-bg': '#fde8e8', '--success': '#248046', '--success-bg': '#e6f7e8',
|
|
'--accent-card': '#5865f2', '--accent-bg': '#e8eafe', '--accent-text': '#4752c4',
|
|
'--green': '#248046', '--green-bg': '#e6f7e8', '--purple': '#8b5cf6', '--purple-bg': '#f0ebff',
|
|
'--surface': '#f2f3f5', '--surface2': '#ffffff', '--surface3': '#e3e5e8',
|
|
'--border-md': '#d4d7dc', '--text': '#313338', '--text-2': '#5c5e66', '--text-3': '#91949e',
|
|
'--ok': '#248046', '--warn': '#9a6700', '--ai': '#8b5cf6', '--err': '#d92028'
|
|
}
|
|
}
|
|
},
|
|
|
|
'dracula': {
|
|
name: 'Dracula', desc: 'Accents rose & violet',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#282a36', '--bg-secondary': '#21222c', '--bg-sidebar': '#1d1e26',
|
|
'--bg-hover': '#343746', '--border': '#3b3d54', '--text-primary': '#f8f8f2',
|
|
'--text-secondary': '#b2b2b2', '--text-muted': '#6272a4', '--accent': '#bd93f9',
|
|
'--accent-green': '#50fa7b', '--tag-bg': '#2a2240', '--tag-text': '#bd93f9',
|
|
'--code-bg': '#21222c', '--search-bg': '#343746', '--scrollbar': '#44475a',
|
|
'--resize-handle': '#3b3d54', '--overlay-bg': 'rgba(0,0,0,0.6)',
|
|
'--danger': '#ff5555', '--danger-bg': '#3a1a1a', '--success': '#50fa7b', '--success-bg': '#0d2818',
|
|
'--accent-card': '#bd93f9', '--accent-bg': '#2a2240', '--accent-text': '#bd93f9',
|
|
'--green': '#50fa7b', '--green-bg': '#0d2818', '--purple': '#bd93f9', '--purple-bg': '#2a2240',
|
|
'--surface': '#21222c', '--surface2': '#282a36', '--surface3': '#1d1e26',
|
|
'--border-md': '#3b3d54', '--text': '#f8f8f2', '--text-2': '#b2b2b2', '--text-3': '#6272a4',
|
|
'--ok': '#50fa7b', '--warn': '#f1fa8c', '--ai': '#bd93f9', '--err': '#ff5555'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#f8f8f2', '--bg-secondary': '#f0f0ea', '--bg-sidebar': '#e8e8e0',
|
|
'--bg-hover': '#e0e0d8', '--border': '#d5d5cc', '--text-primary': '#282a36',
|
|
'--text-secondary': '#4d5066', '--text-muted': '#8b8fa8', '--accent': '#8a5cf6',
|
|
'--accent-green': '#3d8f54', '--tag-bg': '#ede0ff', '--tag-text': '#8a5cf6',
|
|
'--code-bg': '#f0f0ea', '--search-bg': '#f8f8f2', '--scrollbar': '#d5d5cc',
|
|
'--resize-handle': '#d5d5cc', '--overlay-bg': 'rgba(0,0,0,0.15)',
|
|
'--danger': '#d7373f', '--danger-bg': '#fde8e8', '--success': '#3d8f54', '--success-bg': '#e6f7e8',
|
|
'--accent-card': '#8a5cf6', '--accent-bg': '#ede0ff', '--accent-text': '#8a5cf6',
|
|
'--green': '#3d8f54', '--green-bg': '#e6f7e8', '--purple': '#8a5cf6', '--purple-bg': '#ede0ff',
|
|
'--surface': '#f0f0ea', '--surface2': '#f8f8f2', '--surface3': '#e8e8e0',
|
|
'--border-md': '#d5d5cc', '--text': '#282a36', '--text-2': '#4d5066', '--text-3': '#8b8fa8',
|
|
'--ok': '#3d8f54', '--warn': '#8b7500', '--ai': '#8a5cf6', '--err': '#d7373f'
|
|
}
|
|
}
|
|
},
|
|
|
|
'one-dark': {
|
|
name: 'One Dark', desc: 'Inspire d\'Atom',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#282c34', '--bg-secondary': '#21252b', '--bg-sidebar': '#1c1f26',
|
|
'--bg-hover': '#333842', '--border': '#3e4452', '--text-primary': '#abb2bf',
|
|
'--text-secondary': '#828997', '--text-muted': '#5c6370', '--accent': '#61afef',
|
|
'--accent-green': '#98c379', '--tag-bg': '#1e3350', '--tag-text': '#61afef',
|
|
'--code-bg': '#21252b', '--search-bg': '#333842', '--scrollbar': '#3e4452',
|
|
'--resize-handle': '#3e4452', '--overlay-bg': 'rgba(0,0,0,0.6)',
|
|
'--danger': '#e06c75', '--danger-bg': '#351b1e', '--success': '#98c379', '--success-bg': '#1a2e1a',
|
|
'--accent-card': '#61afef', '--accent-bg': '#1e3350', '--accent-text': '#61afef',
|
|
'--green': '#98c379', '--green-bg': '#1a2e1a', '--purple': '#c678dd', '--purple-bg': '#2c1a3a',
|
|
'--surface': '#21252b', '--surface2': '#282c34', '--surface3': '#1c1f26',
|
|
'--border-md': '#3e4452', '--text': '#abb2bf', '--text-2': '#828997', '--text-3': '#5c6370',
|
|
'--ok': '#98c379', '--warn': '#e5c07b', '--ai': '#c678dd', '--err': '#e06c75'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#fafafa', '--bg-secondary': '#f0f0f0', '--bg-sidebar': '#e8e8e8',
|
|
'--bg-hover': '#e0e0e0', '--border': '#d4d4d4', '--text-primary': '#383a42',
|
|
'--text-secondary': '#696c77', '--text-muted': '#9ca0a4', '--accent': '#4078f2',
|
|
'--accent-green': '#50a14f', '--tag-bg': '#e0e8ff', '--tag-text': '#4078f2',
|
|
'--code-bg': '#f0f0f0', '--search-bg': '#fafafa', '--scrollbar': '#d4d4d4',
|
|
'--resize-handle': '#d4d4d4', '--overlay-bg': 'rgba(0,0,0,0.15)',
|
|
'--danger': '#e45649', '--danger-bg': '#fde8e8', '--success': '#50a14f', '--success-bg': '#e6f7e6',
|
|
'--accent-card': '#4078f2', '--accent-bg': '#e0e8ff', '--accent-text': '#4078f2',
|
|
'--green': '#50a14f', '--green-bg': '#e6f7e6', '--purple': '#a626a4', '--purple-bg': '#f8e0f8',
|
|
'--surface': '#f0f0f0', '--surface2': '#fafafa', '--surface3': '#e8e8e8',
|
|
'--border-md': '#d4d4d4', '--text': '#383a42', '--text-2': '#696c77', '--text-3': '#9ca0a4',
|
|
'--ok': '#50a14f', '--warn': '#986801', '--ai': '#a626a4', '--err': '#e45649'
|
|
}
|
|
}
|
|
},
|
|
|
|
'tokyo-night': {
|
|
name: 'Tokyo Night', desc: 'Bleu neon',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#1a1b26', '--bg-secondary': '#16161e', '--bg-sidebar': '#13131a',
|
|
'--bg-hover': '#24283b', '--border': '#2f3545', '--text-primary': '#c0caf5',
|
|
'--text-secondary': '#a9b1d6', '--text-muted': '#565f89', '--accent': '#7aa2f7',
|
|
'--accent-green': '#9ece6a', '--tag-bg': '#1f2845', '--tag-text': '#7aa2f7',
|
|
'--code-bg': '#16161e', '--search-bg': '#24283b', '--scrollbar': '#2f3545',
|
|
'--resize-handle': '#2f3545', '--overlay-bg': 'rgba(0,0,0,0.7)',
|
|
'--danger': '#f7768e', '--danger-bg': '#361a22', '--success': '#9ece6a', '--success-bg': '#1a2e1a',
|
|
'--accent-card': '#7aa2f7', '--accent-bg': '#1f2845', '--accent-text': '#7aa2f7',
|
|
'--green': '#9ece6a', '--green-bg': '#1a2e1a', '--purple': '#bb9af7', '--purple-bg': '#241a3a',
|
|
'--surface': '#16161e', '--surface2': '#1a1b26', '--surface3': '#13131a',
|
|
'--border-md': '#2f3545', '--text': '#c0caf5', '--text-2': '#a9b1d6', '--text-3': '#565f89',
|
|
'--ok': '#9ece6a', '--warn': '#e0af68', '--ai': '#bb9af7', '--err': '#f7768e'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#d5d6db', '--bg-secondary': '#c8c9d0', '--bg-sidebar': '#bfc0c8',
|
|
'--bg-hover': '#bbbbc4', '--border': '#a9aab3', '--text-primary': '#343b58',
|
|
'--text-secondary': '#565a6e', '--text-muted': '#848cb0', '--accent': '#34548a',
|
|
'--accent-green': '#485e30', '--tag-bg': '#dfe5f5', '--tag-text': '#34548a',
|
|
'--code-bg': '#c8c9d0', '--search-bg': '#d5d6db', '--scrollbar': '#a9aab3',
|
|
'--resize-handle': '#a9aab3', '--overlay-bg': 'rgba(0,0,0,0.15)',
|
|
'--danger': '#8c4351', '--danger-bg': '#f8e0e0', '--success': '#485e30', '--success-bg': '#e0f0d8',
|
|
'--accent-card': '#34548a', '--accent-bg': '#dfe5f5', '--accent-text': '#34548a',
|
|
'--green': '#485e30', '--green-bg': '#e0f0d8', '--purple': '#5a4a9a', '--purple-bg': '#e8e0f8',
|
|
'--surface': '#c8c9d0', '--surface2': '#d5d6db', '--surface3': '#bfc0c8',
|
|
'--border-md': '#a9aab3', '--text': '#343b58', '--text-2': '#565a6e', '--text-3': '#848cb0',
|
|
'--ok': '#485e30', '--warn': '#8f5e15', '--ai': '#5a4a9a', '--err': '#8c4351'
|
|
}
|
|
}
|
|
},
|
|
|
|
'nord': {
|
|
name: 'Nord', desc: 'Style arctique',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#2e3440', '--bg-secondary': '#3b4252', '--bg-sidebar': '#242933',
|
|
'--bg-hover': '#434c5e', '--border': '#4c566a', '--text-primary': '#eceff4',
|
|
'--text-secondary': '#d8dee9', '--text-muted': '#7b88a1', '--accent': '#88c0d0',
|
|
'--accent-green': '#a3be8c', '--tag-bg': '#2a3a48', '--tag-text': '#88c0d0',
|
|
'--code-bg': '#3b4252', '--search-bg': '#434c5e', '--scrollbar': '#4c566a',
|
|
'--resize-handle': '#4c566a', '--overlay-bg': 'rgba(0,0,0,0.6)',
|
|
'--danger': '#bf616a', '--danger-bg': '#3a2025', '--success': '#a3be8c', '--success-bg': '#1a2e1a',
|
|
'--accent-card': '#88c0d0', '--accent-bg': '#2a3a48', '--accent-text': '#88c0d0',
|
|
'--green': '#a3be8c', '--green-bg': '#1a2e1a', '--purple': '#b48ead', '--purple-bg': '#2a2030',
|
|
'--surface': '#3b4252', '--surface2': '#2e3440', '--surface3': '#242933',
|
|
'--border-md': '#4c566a', '--text': '#eceff4', '--text-2': '#d8dee9', '--text-3': '#7b88a1',
|
|
'--ok': '#a3be8c', '--warn': '#ebcb8b', '--ai': '#b48ead', '--err': '#bf616a'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#eceff4', '--bg-secondary': '#e5e9f0', '--bg-sidebar': '#d8dee9',
|
|
'--bg-hover': '#d8dee9', '--border': '#c8cfdb', '--text-primary': '#2e3440',
|
|
'--text-secondary': '#4c566a', '--text-muted': '#7b88a1', '--accent': '#5e81ac',
|
|
'--accent-green': '#719350', '--tag-bg': '#dfe8f0', '--tag-text': '#5e81ac',
|
|
'--code-bg': '#e5e9f0', '--search-bg': '#eceff4', '--scrollbar': '#c8cfdb',
|
|
'--resize-handle': '#c8cfdb', '--overlay-bg': 'rgba(0,0,0,0.12)',
|
|
'--danger': '#bf616a', '--danger-bg': '#f8e0e0', '--success': '#719350', '--success-bg': '#e0f0d8',
|
|
'--accent-card': '#5e81ac', '--accent-bg': '#dfe8f0', '--accent-text': '#5e81ac',
|
|
'--green': '#719350', '--green-bg': '#e0f0d8', '--purple': '#7b5e95', '--purple-bg': '#e8dff0',
|
|
'--surface': '#e5e9f0', '--surface2': '#eceff4', '--surface3': '#d8dee9',
|
|
'--border-md': '#c8cfdb', '--text': '#2e3440', '--text-2': '#4c566a', '--text-3': '#7b88a1',
|
|
'--ok': '#719350', '--warn': '#8f6b20', '--ai': '#7b5e95', '--err': '#bf616a'
|
|
}
|
|
}
|
|
},
|
|
|
|
'night-owl': {
|
|
name: 'Night Owl', desc: 'Optimise pour la nuit',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#011627', '--bg-secondary': '#01111d', '--bg-sidebar': '#010d18',
|
|
'--bg-hover': '#0b2942', '--border': '#1d3b53', '--text-primary': '#d6deeb',
|
|
'--text-secondary': '#7e97b0', '--text-muted': '#4b6479', '--accent': '#82aaff',
|
|
'--accent-green': '#c3e88d', '--tag-bg': '#152d45', '--tag-text': '#82aaff',
|
|
'--code-bg': '#01111d', '--search-bg': '#0b2942', '--scrollbar': '#1d3b53',
|
|
'--resize-handle': '#1d3b53', '--overlay-bg': 'rgba(0,0,0,0.7)',
|
|
'--danger': '#ef5350', '--danger-bg': '#2a1018', '--success': '#c3e88d', '--success-bg': '#0d2818',
|
|
'--accent-card': '#82aaff', '--accent-bg': '#152d45', '--accent-text': '#82aaff',
|
|
'--green': '#c3e88d', '--green-bg': '#0d2818', '--purple': '#c792ea', '--purple-bg': '#201838',
|
|
'--surface': '#01111d', '--surface2': '#011627', '--surface3': '#010d18',
|
|
'--border-md': '#1d3b53', '--text': '#d6deeb', '--text-2': '#7e97b0', '--text-3': '#4b6479',
|
|
'--ok': '#c3e88d', '--warn': '#ffcb8b', '--ai': '#c792ea', '--err': '#ef5350'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#fbfbfb', '--bg-secondary': '#f0f0f0', '--bg-sidebar': '#e8e8e8',
|
|
'--bg-hover': '#e0e0e0', '--border': '#d4d4d4', '--text-primary': '#403f53',
|
|
'--text-secondary': '#5f6c7a', '--text-muted': '#8e99a8', '--accent': '#4876d6',
|
|
'--accent-green': '#2d8a4e', '--tag-bg': '#e0e8ff', '--tag-text': '#4876d6',
|
|
'--code-bg': '#f0f0f0', '--search-bg': '#fbfbfb', '--scrollbar': '#d4d4d4',
|
|
'--resize-handle': '#d4d4d4', '--overlay-bg': 'rgba(0,0,0,0.12)',
|
|
'--danger': '#c92a2a', '--danger-bg': '#ffe3e3', '--success': '#2d8a4e', '--success-bg': '#e0ffe0',
|
|
'--accent-card': '#4876d6', '--accent-bg': '#e0e8ff', '--accent-text': '#4876d6',
|
|
'--green': '#2d8a4e', '--green-bg': '#e0ffe0', '--purple': '#7c3aed', '--purple-bg': '#ede0ff',
|
|
'--surface': '#f0f0f0', '--surface2': '#fbfbfb', '--surface3': '#e8e8e8',
|
|
'--border-md': '#d4d4d4', '--text': '#403f53', '--text-2': '#5f6c7a', '--text-3': '#8e99a8',
|
|
'--ok': '#2d8a4e', '--warn': '#8f6b20', '--ai': '#7c3aed', '--err': '#c92a2a'
|
|
}
|
|
}
|
|
},
|
|
|
|
'anthracite': {
|
|
name: 'Anthracite', desc: 'Material dark',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#1e1e1e', '--bg-secondary': '#252526', '--bg-sidebar': '#1a1a1a',
|
|
'--bg-hover': '#2d2d2d', '--border': '#3e3e3e', '--text-primary': '#d4d4d4',
|
|
'--text-secondary': '#9d9d9d', '--text-muted': '#6e6e6e', '--accent': '#9c7aef',
|
|
'--accent-green': '#6a9955', '--tag-bg': '#2a2250', '--tag-text': '#9c7aef',
|
|
'--code-bg': '#252526', '--search-bg': '#2d2d2d', '--scrollbar': '#3e3e3e',
|
|
'--resize-handle': '#3e3e3e', '--overlay-bg': 'rgba(0,0,0,0.7)',
|
|
'--danger': '#f44747', '--danger-bg': '#3a1a1a', '--success': '#6a9955', '--success-bg': '#1a2e1a',
|
|
'--accent-card': '#9c7aef', '--accent-bg': '#2a2250', '--accent-text': '#9c7aef',
|
|
'--green': '#6a9955', '--green-bg': '#1a2e1a', '--purple': '#9c7aef', '--purple-bg': '#2a2250',
|
|
'--surface': '#252526', '--surface2': '#1e1e1e', '--surface3': '#1a1a1a',
|
|
'--border-md': '#3e3e3e', '--text': '#d4d4d4', '--text-2': '#9d9d9d', '--text-3': '#6e6e6e',
|
|
'--ok': '#6a9955', '--warn': '#d7ba7d', '--ai': '#9c7aef', '--err': '#f44747'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#fafafa', '--bg-secondary': '#f5f5f5', '--bg-sidebar': '#eeeeee',
|
|
'--bg-hover': '#e5e5e5', '--border': '#d5d5d5', '--text-primary': '#212121',
|
|
'--text-secondary': '#616161', '--text-muted': '#9e9e9e', '--accent': '#7c3aed',
|
|
'--accent-green': '#388e3c', '--tag-bg': '#ede0ff', '--tag-text': '#7c3aed',
|
|
'--code-bg': '#f5f5f5', '--search-bg': '#fafafa', '--scrollbar': '#d5d5d5',
|
|
'--resize-handle': '#d5d5d5', '--overlay-bg': 'rgba(0,0,0,0.12)',
|
|
'--danger': '#d32f2f', '--danger-bg': '#fde8e8', '--success': '#388e3c', '--success-bg': '#e8f5e9',
|
|
'--accent-card': '#7c3aed', '--accent-bg': '#ede0ff', '--accent-text': '#7c3aed',
|
|
'--green': '#388e3c', '--green-bg': '#e8f5e9', '--purple': '#7c3aed', '--purple-bg': '#ede0ff',
|
|
'--surface': '#f5f5f5', '--surface2': '#fafafa', '--surface3': '#eeeeee',
|
|
'--border-md': '#d5d5d5', '--text': '#212121', '--text-2': '#616161', '--text-3': '#9e9e9e',
|
|
'--ok': '#388e3c', '--warn': '#8f6b20', '--ai': '#7c3aed', '--err': '#d32f2f'
|
|
}
|
|
}
|
|
},
|
|
|
|
'cyberpunk': {
|
|
name: 'Cyberpunk', desc: 'Neon vibrant',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#0a0a0f', '--bg-secondary': '#111122', '--bg-sidebar': '#08080d',
|
|
'--bg-hover': '#1a1a33', '--border': '#2a2a55', '--text-primary': '#e0e0ff',
|
|
'--text-secondary': '#8888cc', '--text-muted': '#555599', '--accent': '#00ffff',
|
|
'--accent-green': '#00ff88', '--tag-bg': '#0a2a3a', '--tag-text': '#00ffff',
|
|
'--code-bg': '#111122', '--search-bg': '#1a1a33', '--scrollbar': '#2a2a55',
|
|
'--resize-handle': '#2a2a55', '--overlay-bg': 'rgba(0,0,0,0.8)',
|
|
'--danger': '#ff3366', '--danger-bg': '#331122', '--success': '#00ff88', '--success-bg': '#003322',
|
|
'--accent-card': '#00ffff', '--accent-bg': '#0a2a3a', '--accent-text': '#00ffff',
|
|
'--green': '#00ff88', '--green-bg': '#003322', '--purple': '#ff00ff', '--purple-bg': '#220033',
|
|
'--surface': '#111122', '--surface2': '#0a0a0f', '--surface3': '#08080d',
|
|
'--border-md': '#2a2a55', '--text': '#e0e0ff', '--text-2': '#8888cc', '--text-3': '#555599',
|
|
'--ok': '#00ff88', '--warn': '#ffaa00', '--ai': '#ff00ff', '--err': '#ff3366'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#f0f0ff', '--bg-secondary': '#e8e8ff', '--bg-sidebar': '#e0e0f8',
|
|
'--bg-hover': '#d8d8f0', '--border': '#c0c0e0', '--text-primary': '#1a1a33',
|
|
'--text-secondary': '#4a4a6a', '--text-muted': '#8080a0', '--accent': '#0077cc',
|
|
'--accent-green': '#008844', '--tag-bg': '#ddeeff', '--tag-text': '#0077cc',
|
|
'--code-bg': '#e8e8ff', '--search-bg': '#f0f0ff', '--scrollbar': '#c0c0e0',
|
|
'--resize-handle': '#c0c0e0', '--overlay-bg': 'rgba(0,0,0,0.1)',
|
|
'--danger': '#cc2244', '--danger-bg': '#ffe0e8', '--success': '#008844', '--success-bg': '#d8ffe0',
|
|
'--accent-card': '#0077cc', '--accent-bg': '#ddeeff', '--accent-text': '#0077cc',
|
|
'--green': '#008844', '--green-bg': '#d8ffe0', '--purple': '#8800cc', '--purple-bg': '#f0d8ff',
|
|
'--surface': '#e8e8ff', '--surface2': '#f0f0ff', '--surface3': '#e0e0f8',
|
|
'--border-md': '#c0c0e0', '--text': '#1a1a33', '--text-2': '#4a4a6a', '--text-3': '#8080a0',
|
|
'--ok': '#008844', '--warn': '#996600', '--ai': '#8800cc', '--err': '#cc2244'
|
|
}
|
|
}
|
|
},
|
|
|
|
'navy-elegance': {
|
|
name: 'Navy Elegance', desc: 'Bleu profond & or',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#0a1628', '--bg-secondary': '#0d1f3c', '--bg-sidebar': '#081220',
|
|
'--bg-hover': '#162d50', '--border': '#1e3a5f', '--text-primary': '#d4dde8',
|
|
'--text-secondary': '#8899b4', '--text-muted': '#556688', '--accent': '#c9a84c',
|
|
'--accent-green': '#4caf7c', '--tag-bg': '#1e2840', '--tag-text': '#c9a84c',
|
|
'--code-bg': '#0d1f3c', '--search-bg': '#162d50', '--scrollbar': '#1e3a5f',
|
|
'--resize-handle': '#1e3a5f', '--overlay-bg': 'rgba(0,0,0,0.7)',
|
|
'--danger': '#d94a5a', '--danger-bg': '#351a22', '--success': '#4caf7c', '--success-bg': '#12281e',
|
|
'--accent-card': '#c9a84c', '--accent-bg': '#282218', '--accent-text': '#c9a84c',
|
|
'--green': '#4caf7c', '--green-bg': '#12281e', '--purple': '#8b6fc0', '--purple-bg': '#201a3a',
|
|
'--surface': '#0d1f3c', '--surface2': '#0a1628', '--surface3': '#081220',
|
|
'--border-md': '#1e3a5f', '--text': '#d4dde8', '--text-2': '#8899b4', '--text-3': '#556688',
|
|
'--ok': '#4caf7c', '--warn': '#c9a84c', '--ai': '#8b6fc0', '--err': '#d94a5a'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#f5f0e8', '--bg-secondary': '#ede6d8', '--bg-sidebar': '#e8dfd0',
|
|
'--bg-hover': '#e0d8c8', '--border': '#c8bda8', '--text-primary': '#2a3a50',
|
|
'--text-secondary': '#5a6a80', '--text-muted': '#8a9aa8', '--accent': '#8b6914',
|
|
'--accent-green': '#3d7a4c', '--tag-bg': '#f0e8d0', '--tag-text': '#8b6914',
|
|
'--code-bg': '#ede6d8', '--search-bg': '#f5f0e8', '--scrollbar': '#c8bda8',
|
|
'--resize-handle': '#c8bda8', '--overlay-bg': 'rgba(0,0,0,0.1)',
|
|
'--danger': '#b8383a', '--danger-bg': '#f8e0e0', '--success': '#3d7a4c', '--success-bg': '#e0f0e0',
|
|
'--accent-card': '#8b6914', '--accent-bg': '#f0e8d0', '--accent-text': '#8b6914',
|
|
'--green': '#3d7a4c', '--green-bg': '#e0f0e0', '--purple': '#6a4c8a', '--purple-bg': '#e8dff0',
|
|
'--surface': '#ede6d8', '--surface2': '#f5f0e8', '--surface3': '#e8dfd0',
|
|
'--border-md': '#c8bda8', '--text': '#2a3a50', '--text-2': '#5a6a80', '--text-3': '#8a9aa8',
|
|
'--ok': '#3d7a4c', '--warn': '#8b6914', '--ai': '#6a4c8a', '--err': '#b8383a'
|
|
}
|
|
}
|
|
},
|
|
|
|
'tons-terreux': {
|
|
name: 'Tons Terreux', desc: 'Sensation organique',
|
|
modes: {
|
|
dark: {
|
|
'--bg-primary': '#1c1a16', '--bg-secondary': '#252218', '--bg-sidebar': '#161410',
|
|
'--bg-hover': '#302b20', '--border': '#3d3628', '--text-primary': '#e8e0d0',
|
|
'--text-secondary': '#a89880', '--text-muted': '#6b5d48', '--accent': '#c8a050',
|
|
'--accent-green': '#6b9b50', '--tag-bg': '#2a2418', '--tag-text': '#c8a050',
|
|
'--code-bg': '#252218', '--search-bg': '#302b20', '--scrollbar': '#3d3628',
|
|
'--resize-handle': '#3d3628', '--overlay-bg': 'rgba(0,0,0,0.7)',
|
|
'--danger': '#c86050', '--danger-bg': '#352018', '--success': '#6b9b50', '--success-bg': '#1a2a14',
|
|
'--accent-card': '#c8a050', '--accent-bg': '#2a2418', '--accent-text': '#c8a050',
|
|
'--green': '#6b9b50', '--green-bg': '#1a2a14', '--purple': '#9070b0', '--purple-bg': '#221a30',
|
|
'--surface': '#252218', '--surface2': '#1c1a16', '--surface3': '#161410',
|
|
'--border-md': '#3d3628', '--text': '#e8e0d0', '--text-2': '#a89880', '--text-3': '#6b5d48',
|
|
'--ok': '#6b9b50', '--warn': '#c8a050', '--ai': '#9070b0', '--err': '#c86050'
|
|
},
|
|
light: {
|
|
'--bg-primary': '#f8f4ec', '--bg-secondary': '#f0e8d8', '--bg-sidebar': '#e8e0d0',
|
|
'--bg-hover': '#e0d8c8', '--border': '#c8bda0', '--text-primary': '#3d3028',
|
|
'--text-secondary': '#6b5d48', '--text-muted': '#9a8a70', '--accent': '#8b6914',
|
|
'--accent-green': '#5a8440', '--tag-bg': '#f0e0c8', '--tag-text': '#8b6914',
|
|
'--code-bg': '#f0e8d8', '--search-bg': '#f8f4ec', '--scrollbar': '#c8bda0',
|
|
'--resize-handle': '#c8bda0', '--overlay-bg': 'rgba(0,0,0,0.1)',
|
|
'--danger': '#a84040', '--danger-bg': '#f8e0e0', '--success': '#5a8440', '--success-bg': '#e0f0d8',
|
|
'--accent-card': '#8b6914', '--accent-bg': '#f0e0c8', '--accent-text': '#8b6914',
|
|
'--green': '#5a8440', '--green-bg': '#e0f0d8', '--purple': '#7058a0', '--purple-bg': '#e8dff8',
|
|
'--surface': '#f0e8d8', '--surface2': '#f8f4ec', '--surface3': '#e8e0d0',
|
|
'--border-md': '#c8bda0', '--text': '#3d3028', '--text-2': '#6b5d48', '--text-3': '#9a8a70',
|
|
'--ok': '#5a8440', '--warn': '#8b6914', '--ai': '#7058a0', '--err': '#a84040'
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
// ── Theme Engine ─────────────────────────────────────────────────────
|
|
var _currentTheme = 'defaut-obsigate';
|
|
var _currentMode = 'dark';
|
|
|
|
function applyTheme(themeKey, mode) {
|
|
var theme = THEMES[themeKey];
|
|
if (!theme) return;
|
|
mode = mode || _currentMode || 'dark';
|
|
var vars = theme.modes[mode];
|
|
if (!vars) return;
|
|
|
|
var root = document.documentElement;
|
|
Object.keys(vars).forEach(function(key) {
|
|
root.style.setProperty(key, vars[key]);
|
|
});
|
|
|
|
_currentTheme = themeKey;
|
|
_currentMode = mode;
|
|
try { localStorage.setItem('obsigate-theme', themeKey); } catch(e) {}
|
|
try { localStorage.setItem('obsigate-theme-mode', mode); } catch(e) {}
|
|
}
|
|
|
|
function toggleThemeMode() {
|
|
var newMode = _currentMode === 'dark' ? 'light' : 'dark';
|
|
applyTheme(_currentTheme, newMode);
|
|
return newMode;
|
|
}
|
|
|
|
function getCurrentTheme() { return _currentTheme; }
|
|
function getCurrentMode() { return _currentMode; }
|
|
|
|
function initThemes() {
|
|
var saved = null;
|
|
var savedMode = null;
|
|
try { saved = localStorage.getItem('obsigate-theme'); } catch(e) {}
|
|
try { savedMode = localStorage.getItem('obsigate-theme-mode'); } catch(e) {}
|
|
if (saved && THEMES[saved]) _currentTheme = saved;
|
|
if (savedMode) _currentMode = savedMode;
|
|
applyTheme(_currentTheme, _currentMode);
|
|
}
|
|
|
|
export { THEMES, applyTheme, toggleThemeMode, getCurrentTheme, getCurrentMode, initThemes };
|