/**
 * Lexical editor theme — maps node types to `nim-*` CSS class names.
 * Direct port from Nimbalyst's NimbalystEditorTheme.ts.
 */

import type { EditorThemeClasses } from 'lexical';

const theme: EditorThemeClasses = {
  autocomplete: 'nim-autocomplete',
  blockCursor: 'nim-block-cursor',
  characterLimit: 'nim-character-limit',
  code: 'nim-code',
  codeHighlight: {
    atrule: 'nim-token-attr',
    attr: 'nim-token-attr',
    boolean: 'nim-token-property',
    builtin: 'nim-token-selector',
    cdata: 'nim-token-comment',
    char: 'nim-token-selector',
    class: 'nim-token-function',
    'class-name': 'nim-token-function',
    comment: 'nim-token-comment',
    constant: 'nim-token-property',
    deleted: 'nim-token-deleted',
    doctype: 'nim-token-comment',
    entity: 'nim-token-operator',
    function: 'nim-token-function',
    important: 'nim-token-variable',
    inserted: 'nim-token-inserted',
    keyword: 'nim-token-attr',
    namespace: 'nim-token-variable',
    number: 'nim-token-property',
    operator: 'nim-token-operator',
    prolog: 'nim-token-comment',
    property: 'nim-token-property',
    punctuation: 'nim-token-punctuation',
    regex: 'nim-token-variable',
    selector: 'nim-token-selector',
    string: 'nim-token-selector',
    symbol: 'nim-token-property',
    tag: 'nim-token-property',
    unchanged: 'nim-token-unchanged',
    url: 'nim-token-operator',
    variable: 'nim-token-variable',
  },
  embedBlock: { base: 'nim-embed-block', focus: 'nim-embed-block-focus' },
  hashtag: 'nim-hashtag',
  heading: {
    h1: 'nim-h1',
    h2: 'nim-h2',
    h3: 'nim-h3',
    h4: 'nim-h4',
    h5: 'nim-h5',
    h6: 'nim-h6',
  },
  hr: 'nim-hr',
  hrSelected: 'nim-hr-selected',
  image: 'editor-image',
  indent: 'nim-indent',
  link: 'nim-link',
  list: {
    checklist: 'nim-checklist',
    listitem: 'nim-list-item',
    listitemChecked: 'nim-list-item-checked',
    listitemUnchecked: 'nim-list-item-unchecked',
    nested: { listitem: 'nim-nested-list-item' },
    olDepth: ['nim-ol1', 'nim-ol2', 'nim-ol3', 'nim-ol4', 'nim-ol5'],
    ul: 'nim-ul',
  },
  ltr: 'nim-ltr',
  mark: 'nim-mark',
  markOverlap: 'nim-mark-overlap',
  paragraph: 'nim-paragraph',
  quote: 'nim-quote',
  rtl: 'nim-rtl',
  tab: 'nim-tab-node',
  table: 'nim-table',
  tableCell: 'nim-table-cell',
  tableCellHeader: 'nim-table-cell-header',
  text: {
    bold: 'nim-text-bold',
    code: 'nim-text-code',
    highlight: 'nim-text-highlight',
    italic: 'nim-text-italic',
    strikethrough: 'nim-text-strikethrough',
    subscript: 'nim-text-subscript',
    superscript: 'nim-text-superscript',
    underline: 'nim-text-underline',
    underlineStrikethrough: 'nim-text-underline-strikethrough',
  },
};

export default theme;
