( ′∀`)σ≡σ☆))Д′)レ(゚∀゚;)ヘ=З=З=Зε≡(ノ´_ゝ`)ノ HEX
HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux mail.thebrand.ai 6.8.0-107-generic #107-Ubuntu SMP PREEMPT_DYNAMIC Fri Mar 13 19:51:50 UTC 2026 x86_64
User: www-data (33)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/tmpr/../tmpr/../tmpr/..//tmpr/../editorMe/src/utils/pixie-theme-to-css-theme.ts
import {PixieTheme} from '../config/default-config';
import {CssTheme} from '../common/ui/themes/css-theme';
import {DEFAULT_THEMES} from '../config/default-themes';
import color from 'color';

export function pixieThemeToCssTheme(theme: PixieTheme): CssTheme {
  const defaultTheme = theme.isDark
    ? DEFAULT_THEMES.find(t => t.isDark)
    : DEFAULT_THEMES.find(t => !t.isDark);

  const mergedTheme = {
    ...defaultTheme,
    ...theme,
    colors: {
      ...defaultTheme?.colors,
      ...theme.colors,
    },
  };

  const parsedColors = Object.entries(mergedTheme.colors).map(
    ([key, value]) => {
      return [key, parseThemeValue(value)];
    }
  );

  return {
    id: mergedTheme.name,
    name: mergedTheme.name,
    colors: Object.fromEntries(parsedColors),
    is_dark: mergedTheme.isDark,
  };
}

function parseThemeValue(value: string) {
  // opacity or rgb string: 0 0 0
  if (value.endsWith('%') || value.split(' ').length === 3) {
    return value;
  }
  // convert user provided color to rgb string
  return color(value).rgb().array().slice(0, 3).join(' ');
}