diff options
| author | Henry Jameson <me@hjkos.com> | 2024-02-19 20:47:27 +0200 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2024-02-19 20:47:27 +0200 |
| commit | 0285efadbb10ed68940a2aef2f320fbf65f841c9 (patch) | |
| tree | 7cb7b60573b37df3258f411c506802bbbb91466f /src/services/theme_data/theme2_to_theme3.js | |
| parent | 23dc2d1a5b6b3db7e5daa30c71eda1add2273e34 (diff) | |
independence from themes3, converter/backwards compat WIP
Diffstat (limited to 'src/services/theme_data/theme2_to_theme3.js')
| -rw-r--r-- | src/services/theme_data/theme2_to_theme3.js | 87 |
1 files changed, 81 insertions, 6 deletions
diff --git a/src/services/theme_data/theme2_to_theme3.js b/src/services/theme_data/theme2_to_theme3.js index 5ac87beb..0bc3b82d 100644 --- a/src/services/theme_data/theme2_to_theme3.js +++ b/src/services/theme_data/theme2_to_theme3.js @@ -1,7 +1,7 @@ import allKeys from './theme2_keys' // keys that are meant to be used globally, i.e. what's the rest of the theme is based upon. -const basePaletteKeys = new Set([ +export const basePaletteKeys = new Set([ 'bg', 'fg', 'text', @@ -14,13 +14,26 @@ const basePaletteKeys = new Set([ 'cOrange' ]) +export const shadowsKeys = new Set([ + 'panel', + 'topBar', + 'popup', + 'avatar', + 'avatarStatus', + 'panelHeader', + 'button', + 'buttonHover', + 'buttonPressed', + 'input' +]) + // Keys that are not available in editor and never meant to be edited -const hiddenKeys = new Set([ +export const hiddenKeys = new Set([ 'profileBg', 'profileTint' ]) -const extendedBasePrefixes = [ +export const extendedBasePrefixes = [ 'border', 'icon', 'highlight', @@ -47,12 +60,74 @@ const extendedBasePrefixes = [ 'chatMessageOutgoing' ] -const extendedBaseKeys = Object.fromEntries(extendedBasePrefixes.map(prefix => [prefix, allKeys.filter(k => k.startsWith(prefix))])) +export const extendedBaseKeys = Object.fromEntries(extendedBasePrefixes.map(prefix => [prefix, allKeys.filter(k => k.startsWith(prefix))])) // Keysets that are only really used intermideately, i.e. to generate other colors -const temporary = new Set([ +export const temporary = new Set([ 'border', 'highlight' ]) -const temporaryColors = {} +export const temporaryColors = {} + +export const convertTheme2To3 = (data) => { + const generateRoot = () => { + const directives = {} + basePaletteKeys.forEach(key => { directives['--' + key] = 'color | ' + data.colors[key] }) + return { + component: 'Root', + directives + } + } + + const convertShadows = () => { + const newRules = [] + shadowsKeys.forEach(key => { + const originalShadow = data.shadows[key] + const rule = {} + + switch (key) { + case 'panel': + rule.component = 'Panel' + break + case 'topBar': + rule.component = 'TopBar' + break + case 'popup': + rule.component = 'Popover' + break + case 'avatar': + rule.component = 'Avatar' + break + case 'avatarStatus': + rule.component = 'Avatar' + rule.parent = { component: 'Post' } + break + case 'panelHeader': + rule.component = 'PanelHeader' + break + case 'button': + rule.component = 'Button' + break + case 'buttonHover': + rule.component = 'Button' + rule.state = ['hover'] + break + case 'buttonPressed': + rule.component = 'Button' + rule.state = ['pressed'] + break + case 'input': + rule.component = 'Input' + break + } + rule.directives = { + shadow: originalShadow + } + newRules.push(rule) + }) + return newRules + } + + return [generateRoot(), ...convertShadows()] +} |
