diff --git a/packages/web/index.html.tpl b/packages/web/index.html.tpl
index 69fb1621c..b188f34f9 100644
--- a/packages/web/index.html.tpl
+++ b/packages/web/index.html.tpl
@@ -15,6 +15,7 @@
+
diff --git a/packages/web/package.json b/packages/web/package.json
index e57c0d161..8b9bc916e 100644
--- a/packages/web/package.json
+++ b/packages/web/package.json
@@ -64,6 +64,7 @@
"highlight.js": "^11.11.1",
"interval-operations": "^1.0.7",
"leaflet": "^1.8.0",
- "wellknown": "^0.5.0"
+ "wellknown": "^0.5.0",
+ "xml-formatter": "^3.6.4"
}
}
diff --git a/packages/web/public/tokens.css b/packages/web/public/tokens.css
new file mode 100644
index 000000000..3074887a6
--- /dev/null
+++ b/packages/web/public/tokens.css
@@ -0,0 +1,178 @@
+.hljs {
+ background: var(--token-base);
+ color: var(--token-text);
+}
+
+.hljs-subst {
+ color: var(--token-subst);
+}
+
+.hljs-formula {
+ color: var(--token-formula);
+}
+
+.hljs-attr {
+ color: var(--token-attr);
+}
+
+.hljs-property {
+ color: var(--token-property);
+}
+
+.hljs-params {
+ color: var(--token-params);
+}
+
+.hljs-comment {
+ color: var(--token-comment);
+}
+
+.hljs-tag {
+ color: var(--token-tag);
+}
+
+.hljs-punctuation {
+ color: var(--token-punctuation);
+}
+
+.hljs-tag .hljs-name {
+ color: var(--token-tag-name);
+}
+
+.hljs-tag .hljs-attr {
+ color: var(--token-tag-attr);
+}
+
+.hljs-keyword {
+ color: var(--token-keyword);
+}
+
+.hljs-attribute {
+ color: var(--token-attribute);
+}
+
+.hljs-selector-tag {
+ color: var(--token-selector-tag);
+}
+
+.hljs-meta .hljs-keyword {
+ color: var(--token-meta-keyword);
+}
+
+.hljs-doctag {
+ color: var(--token-doctag);
+}
+
+.hljs-name {
+ color: var(--token-name);
+}
+
+.hljs-type {
+ color: var(--token-type);
+}
+
+.hljs-string {
+ color: var(--token-string);
+}
+
+.hljs-number {
+ color: var(--token-number);
+}
+
+.hljs-selector-id {
+ color: var(--token-selector-id);
+}
+
+.hljs-selector-class {
+ color: var(--token-selector-class);
+}
+
+.hljs-quote {
+ color: var(--token-quote);
+}
+
+.hljs-template-tag {
+ color: var(--token-template-tag);
+}
+
+.hljs-deletion {
+ color: var(--token-deletion);
+}
+
+.hljs-title {
+ color: var(--token-title);
+}
+
+.hljs-section {
+ color: var(--token-section);
+}
+
+.hljs-regexp {
+ color: var(--token-regexp);
+}
+
+.hljs-symbol {
+ color: var(--token-symbol);
+}
+
+.hljs-variable {
+ color: var(--token-variable);
+}
+
+.hljs-template-variable {
+ color: var(--token-template-variable);
+}
+
+.hljs-link {
+ color: var(--token-link);
+}
+
+.hljs-selector-attr {
+ color: var(--token-selector-attr);
+}
+
+.hljs-operator {
+ color: var(--token-operator);
+}
+
+.hljs-selector-pseudo {
+ color: var(--token-selector-pseudo);
+}
+
+.hljs-literal {
+ color: var(--token-literal);
+}
+
+.hljs-built_in {
+ color: var(--token-built_in);
+}
+
+.hljs-bullet {
+ color: var(--token-bullet);
+}
+
+.hljs-code {
+ color: var(--token-code);
+}
+
+.hljs-addition {
+ color: var(--token-addition);
+}
+
+.hljs-meta {
+ color: var(--token-meta);
+}
+
+.hljs-meta .hljs-string {
+ color: var(--token-meta-string);
+}
+
+.hljs-emphasis {
+ color: var(--token-emphasis);
+ font-style: italic;
+}
+
+.hljs-strong {
+ color: var(--token-strong);
+ font-weight: bold;
+}
diff --git a/packages/web/src/celldata/XmlCellView.svelte b/packages/web/src/celldata/XmlCellView.svelte
index ea52859a5..ca18a81dd 100644
--- a/packages/web/src/celldata/XmlCellView.svelte
+++ b/packages/web/src/celldata/XmlCellView.svelte
@@ -14,6 +14,7 @@
.wrapper {
overflow: scroll;
position: absolute;
+ background: var(--token-base);
top: 0;
left: 0;
right: 0;
diff --git a/packages/web/src/celldata/XmlHighlighter.svelte b/packages/web/src/celldata/XmlHighlighter.svelte
index a2973c5e6..2f5fe655c 100644
--- a/packages/web/src/celldata/XmlHighlighter.svelte
+++ b/packages/web/src/celldata/XmlHighlighter.svelte
@@ -1,14 +1,12 @@