2024-02-07 13:53:34 +00:00
|
|
|
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.
|
2024-02-19 18:47:27 +00:00
|
|
|
export const basePaletteKeys = new Set([
|
2024-02-07 13:53:34 +00:00
|
|
|
'bg',
|
|
|
|
'fg',
|
|
|
|
'text',
|
|
|
|
'link',
|
|
|
|
'accent',
|
|
|
|
|
|
|
|
'cBlue',
|
|
|
|
'cRed',
|
|
|
|
'cGreen',
|
|
|
|
'cOrange'
|
|
|
|
])
|
|
|
|
|
2024-02-19 18:47:27 +00:00
|
|
|
export const shadowsKeys = new Set([
|
|
|
|
'panel',
|
|
|
|
'topBar',
|
|
|
|
'popup',
|
|
|
|
'avatar',
|
|
|
|
'avatarStatus',
|
|
|
|
'panelHeader',
|
|
|
|
'button',
|
|
|
|
'buttonHover',
|
|
|
|
'buttonPressed',
|
|
|
|
'input'
|
|
|
|
])
|
|
|
|
|
2024-02-07 13:53:34 +00:00
|
|
|
// Keys that are not available in editor and never meant to be edited
|
2024-02-19 18:47:27 +00:00
|
|
|
export const hiddenKeys = new Set([
|
2024-02-07 13:53:34 +00:00
|
|
|
'profileBg',
|
|
|
|
'profileTint'
|
|
|
|
])
|
|
|
|
|
2024-02-19 18:47:27 +00:00
|
|
|
export const extendedBasePrefixes = [
|
2024-02-07 13:53:34 +00:00
|
|
|
'border',
|
|
|
|
'icon',
|
|
|
|
'highlight',
|
|
|
|
'lightText',
|
|
|
|
|
|
|
|
'popover',
|
|
|
|
|
|
|
|
'panel',
|
|
|
|
'topBar',
|
|
|
|
'tab',
|
|
|
|
'btn',
|
|
|
|
'input',
|
|
|
|
'selectedMenu',
|
|
|
|
|
|
|
|
'alert',
|
|
|
|
'badge',
|
|
|
|
|
|
|
|
'post',
|
|
|
|
'selectedPost', // wrong nomenclature
|
|
|
|
'poll',
|
|
|
|
|
|
|
|
'chatBg',
|
|
|
|
'chatMessageIncoming',
|
|
|
|
'chatMessageOutgoing'
|
|
|
|
]
|
|
|
|
|
2024-02-19 18:47:27 +00:00
|
|
|
export const extendedBaseKeys = Object.fromEntries(extendedBasePrefixes.map(prefix => [prefix, allKeys.filter(k => k.startsWith(prefix))]))
|
2024-02-07 13:53:34 +00:00
|
|
|
|
|
|
|
// Keysets that are only really used intermideately, i.e. to generate other colors
|
2024-02-19 18:47:27 +00:00
|
|
|
export const temporary = new Set([
|
2024-02-07 13:53:34 +00:00
|
|
|
'border',
|
|
|
|
'highlight'
|
|
|
|
])
|
|
|
|
|
2024-02-19 18:47:27 +00:00
|
|
|
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()]
|
|
|
|
}
|