@use '@gouvfr/dsfr-publisher/src/module/color/variable/options';
@use 'sass:map';
@use 'sass:list';

@function get-color($name) {
  @return list.nth(map.get(options.$values, $name), 1);
}

pre code.hljs {
  display: block;
  overflow-x: auto;
  padding: 1em;
  font-family: JetBrains Mono, Spectral, courrier, monospace;
  border-radius: 0.25rem;
  font-size: 0.75rem;
}
code.hljs {
  padding: 3px 5px
}

:root[data-fr-theme="light"] {
  .hljs {
    color: get-color(grey-100);
    background: get-color(grey-975);
    border: #{get-color(grey-900)} solid 1px;
  }
  .hljs-doctag,
  .hljs-keyword,
  .hljs-meta .hljs-keyword,
  .hljs-template-tag,
  .hljs-template-variable,
  .hljs-type,
  .hljs-variable.language_ {
    /* prettylights-syntax-keyword */
    color: get-color(error-425);
  }
  .hljs-title,
  .hljs-title.class_,
  .hljs-title.class_.inherited__,
  .hljs-title.function_ {
    /* prettylights-syntax-entity */
    color: get-color(purple-glycine-sun-319)
  }
  .hljs-attr,
  .hljs-attribute,
  .hljs-literal,
  .hljs-meta,
  .hljs-number,
  .hljs-operator,
  .hljs-variable,
  .hljs-selector-attr,
  .hljs-selector-class,
  .hljs-selector-id {
    /* prettylights-syntax-constant */
    color: get-color(info-425)
  }
  .hljs-regexp,
  .hljs-string,
  .hljs-meta .hljs-string {
    /* prettylights-syntax-string */
    color: get-color(blue-ecume-sun-247)
  }
  .hljs-built_in,
  .hljs-symbol {
    /* prettylights-syntax-variable */
    color: get-color(warning-425)
  }
  .hljs-comment,
  .hljs-code,
  .hljs-formula {
    /* prettylights-syntax-comment */
    color: get-color(grey-425)
  }
  .hljs-name,
  .hljs-quote,
  .hljs-selector-tag,
  .hljs-selector-pseudo {
    /* prettylights-syntax-entity-tag */
    color: get-color(success-425)
  }
  .hljs-subst {
    /* prettylights-syntax-storage-modifier-import */
    color: get-color(info-100)
  }
  .hljs-section {
    /* prettylights-syntax-markup-heading */
    color: get-color(green-menthe-sun-373);
    font-weight: bold
  }
  .hljs-bullet {
    /* prettylights-syntax-markup-list */
    color: get-color(yellow-moutarde-sun-348)
  }
  .hljs-emphasis {
    /* prettylights-syntax-markup-italic */
    color: get-color(info-100);
    font-style: italic
  }
  .hljs-strong {
    /* prettylights-syntax-markup-bold */
    color: get-color(info-100);
    font-weight: bold
  }
  .hljs-addition {
    /* prettylights-syntax-markup-inserted */
    color: get-color(success-425);
    background-color: get-color(success-975)
  }
  .hljs-deletion {
    /* prettylights-syntax-markup-deleted */
    color: get-color(error-425);
    background-color: get-color(error-975)
  }
  .hljs-char.escape_,
  .hljs-link,
  .hljs-params,
  .hljs-property,
  .hljs-punctuation,
  .hljs-tag {
    /* purposely ignored */

  }
}

:root[data-fr-theme="dark"] {
  .hljs {
    color: get-color(grey-950);
    background: get-color(grey-75);
    border: #{get-color(grey-150)} solid 1px;
  }
  .hljs-doctag,
  .hljs-keyword,
  .hljs-meta .hljs-keyword,
  .hljs-template-tag,
  .hljs-template-variable,
  .hljs-type,
  .hljs-variable.language_ {
    /* prettylights-syntax-keyword */
    color: get-color(error-625);
  }
  .hljs-title,
  .hljs-title.class_,
  .hljs-title.class_.inherited__,
  .hljs-title.function_ {
    /* prettylights-syntax-entity */
    color: get-color(purple-glycine-moon-630)
  }
  .hljs-attr,
  .hljs-attribute,
  .hljs-literal,
  .hljs-meta,
  .hljs-number,
  .hljs-operator,
  .hljs-variable,
  .hljs-selector-attr,
  .hljs-selector-class,
  .hljs-selector-id {
    /* prettylights-syntax-constant */
    color: get-color(info-625)
  }
  .hljs-regexp,
  .hljs-string,
  .hljs-meta .hljs-string {
    /* prettylights-syntax-string */
    color: get-color(blue-ecume-moon-675)
  }
  .hljs-built_in,
  .hljs-symbol {
    /* prettylights-syntax-variable */
    color: get-color(warning-625)
  }
  .hljs-comment,
  .hljs-code,
  .hljs-formula {
    /* prettylights-syntax-comment */
    color: get-color(grey-625)
  }
  .hljs-name,
  .hljs-quote,
  .hljs-selector-tag,
  .hljs-selector-pseudo {
    /* prettylights-syntax-entity-tag */
    color: get-color(success-625)
  }
  .hljs-subst {
    /* prettylights-syntax-storage-modifier-import */
    color: get-color(info-950)
  }
  .hljs-section {
    /* prettylights-syntax-markup-heading */
    color: get-color(green-menthe-moon-652);
    font-weight: bold
  }
  .hljs-bullet {
    /* prettylights-syntax-markup-list */
    color: get-color(yellow-moutarde-moon-860)
  }
  .hljs-emphasis {
    /* prettylights-syntax-markup-italic */
    color: get-color(info-950);
    font-style: italic
  }
  .hljs-strong {
    /* prettylights-syntax-markup-bold */
    color: get-color(info-950);
    font-weight: bold
  }
  .hljs-addition {
    /* prettylights-syntax-markup-inserted */
    color: get-color(success-625);
    background-color: get-color(success-75)
  }
  .hljs-deletion {
    /* prettylights-syntax-markup-deleted */
    color: get-color(error-625);
    background-color: get-color(error-75)
  }
  .hljs-char.escape_,
  .hljs-link,
  .hljs-params,
  .hljs-property,
  .hljs-punctuation,
  .hljs-tag {
    /* purposely ignored */

  }
}
