import { tags as t } from '@lezer/highlight';
import { createTheme } from './theme-helper.mjs';

// Tema NEÓN: naranja neón dominante (texto de UI y código base),
// con acentos VERDE NEÓN (números, átomos) y CIAN (operadores, corchetes, puntuación).
export const settings = {
  background: '#0a0a0c',
  lineBackground: '#0a0a0c99',
  foreground: '#ff7a18', // naranja neón — todo el texto de la interfaz y el código base
  muted: '#ff7a1840', // bordes/separadores en naranja tenue
  caret: '#00e5ff', // cursor cian
  selection: 'rgba(57,255,20,0.25)', // selección verde neón
  selectionMatch: 'rgba(0,229,255,0.22)',
  lineHighlight: 'rgba(255,122,24,0.07)',
  gutterBackground: 'transparent',
  gutterForeground: '#ff7a1866',
};

export default createTheme({
  theme: 'dark',
  settings,
  styles: [
    { tag: [t.atom, t.bool, t.special(t.variableName)], color: '#39ff14' }, // verde neón
    { tag: t.labelName, color: '#00e5ff' }, // $: en cian
    { tag: t.keyword, color: '#ff5e00' }, // const, => naranja fuerte
    { tag: t.operator, color: '#00e5ff' }, // + - * / cian
    { tag: t.special(t.variableName), color: '#ffb877' },
    { tag: t.typeName, color: '#ff9a3c' },
    { tag: t.atom, color: '#39ff14' },
    { tag: t.number, color: '#39ff14' }, // números verde neón
    { tag: t.definition(t.variableName), color: '#ffb877' }, // nombres de const
    { tag: t.string, color: '#ffd59e' }, // "bd*4" "RolandTR909" ámbar cálido (legible)
    { tag: t.special(t.string), color: '#ffd59e' },
    { tag: t.comment, color: '#9a7a55' }, // comentarios apagados
    { tag: t.variableName, color: '#ff9a3c' }, // s, note, stack... naranja
    { tag: t.tagName, color: '#ff9a3c' },
    { tag: t.bracket, color: '#00e5ff' }, // ( ) [ ] cian
    { tag: t.meta, color: '#39ff14' },
    { tag: t.attributeName, color: '#39ff14' },
    { tag: t.propertyName, color: '#ff9a3c' }, // .lpf .gain .bank naranja
    { tag: t.className, color: '#ffb877' },
    { tag: t.invalid, color: '#ff2222' },
    { tag: [t.unit, t.punctuation], color: '#00e5ff' }, // puntuación cian
  ],
});
