diff --git a/src/data/extra/themes/vx-idea/README.md b/src/data/extra/themes/vx-idea/README.md
new file mode 100644
index 00000000..25ac9e4b
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/README.md
@@ -0,0 +1,44 @@
+
vnoteX idea theme
+
+
+
+自定义方式参考[Vnote](https://tamlok.github.io/vnote/zh_cn/)官方文档:[主题和样式](https://tamlok.github.io/vnote/zh_cn/#!docs/%E7%94%A8%E6%88%B7/%E4%B8%BB%E9%A2%98%E5%92%8C%E6%A0%B7%E5%BC%8F.md)
+
+`vx-idea`主题又名`石板灰`,适用于新版本[vnotex](https://vnotex.github.io/vnote/zh_cn/#!vnotex.md)版本;vnote 2.0` 版本请前往源仓库切换至` vnote 分支。
+
+
+👉 尝鲜体验,请移步源仓库:https://gitee.com/uRick/vnote-idea-theme
+
+## 1. 可选配置
+
+### 1.1 适配2套代码高亮主题
+
+详见主题目录 `code_higlight` 文件夹内容,因人而异,可根据需求参考官方自定义。
+
+主题默认样式为`highlight-one-light.css`,当前提供:`highlight-dark.css`、`highlight-one-light.css`两款代码样式;主题样式基于仓库[PrismJS Themes](https://github.com/PrismJS/prism-themes)样式微调而来,具体支持语言样式请参考[Prism.js](https://prismjs.com)。
+
+使用主题时,请将`code_highlight`文件夹下样式,复制重命名替换主题根目录下`highlight.css`样式,重启Vnotex即可生效。
+
+```ini
+highlight-dark.css #dark样式
+highlight-one-light.css #light样式
+YaHei Consolas Hybrid 1.12.ttf #主题首选字体,可选
+```
+
+
+### 1.2 alert组件增强
+
+> 基于`vnotex`原生 `alert` 组件支持,引入图标增强,主要为编写技术文档适配,当前不支持 `alert-light`、`alert-success`。
+效果如下:
+
+
+
+复制 `tips_components/style.css` 中样式——>追加至 `web.css` 文件尾即可。
+
+## 2. 预览
+
+
+
+## 3. 鸣谢
+
+- [tamlok](https://github.com/tamlok) - [VNote](https://github.com/tamlok/vnote)
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/arrow_dropdown.svg b/src/data/extra/themes/vx-idea/arrow_dropdown.svg
new file mode 100644
index 00000000..41fa00d2
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/arrow_dropdown.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/arrow_dropdown_disabled.svg b/src/data/extra/themes/vx-idea/arrow_dropdown_disabled.svg
new file mode 100644
index 00000000..ff420af8
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/arrow_dropdown_disabled.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/branch_closed.svg b/src/data/extra/themes/vx-idea/branch_closed.svg
new file mode 100644
index 00000000..f44c49d0
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/branch_closed.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/data/extra/themes/vx-idea/branch_open.svg b/src/data/extra/themes/vx-idea/branch_open.svg
new file mode 100644
index 00000000..e6b5decc
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/branch_open.svg
@@ -0,0 +1,8 @@
+
diff --git a/src/data/extra/themes/vx-idea/checkbox_checked.svg b/src/data/extra/themes/vx-idea/checkbox_checked.svg
new file mode 100644
index 00000000..9760cfa1
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/checkbox_checked.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/checkbox_checked_disabled.svg b/src/data/extra/themes/vx-idea/checkbox_checked_disabled.svg
new file mode 100644
index 00000000..ec3f7a41
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/checkbox_checked_disabled.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/checkbox_unchecked.svg b/src/data/extra/themes/vx-idea/checkbox_unchecked.svg
new file mode 100644
index 00000000..f99d5a12
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/checkbox_unchecked.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/checkbox_unchecked_disabled.svg b/src/data/extra/themes/vx-idea/checkbox_unchecked_disabled.svg
new file mode 100644
index 00000000..a51120c2
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/checkbox_unchecked_disabled.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/close.svg b/src/data/extra/themes/vx-idea/close.svg
new file mode 100644
index 00000000..f9a34611
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/close.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/close_grey.svg b/src/data/extra/themes/vx-idea/close_grey.svg
new file mode 100644
index 00000000..6311538f
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/close_grey.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/code_highlight/YaHei Consolas Hybrid 1.12.ttf b/src/data/extra/themes/vx-idea/code_highlight/YaHei Consolas Hybrid 1.12.ttf
new file mode 100644
index 00000000..ea974aa3
Binary files /dev/null and b/src/data/extra/themes/vx-idea/code_highlight/YaHei Consolas Hybrid 1.12.ttf differ
diff --git a/src/data/extra/themes/vx-idea/code_highlight/highlight-dark.css b/src/data/extra/themes/vx-idea/code_highlight/highlight-dark.css
new file mode 100644
index 00000000..1a10d081
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/code_highlight/highlight-dark.css
@@ -0,0 +1,232 @@
+/* PrismJS 1.23.0
+https://prismjs.com/download.html#themes=prism-tomorrow&languages=markup+css+clike+javascript+abap+abnf+actionscript+ada+agda+al+antlr4+apacheconf+apl+applescript+aql+arduino+arff+asciidoc+aspnet+asm6502+autohotkey+autoit+bash+basic+batch+bbcode+bison+bnf+brainfuck+brightscript+bro+bsl+c+csharp+cpp+cil+clojure+cmake+coffeescript+concurnas+csp+crystal+css-extras+cypher+d+dart+dax+dhall+diff+django+dns-zone-file+docker+ebnf+editorconfig+eiffel+ejs+elixir+elm+etlua+erb+erlang+excel-formula+fsharp+factor+firestore-security-rules+flow+fortran+ftl+gml+gcode+gdscript+gedcom+gherkin+git+glsl+go+graphql+groovy+haml+handlebars+haskell+haxe+hcl+hlsl+http+hpkp+hsts+ichigojam+icon+ignore+inform7+ini+io+j+java+javadoc+javadoclike+javastacktrace+jolie+jq+jsdoc+js-extras+json+json5+jsonp+jsstacktrace+js-templates+julia+keyman+kotlin+latex+latte+less+lilypond+liquid+lisp+livescript+llvm+lolcode+lua+makefile+markdown+markup-templating+matlab+mel+mizar+mongodb+monkey+moonscript+n1ql+n4js+nand2tetris-hdl+naniscript+nasm+neon+nginx+nim+nix+nsis+objectivec+ocaml+opencl+oz+parigp+parser+pascal+pascaligo+pcaxis+peoplecode+perl+php+phpdoc+php-extras+plsql+powerquery+powershell+processing+prolog+properties+protobuf+pug+puppet+pure+purebasic+python+q+qml+qore+r+racket+jsx+tsx+reason+regex+renpy+rest+rip+roboconf+robotframework+ruby+rust+sas+sass+scss+scala+scheme+shell-session+smali+smalltalk+smarty+solidity+solution-file+soy+sparql+splunk-spl+sqf+sql+stan+iecst+stylus+swift+t4-templating+t4-cs+t4-vb+tap+tcl+tt2+textile+toml+turtle+twig+typescript+typoscript+unrealscript+vala+vbnet+velocity+verilog+vhdl+vim+visual-basic+warpscript+wasm+wiki+xeora+xml-doc+xojo+xquery+yaml+yang+zig&plugins=line-numbers+toolbar+copy-to-clipboard+filter-highlight-all */
+/**
+ * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
+ * Based on https://github.com/chriskempson/tomorrow-theme
+ * @author Rose Pritchard
+ */
+
+ code[class*="language-"],
+ pre[class*="language-"] {
+ color: #ccc;
+ background: none;
+ font-family: "YaHei Consolas Hybrid", JetBrains Mono NL, Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ font-size: 1em;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ line-height: 1.5;
+ border-radius: .3em;
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+
+ }
+
+ /* Code blocks */
+ pre[class*="language-"] {
+ padding: .4em;
+ margin: .5em 0;
+ overflow: auto;
+ }
+
+ :not(pre) > code[class*="language-"],
+ pre[class*="language-"] {
+ background: #2d2d2d;
+ }
+
+ /* Inline code */
+ :not(pre) > code[class*="language-"] {
+ padding: .1em;
+ border-radius: .3em;
+ white-space: normal;
+ }
+
+ .token.comment,
+ .token.block-comment,
+ .token.prolog,
+ .token.doctype,
+ .token.cdata {
+ color: #999;
+ }
+
+ .token.punctuation {
+ color: #ccc;
+ }
+
+ .token.tag,
+ .token.attr-name,
+ .token.namespace,
+ .token.deleted {
+ color: #e2777a;
+ }
+
+ .token.function-name {
+ color: #6196cc;
+ }
+
+ .token.boolean,
+ .token.number,
+ .token.function {
+ color: #f08d49;
+ }
+
+ .token.property,
+ .token.class-name,
+ .token.constant,
+ .token.symbol {
+ color: #f8c555;
+ }
+
+ .token.selector,
+ .token.important,
+ .token.atrule,
+ .token.keyword,
+ .token.builtin {
+ color: #cc99cd;
+ }
+
+ .token.string,
+ .token.char,
+ .token.attr-value,
+ .token.regex,
+ .token.variable {
+ color: #7ec699;
+ }
+
+ .token.operator,
+ .token.entity,
+ .token.url {
+ color: #67cdcc;
+ }
+
+ .token.important,
+ .token.bold {
+ font-weight: bold;
+ }
+ .token.italic {
+ font-style: italic;
+ }
+
+ .token.entity {
+ cursor: help;
+ }
+
+ .token.inserted {
+ color: green;
+ }
+
+ pre[class*="language-"].line-numbers {
+ position: relative;
+ padding-left: 3.8em;
+ counter-reset: linenumber;
+ }
+
+ pre[class*="language-"].line-numbers > code {
+ position: relative;
+ white-space: inherit;
+ }
+
+ .line-numbers .line-numbers-rows {
+ position: absolute;
+ pointer-events: none;
+ top: 0;
+ font-size: 100%;
+ left: -3.8em;
+ width: 3em; /* works for line-numbers below 1000 lines */
+ letter-spacing: -1px;
+ border-right: 1px solid #999;
+
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+
+ }
+
+ .line-numbers-rows > span {
+ display: block;
+ counter-increment: linenumber;
+ }
+
+ .line-numbers-rows > span:before {
+ content: counter(linenumber);
+ color: #999;
+ display: block;
+ padding-right: 0.8em;
+ text-align: right;
+ }
+
+ div.code-toolbar {
+ position: relative;
+ }
+
+ div.code-toolbar > .toolbar {
+ position: absolute;
+ top: .3em;
+ right: .2em;
+ transition: opacity 0.3s ease-in-out;
+ opacity: 0;
+ }
+
+ div.code-toolbar:hover > .toolbar {
+ opacity: 1;
+ }
+
+ /* Separate line b/c rules are thrown out if selector is invalid.
+ IE11 and old Edge versions don't support :focus-within. */
+ div.code-toolbar:focus-within > .toolbar {
+ opacity: 1;
+ }
+
+ div.code-toolbar > .toolbar .toolbar-item {
+ display: inline-block;
+ }
+
+ div.code-toolbar > .toolbar a {
+ cursor: pointer;
+ }
+
+ div.code-toolbar > .toolbar button {
+ background: none;
+ border: 0;
+ color: inherit;
+ font: inherit;
+ line-height: normal;
+ overflow: visible;
+ padding: 0;
+ -webkit-user-select: none; /* for button */
+ -moz-user-select: none;
+ -ms-user-select: none;
+ }
+
+ div.code-toolbar > .toolbar a,
+ div.code-toolbar > .toolbar button,
+ div.code-toolbar > .toolbar span {
+ color: #bbb;
+ font-size: .8em;
+ padding: 0 .5em;
+ background: #f5f2f0;
+ background: rgba(224, 224, 224, 0.2);
+ box-shadow: 0 2px 0 0 rgba(66, 185, 131, .1);;
+ border-radius: .5em;
+ }
+
+ div.code-toolbar > .toolbar a:hover,
+ div.code-toolbar > .toolbar a:focus,
+ div.code-toolbar > .toolbar button:hover,
+ div.code-toolbar > .toolbar button:focus,
+ div.code-toolbar > .toolbar span:hover,
+ div.code-toolbar > .toolbar span:focus {
+ color: #ffffff;
+ text-decoration: none;
+ }
+
+
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/code_highlight/highlight-one-light.css b/src/data/extra/themes/vx-idea/code_highlight/highlight-one-light.css
new file mode 100644
index 00000000..93b238ea
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/code_highlight/highlight-one-light.css
@@ -0,0 +1,297 @@
+
+/**
+ * One Light theme for prism.js
+ * Based on Atom's One Light theme: https://github.com/atom/atom/tree/master/packages/one-light-syntax
+ */
+
+/**
+ * One Light colours in terms of RGB (accurate as of commit eb064bf on 19 Feb 2021)
+ * @mono-1: #383a42
+ * @mono-2: #696c77
+ * @mono-3: #a0a1a7
+ * @hue-1: #0184bc <- cyan
+ * @hue-2: #4078f2 <- blue
+ * @hue-3: #a626a4 <- purple
+ * @hue-4: #16a085 <- green
+ * @hue-5: #e45649 <- red 1
+ * @hue-5-2: #ca1243 <- red 2
+ * @hue-6: #b76b01 <- orange 1
+ * @hue-6-2: #cb7701 <- orange 2
+ * @syntax-fg: #383a42
+ * @syntax-bg: #f4f7f9
+ * @syntax-gutter: #9d9d9f
+ * @syntax-guide: #383a4233
+ * @syntax-accent: #526eff
+ */
+
+ code[class*="language-"],
+ pre[class*="language-"] {
+ background: #f4f7f9;
+ color: #383a42;
+ font-family: "YaHei Consolas Hybrid", JetBrains Mono NL, Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ direction: ltr;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ line-height: 1.5;
+
+ -moz-tab-size: 2;
+ -o-tab-size: 2;
+ tab-size: 2;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+ }
+
+
+ /* Code blocks */
+ pre[class*="language-"] {
+ padding: 1em;
+ margin: 0.5em 0;
+ overflow: auto;
+ border-radius: 0.3em;
+ }
+
+ /* Inline code */
+ :not(pre) > code[class*="language-"] {
+ padding: 0.2em 0.3em;
+ border-radius: 0.3em;
+ white-space: normal;
+ }
+
+ .token.comment,
+ .token.prolog,
+ .token.cdata {
+ color: #00804e;
+ }
+
+ .token.doctype,
+ .token.punctuation,
+ .token.entity {
+ color: #383a42;
+ }
+
+ .token.attr-name,
+ .token.class-name,
+ .token.boolean,
+ .token.constant,
+ .token.number,
+ .token.atrule {
+ color: #b76b01;
+ }
+
+ .token.keyword {
+ color: #a626a4;
+ }
+
+ .token.property,
+ .token.tag,
+ .token.symbol,
+ .token.deleted,
+ .token.important {
+ color: #e45649;
+ }
+
+ .token.selector,
+ .token.string,
+ .token.char,
+ .token.builtin,
+ .token.inserted,
+ .token.regex,
+ .token.attr-value,
+ .token.attr-value > .token.punctuation {
+ color: #16a085;
+ }
+
+ .token.variable,
+ .token.operator,
+ .token.function {
+ color: #4078f2;
+ }
+
+ .token.url {
+ color: #0184bc;
+ text-decoration: underline;
+ }
+
+ /* HTML overrides */
+ .token.attr-value > .token.punctuation.attr-equals,
+ .token.special-attr > .token.attr-value > .token.value.css {
+ color: #383a42;
+ }
+
+ /* CSS overrides */
+ .language-css .token.selector {
+ color: #e45649;
+ }
+
+ .language-css .token.property {
+ color: #383a42;
+ }
+
+ .language-css .token.url {
+ text-decoration: none;
+ }
+
+ .language-css .token.function,
+ .language-css .token.url > .token.function {
+ color: #0184bc;
+ }
+
+ .language-css .token.url > .token.string.url {
+ color: #16a085;
+ }
+
+ .language-css .token.important,
+ .language-css .token.atrule .token.rule {
+ color: #a626a4;
+ }
+
+ /* JS overrides */
+ .language-javascript .token.operator {
+ color: #a626a4;
+ }
+
+ .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation {
+ color: #ca1243;
+ }
+
+ /* JSON overrides */
+ .language-json .token.operator {
+ color: #383a42;
+ }
+
+ .language-json .token.null.keyword {
+ color: #b76b01;
+ }
+
+ /* MD overrides */
+ .language-markdown .token.url,
+ .language-markdown .token.url > .token.operator,
+ .language-markdown .token.url-reference.url > .token.string {
+ color: #383a42;
+ text-decoration: none;
+ }
+
+ .language-markdown .token.url > .token.content {
+ color: #4078f2;
+ text-decoration: none;
+ }
+
+ .language-markdown .token.url > .token.url,
+ .language-markdown .token.url-reference.url {
+ color: #0184bc;
+ text-decoration: underline;
+ }
+
+ .language-markdown .token.blockquote.punctuation,
+ .language-markdown .token.hr.punctuation {
+ color: #a0a1a7;
+ font-style: italic;
+ }
+
+ .language-markdown .token.code-snippet {
+ color: #16a085;
+ }
+
+ .language-markdown .token.bold .token.content {
+ color: #b76b01;
+ }
+
+ .language-markdown .token.italic .token.content {
+ color: #a626a4;
+ }
+
+ .language-markdown .token.strike .token.content,
+ .language-markdown .token.strike .token.punctuation,
+ .language-markdown .token.list.punctuation,
+ .language-markdown .token.title.important > .token.punctuation {
+ color: #e45649;
+ }
+
+ /* General */
+ .token.bold {
+ font-weight: bold;
+ }
+
+ /* .token.comment, */
+ .token.italic {
+ font-style: italic;
+ }
+
+ .token.entity {
+ cursor: help;
+ }
+
+ .token.namespace {
+ opacity: 0.8;
+ }
+
+ div.code-toolbar {
+ position: relative;
+ }
+
+ div.code-toolbar > .toolbar {
+ position: absolute;
+ top: .3em;
+ right: .2em;
+ transition: opacity 0.3s ease-in-out;
+ opacity: 0;
+ }
+
+ div.code-toolbar:hover > .toolbar {
+ opacity: 1;
+ }
+
+ /* Separate line b/c rules are thrown out if selector is invalid.
+ IE11 and old Edge versions don't support :focus-within. */
+ div.code-toolbar:focus-within > .toolbar {
+ opacity: 1;
+ }
+
+ div.code-toolbar > .toolbar .toolbar-item {
+ display: inline-block;
+ }
+
+ div.code-toolbar > .toolbar a {
+ cursor: pointer;
+ }
+
+ div.code-toolbar > .toolbar button {
+ background: none;
+ border: 0;
+ color: inherit;
+ font: inherit;
+ line-height: normal;
+ overflow: visible;
+ padding: 0;
+ -webkit-user-select: none; /* for button */
+ -moz-user-select: none;
+ -ms-user-select: none;
+ }
+
+ div.code-toolbar > .toolbar a,
+ div.code-toolbar > .toolbar button,
+ div.code-toolbar > .toolbar span {
+ color: #757F9A;
+ font-size: .8em;
+ padding: 0 .5em;
+ background: #D7DDE8;
+ box-shadow: 0 2px 0 0 rgba(58, 91, 134, 0.1);
+ border-radius: .5em;
+ }
+
+ div.code-toolbar > .toolbar a:hover,
+ div.code-toolbar > .toolbar a:focus,
+ div.code-toolbar > .toolbar button:hover,
+ div.code-toolbar > .toolbar button:focus,
+ div.code-toolbar > .toolbar span:hover,
+ div.code-toolbar > .toolbar span:focus {
+ color: #757F9A;
+ text-decoration: none;
+ }
+
+
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/cover.png b/src/data/extra/themes/vx-idea/cover.png
new file mode 100644
index 00000000..28c071e4
Binary files /dev/null and b/src/data/extra/themes/vx-idea/cover.png differ
diff --git a/src/data/extra/themes/vx-idea/down.svg b/src/data/extra/themes/vx-idea/down.svg
new file mode 100644
index 00000000..41fa00d2
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/down.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/down_disabled.svg b/src/data/extra/themes/vx-idea/down_disabled.svg
new file mode 100644
index 00000000..ff420af8
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/down_disabled.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/float.svg b/src/data/extra/themes/vx-idea/float.svg
new file mode 100644
index 00000000..4a3ad0fb
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/float.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/highlight.css b/src/data/extra/themes/vx-idea/highlight.css
new file mode 100644
index 00000000..93b238ea
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/highlight.css
@@ -0,0 +1,297 @@
+
+/**
+ * One Light theme for prism.js
+ * Based on Atom's One Light theme: https://github.com/atom/atom/tree/master/packages/one-light-syntax
+ */
+
+/**
+ * One Light colours in terms of RGB (accurate as of commit eb064bf on 19 Feb 2021)
+ * @mono-1: #383a42
+ * @mono-2: #696c77
+ * @mono-3: #a0a1a7
+ * @hue-1: #0184bc <- cyan
+ * @hue-2: #4078f2 <- blue
+ * @hue-3: #a626a4 <- purple
+ * @hue-4: #16a085 <- green
+ * @hue-5: #e45649 <- red 1
+ * @hue-5-2: #ca1243 <- red 2
+ * @hue-6: #b76b01 <- orange 1
+ * @hue-6-2: #cb7701 <- orange 2
+ * @syntax-fg: #383a42
+ * @syntax-bg: #f4f7f9
+ * @syntax-gutter: #9d9d9f
+ * @syntax-guide: #383a4233
+ * @syntax-accent: #526eff
+ */
+
+ code[class*="language-"],
+ pre[class*="language-"] {
+ background: #f4f7f9;
+ color: #383a42;
+ font-family: "YaHei Consolas Hybrid", JetBrains Mono NL, Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+ direction: ltr;
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ line-height: 1.5;
+
+ -moz-tab-size: 2;
+ -o-tab-size: 2;
+ tab-size: 2;
+
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+ }
+
+
+ /* Code blocks */
+ pre[class*="language-"] {
+ padding: 1em;
+ margin: 0.5em 0;
+ overflow: auto;
+ border-radius: 0.3em;
+ }
+
+ /* Inline code */
+ :not(pre) > code[class*="language-"] {
+ padding: 0.2em 0.3em;
+ border-radius: 0.3em;
+ white-space: normal;
+ }
+
+ .token.comment,
+ .token.prolog,
+ .token.cdata {
+ color: #00804e;
+ }
+
+ .token.doctype,
+ .token.punctuation,
+ .token.entity {
+ color: #383a42;
+ }
+
+ .token.attr-name,
+ .token.class-name,
+ .token.boolean,
+ .token.constant,
+ .token.number,
+ .token.atrule {
+ color: #b76b01;
+ }
+
+ .token.keyword {
+ color: #a626a4;
+ }
+
+ .token.property,
+ .token.tag,
+ .token.symbol,
+ .token.deleted,
+ .token.important {
+ color: #e45649;
+ }
+
+ .token.selector,
+ .token.string,
+ .token.char,
+ .token.builtin,
+ .token.inserted,
+ .token.regex,
+ .token.attr-value,
+ .token.attr-value > .token.punctuation {
+ color: #16a085;
+ }
+
+ .token.variable,
+ .token.operator,
+ .token.function {
+ color: #4078f2;
+ }
+
+ .token.url {
+ color: #0184bc;
+ text-decoration: underline;
+ }
+
+ /* HTML overrides */
+ .token.attr-value > .token.punctuation.attr-equals,
+ .token.special-attr > .token.attr-value > .token.value.css {
+ color: #383a42;
+ }
+
+ /* CSS overrides */
+ .language-css .token.selector {
+ color: #e45649;
+ }
+
+ .language-css .token.property {
+ color: #383a42;
+ }
+
+ .language-css .token.url {
+ text-decoration: none;
+ }
+
+ .language-css .token.function,
+ .language-css .token.url > .token.function {
+ color: #0184bc;
+ }
+
+ .language-css .token.url > .token.string.url {
+ color: #16a085;
+ }
+
+ .language-css .token.important,
+ .language-css .token.atrule .token.rule {
+ color: #a626a4;
+ }
+
+ /* JS overrides */
+ .language-javascript .token.operator {
+ color: #a626a4;
+ }
+
+ .language-javascript .token.template-string > .token.interpolation > .token.interpolation-punctuation.punctuation {
+ color: #ca1243;
+ }
+
+ /* JSON overrides */
+ .language-json .token.operator {
+ color: #383a42;
+ }
+
+ .language-json .token.null.keyword {
+ color: #b76b01;
+ }
+
+ /* MD overrides */
+ .language-markdown .token.url,
+ .language-markdown .token.url > .token.operator,
+ .language-markdown .token.url-reference.url > .token.string {
+ color: #383a42;
+ text-decoration: none;
+ }
+
+ .language-markdown .token.url > .token.content {
+ color: #4078f2;
+ text-decoration: none;
+ }
+
+ .language-markdown .token.url > .token.url,
+ .language-markdown .token.url-reference.url {
+ color: #0184bc;
+ text-decoration: underline;
+ }
+
+ .language-markdown .token.blockquote.punctuation,
+ .language-markdown .token.hr.punctuation {
+ color: #a0a1a7;
+ font-style: italic;
+ }
+
+ .language-markdown .token.code-snippet {
+ color: #16a085;
+ }
+
+ .language-markdown .token.bold .token.content {
+ color: #b76b01;
+ }
+
+ .language-markdown .token.italic .token.content {
+ color: #a626a4;
+ }
+
+ .language-markdown .token.strike .token.content,
+ .language-markdown .token.strike .token.punctuation,
+ .language-markdown .token.list.punctuation,
+ .language-markdown .token.title.important > .token.punctuation {
+ color: #e45649;
+ }
+
+ /* General */
+ .token.bold {
+ font-weight: bold;
+ }
+
+ /* .token.comment, */
+ .token.italic {
+ font-style: italic;
+ }
+
+ .token.entity {
+ cursor: help;
+ }
+
+ .token.namespace {
+ opacity: 0.8;
+ }
+
+ div.code-toolbar {
+ position: relative;
+ }
+
+ div.code-toolbar > .toolbar {
+ position: absolute;
+ top: .3em;
+ right: .2em;
+ transition: opacity 0.3s ease-in-out;
+ opacity: 0;
+ }
+
+ div.code-toolbar:hover > .toolbar {
+ opacity: 1;
+ }
+
+ /* Separate line b/c rules are thrown out if selector is invalid.
+ IE11 and old Edge versions don't support :focus-within. */
+ div.code-toolbar:focus-within > .toolbar {
+ opacity: 1;
+ }
+
+ div.code-toolbar > .toolbar .toolbar-item {
+ display: inline-block;
+ }
+
+ div.code-toolbar > .toolbar a {
+ cursor: pointer;
+ }
+
+ div.code-toolbar > .toolbar button {
+ background: none;
+ border: 0;
+ color: inherit;
+ font: inherit;
+ line-height: normal;
+ overflow: visible;
+ padding: 0;
+ -webkit-user-select: none; /* for button */
+ -moz-user-select: none;
+ -ms-user-select: none;
+ }
+
+ div.code-toolbar > .toolbar a,
+ div.code-toolbar > .toolbar button,
+ div.code-toolbar > .toolbar span {
+ color: #757F9A;
+ font-size: .8em;
+ padding: 0 .5em;
+ background: #D7DDE8;
+ box-shadow: 0 2px 0 0 rgba(58, 91, 134, 0.1);
+ border-radius: .5em;
+ }
+
+ div.code-toolbar > .toolbar a:hover,
+ div.code-toolbar > .toolbar a:focus,
+ div.code-toolbar > .toolbar button:hover,
+ div.code-toolbar > .toolbar button:focus,
+ div.code-toolbar > .toolbar span:hover,
+ div.code-toolbar > .toolbar span:focus {
+ color: #757F9A;
+ text-decoration: none;
+ }
+
+
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/icons/flash_page_menu.svg b/src/data/extra/themes/vx-idea/icons/flash_page_menu.svg
new file mode 100644
index 00000000..b52a4126
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/icons/flash_page_menu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/icons/read_editor.svg b/src/data/extra/themes/vx-idea/icons/read_editor.svg
new file mode 100644
index 00000000..790def81
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/icons/read_editor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/icons/recycle_bin.svg b/src/data/extra/themes/vx-idea/icons/recycle_bin.svg
new file mode 100644
index 00000000..f90263f6
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/icons/recycle_bin.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/icons/task_menu.svg b/src/data/extra/themes/vx-idea/icons/task_menu.svg
new file mode 100644
index 00000000..23bd1cfb
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/icons/task_menu.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/icons/type_mark_editor.svg b/src/data/extra/themes/vx-idea/icons/type_mark_editor.svg
new file mode 100644
index 00000000..33ff3761
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/icons/type_mark_editor.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/icons/united_entry.svg b/src/data/extra/themes/vx-idea/icons/united_entry.svg
new file mode 100644
index 00000000..802d1299
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/icons/united_entry.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/interface.qss b/src/data/extra/themes/vx-idea/interface.qss
new file mode 100644
index 00000000..cfee303b
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/interface.qss
@@ -0,0 +1,1240 @@
+/* Qt Style Sheets file
+ * Please refer to https://doc.qt.io/qt-5.12/stylesheet-reference.html
+ * for detailed inforamtion.
+ * **Notice** that selectors using base class and child class are considered to have the
+ * same specificity and the rule that appears last takes precedence.
+ * VNote specific syntax:
+ * - @widgets#toolbox#title#border: reference to a color defined in palette.ini;
+ * - $2px: 2 will be scaled by multiplying current display scaled factor.
+ */
+
+QWidget {
+ color: @widgets#qwidget#fg;
+ background-color: @widgets#qwidget#bg;
+ font-family: "冬青黑体", "YaHei Consolas Hybrid", "Microsoft YaHei", "微软雅黑", "Microsoft YaHei UI", "WenQuanYi Micro Hei", "文泉驿雅黑", "Dengxian", "等线体", "STXihei", "华文细黑", "Liberation Sans", "Droid Sans", "NSimSun", "新宋体", "SimSun", "宋体", "Helvetica", "sans-serif", "Tahoma", "Arial", "Verdana", "Geneva", "Georgia", "Times New Roman";
+}
+
+QWidget[DialogCentralWidget="true"] {
+ border: none;
+}
+
+QWidget[HitSettingWidget="true"] {
+ border: 2px solid @widgets#qwidget#info#border;
+}
+
+/* All widgets */
+*[State="info"] {
+ border: 1px solid @widgets#qwidget#info#border;
+}
+
+*[State="warning"] {
+ border: 1px solid @widgets#qwidget#warning#border;
+}
+
+*[State="error"] {
+ border: 1px solid @widgets#qwidget#error#border;
+}
+
+/* QAbstractScrollArea */
+QAbstractScrollArea {
+ border: 1px solid @widgets#qabstractscrollarea#border;
+}
+
+QAbstractScrollArea::corner {
+ background-color: @widgets#qabstractscrollarea#corner#bg;
+ border: none;
+}
+
+vnotex--SearchPanel QAbstractScrollArea {
+ border: none;
+}
+
+/* ToolBox */
+vnotex--ToolBox QWidget[ToolBoxTitle="true"] {
+ border-bottom: 2px solid @widgets#toolbox#title#border;
+ margin: 0px;
+ padding: 0px;
+}
+
+vnotex--ToolBox QToolButton[ToolBoxTitleButton="true"] {
+ padding: 4px 10px 4px 4px;
+ margin: 0px;
+ border: none;
+}
+
+vnotex--ToolBox QToolButton[ToolBoxTitleButton="true"]:checked {
+ font-weight: bold;
+ /* Reverse */
+ color: @widgets#toolbox#title#button#active#fg;
+ background-color: @widgets#toolbox#title#button#active#bg;
+}
+
+/* TitleBar */
+/* The height should be large enough regarding to the action buttons. */
+vnotex--TitleBar QLabel[TitleBarTitle="true"] {
+ padding: 5px 1px;
+ margin: 0px;
+}
+
+/* QDockWidget */
+QDockWidget[MainWindowSideBar="true"] QWidget {
+ background-color: @widgets#mainwindow#side_bar#widget#bg;
+}
+
+QDockWidget[MainWindowSideBar="true"] QToolButton:checked {
+ color: @widgets#qtoolbutton#checked#fg;
+ background-color: @widgets#qtoolbutton#checked#bg;
+}
+
+QDockWidget[MainWindowSideBar="true"] QToolButton:hover {
+ color: @widgets#qtoolbutton#hover#fg;
+ background-color: @widgets#qtoolbutton#hover#bg;
+}
+
+QDockWidget[MainWindowSideBar="true"] QToolButton:pressed {
+ color: @widgets#qtoolbutton#pressed#fg;
+ background-color: @widgets#qtoolbutton#pressed#bg;
+}
+
+QDockWidget {
+ color: @widgets#qdockwidget#fg;
+ background-color: @widgets#qdockwidget#bg;
+ titlebar-close-icon: url(close.svg);
+ titlebar-normal-icon: url(float.svg);
+}
+
+QDockWidget::Title {
+ background-color: @widgets#qdockwidget#title#bg;
+ text-align: center left;
+}
+
+QDockWidget::close-button, QDockWidget::float-button {
+ border: none;
+ icon-size: 16px;
+ width: 16px;
+}
+
+QDockWidget::close-button:hover, QDockWidget::float-button:hover {
+ background-color: @widgets#qdockwidget#title#button#hover#bg;
+}
+
+QDockWidget::close-button {
+ subcontrol-position: top right;
+ subcontrol-origin: margin;
+ position: absolute;
+ top: 0px; right: 0px; bottom: 0px;
+}
+
+QDockWidget::float-button {
+ subcontrol-position: top right;
+ subcontrol-origin: margin;
+ position: absolute;
+ top: 0px; right: 18px; bottom: 0px;
+}
+
+
+QToolTip
+{
+ border: none;
+ color: @widgets#qtooltip#fg;
+ background-color: @widgets#qtooltip#bg;
+}
+
+/* QMainWindow */
+QMainWindow {
+ color: @widgets#qmainwindow#fg;
+ background-color: @widgets#qmainwindow#bg;
+}
+
+QMainWindow::separator {
+ /* For vertical */
+ width: 1px;
+ /* For horizontal */
+ height: 1px;
+ background-color: @widgets#qmainwindow#separator#bg;
+}
+
+/* QToolBar */
+QToolBar {
+ border: none;
+ background-color: @widgets#qtoolbar#bg;
+}
+
+QToolBar::separator {
+ width: 1px;
+ height: 1px;
+ border: none;
+ background-color: @widgets#qtoolbar#separator#bg;
+}
+
+QToolBarExtension#qt_toolbar_ext_button {
+ background-color: @widgets#qtoolbar#extension#bg;
+ margin: 30px;
+}
+
+QToolBarExtension#qt_toolbar_ext_button:hover {
+ background-color: @widgets#qtoolbar#extension#hover#bg;
+ margin: 30px;
+}
+
+/* QToolButton */
+/* Only for MenuButtonPopup */
+QToolButton[popupMode="1"] {
+ /* Make way for the popup button */
+ padding-right: 16px; /* make way for the popup button */
+}
+
+/* Must put after popupMode related styles */
+QToolButton[ActionToolButton="true"] {
+ border: none;
+}
+
+QToolButton[ActionToolButton="true"]::menu-indicator {
+ image: none;
+}
+
+QToolButton[NoMenuIndicator="true"]::menu-indicator {
+ image: none;
+}
+
+/* QPushButton, QToolButton */
+QToolButton {
+ border: none;
+ color: @widgets#qtoolbutton#fg;
+ background-color: @widgets#qtoolbutton#bg;
+ margin: 1px 3px 1px 3px;
+ padding: 0px;
+}
+
+QToolButton:checked {
+ color: @widgets#qtoolbutton#checked#fg;
+ background-color: @widgets#qtoolbutton#checked#bg;
+}
+
+QToolButton:hover {
+ border:none;
+ color: @widgets#qtoolbutton#hover#fg;
+ background-color: @widgets#qtoolbutton#hover#bg;
+}
+
+QToolButton:pressed {
+ color: @widgets#qtoolbutton#pressed#fg;
+ background-color: @widgets#qtoolbutton#pressed#bg;
+}
+
+/* the subcontrols below are used only in the MenuButtonPopup mode */
+QToolButton::menu-button {
+ border: none;
+ width: 16px;
+}
+
+QToolButton::menu-arrow {
+ image: url(arrow_dropdown.svg);
+ width: 16px;
+ height: 16px;
+}
+
+QPushButton[DangerButton="true"]:hover, QToolButton[DangerButton="true"]:hover {
+ color: @widgets#qwidget#danger#fg;
+ background-color: @widgets#qwidget#danger#bg;
+ border: none;
+}
+
+/* QPushButton */
+QPushButton {
+ color: @widgets#qpushbutton#fg;
+ background-color: @widgets#qpushbutton#bg;
+ border: 1px solid @widgets#qpushbutton#border;
+ padding: 3px;
+ min-width: 80px;
+}
+
+QPushButton:default {
+ border: 1px solid @widgets#qpushbutton#default#border;
+}
+
+QPushButton:focus {
+ color: @widgets#qpushbutton#focus#fg;
+ background-color: @widgets#qpushbutton#focus#bg;
+}
+
+QPushButton:checked {
+ color: @widgets#qpushbutton#checked#fg;
+ background-color: @widgets#qpushbutton#checked#bg;
+}
+
+QPushButton:flat {
+ border: none;
+}
+
+QPushButton:hover {
+ color: @widgets#qpushbutton#hover#fg;
+ background-color: @widgets#qpushbutton#hover#bg;
+}
+
+QPushButton:pressed {
+ color: @widgets#qpushbutton#pressed#fg;
+ background-color: @widgets#qpushbutton#pressed#bg;
+}
+
+QPushButton:disabled {
+ color: @widgets#qpushbutton#disabled#fg;
+ background-color: @widgets#qpushbutton#disabled#bg;
+}
+
+QPushButton::menu-indicator {
+ image: url(arrow_dropdown.svg);
+ width: 16px;
+ height: 16px;
+}
+
+/* QMenu */
+QMenu {
+ color: @widgets#qmenu#fg;
+ background-color: @widgets#qmenu#bg;
+ border: 2px solid @widgets#qmenu#border;
+}
+
+QMenu::icon {
+ margin: 5px;
+}
+
+QMenu::item {
+ padding: 5px 30px 5px 30px;
+ border: 1px solid transparent;
+}
+
+QMenu::item:selected {
+ color: @widgets#qmenu#item#selected#fg;
+ background-color: @widgets#qmenu#item#selected#bg;
+}
+
+QMenu::item:disabled {
+ color: @widgets#qmenu#item#disabled#fg;
+}
+
+QMenu::icon:checked { /* appearance of a 'checked' icon */
+ border: 2px solid @widgets#qmenu#fg;
+}
+
+QMenu::separator {
+ height: 1px;
+ background-color: @widgets#qmenu#separator#bg;
+ margin-left: 10px;
+ margin-right: 5px;
+}
+
+QMenu::indicator {
+ width: 20px;
+ height: 20px;
+}
+
+QMenu::indicator:non-exclusive:unchecked {
+ image: none;
+}
+
+QMenu::indicator:non-exclusive:checked {
+ image: url(menu_checkbox.svg);
+}
+
+QMenu::indicator:exclusive:unchecked {
+ image: none;
+}
+
+QMenu::indicator:exclusive:checked {
+ image: url(menu_radiobutton.svg);
+}
+
+/* QWidgetAction item */
+vnotex--LabelWithButtonsWidget {
+ background-color: @widgets#qmenu#bg;
+}
+
+vnotex--LabelWithButtonsWidget:hover {
+ background-color: @widgets#qmenu#item#selected#bg;
+}
+
+vnotex--LabelWithButtonsWidget QLabel {
+ color: @widgets#qmenu#fg;
+}
+
+vnotex--LabelWithButtonsWidget QLabel:hover {
+ color: @widgets#qmenu#item#selected#fg;
+}
+/* End QMenu */
+
+QDialog {
+ color: @widgets#qdialog#fg;
+ background-color: @widgets#qdialog#bg
+}
+
+/* DrapDropAreaIndicator */
+vnotex--DragDropAreaIndicator {
+ border: 2px dashed @widgets#dragdropareaindicator#border;
+ margin: 2px;
+ max-height: 200px;
+}
+
+/* QComboBox */
+QComboBox {
+ padding: 3px;
+ color: @widgets#qcombobox#fg;
+ background-color: @widgets#qcombobox#bg;
+ border: 1px solid @widgets#qcombobox#border;
+}
+
+QComboBox:focus, QComboBox:on {
+ background-color: @widgets#qcombobox#focus#bg;
+ border: 2px solid @widgets#qcombobox#focus#border;
+}
+
+QComboBox:hover {
+ background-color: @widgets#qcombobox#hover#bg;
+ border: 2px solid @widgets#qcombobox#hover#border;
+}
+
+QComboBox:disabled {
+ color: @widgets#qcombobox#disabled#fg;
+}
+
+QComboBox::drop-down {
+ subcontrol-origin: padding;
+ subcontrol-position: top right;
+ width: 20px;
+ border: none;
+ background-color: transparent;
+}
+
+QComboBox::down-arrow {
+ image: url(arrow_dropdown.svg);
+ width: 20px;
+ height: 20px;
+}
+
+QComboBox::down-arrow:disabled {
+ image: url(arrow_dropdown_disabled.svg);
+ width: 20px;
+ height: 20px;
+}
+
+QComboBox QAbstractItemView {
+ padding: 2px;
+ border: 1px solid @widgets#qcombobox#view#border;
+ background-color: @widgets#qcombobox#view#bg;
+ selection-color: @widgets#qcombobox#view#selection#fg;
+ selection-background-color: @widgets#qcombobox#view#selection#bg;
+}
+
+QComboBox QAbstractItemView::item {
+ background-color: transparent;
+ padding: 3px;
+}
+
+QComboBox QAbstractItemView::item:hover {
+ color: @widgets#qcombobox#item#hover#fg;
+ background-color: @widgets#qcombobox#item#hover#bg;
+}
+
+/* NotebookSelector */
+vnotex--NotebookSelector {
+ icon-size: 20px;
+}
+
+/* QLabel */
+QLabel {
+ border: none;
+ color: @widgets#qlabel#fg;
+ background-color: transparent;
+}
+
+vnotex--DragDropAreaIndicator QLabel {
+ color: @widgets#dragdropareaindicator#fg;
+ font-size: 12pt;
+ font-weight: bold;
+}
+
+vnotex--MainWindow QLabel#MainWindowTipsLabel {
+ font-size: 20pt;
+ font-weight: bold;
+ color: @widgets#mainwindow#tips_label#fg;
+ background-color: @widgets#mainwindow#tips_label#bg;
+}
+
+/* QLineEdit */
+QLineEdit[EmbeddedLineEdit="true"] {
+ border: none;
+ padding: 0px;
+ margin: 0px;
+ color: @widgets#qlineedit#fg;
+ background-color: transparent;
+}
+
+QLineEdit[EmbeddedLineEdit="true"]:focus {
+ border: none;
+ background-color: @widgets#qlineedit#focus#bg;
+}
+
+QLineEdit[EmbeddedLineEdit="true"]:hover {
+ border: none;
+ background-color: @widgets#qlineedit#hover#bg;
+}
+
+QLineEdit {
+ border: 1px solid @widgets#qlineedit#border;
+ padding: 3px;
+ color: @widgets#qlineedit#fg;
+ background-color: @widgets#qlineedit#bg;
+ selection-color: @widgets#qlineedit#selection#fg;
+ selection-background-color: @widgets#qlineedit#selection#bg;
+}
+
+QLineEdit:focus {
+ border: 2px solid @widgets#qlineedit#focus#border;
+ background-color: @widgets#qlineedit#focus#bg;
+}
+
+QLineEdit:hover {
+ border: 2px solid @widgets#qlineedit#hover#border;
+ background-color: @widgets#qlineedit#hover#bg;
+}
+
+QLineEdit:disabled {
+ color: @widgets#qlineedit#disabled#fg;
+}
+
+/* QPlainTextEdit and QTextEdit */
+QPlainTextEdit, QTextEdit {
+ color: @widgets#qlineedit#fg;
+ background-color: @widgets#qlineedit#bg;
+ selection-color: @widgets#qlineedit#selection#fg;
+ selection-background-color: @widgets#qlineedit#selection#bg;
+}
+
+/* QTabWidget */
+QTabWidget {
+ border: none;
+}
+
+QTabWidget::pane {
+ border: none;
+}
+
+QTabWidget::tab-bar {
+ alignment: left;
+}
+
+/* QTabBar */
+QTabBar[MainWindowSideBar="true"] {
+ background-color: @widgets#mainwindow#side_bar#bg;
+}
+
+QTabBar[MainWindowSideBar="true"]::tab {
+ color: @widgets#mainwindow#side_bar#fg;
+ background-color: @widgets#mainwindow#side_bar#bg;
+ border: none;
+}
+
+QMainWindow > QTabBar::tab:right {
+ border-right: 3px solid transparent;
+ border-bottom: none;
+ margin: 0px;
+ padding: 8px 8px -8px 8px;
+}
+
+QMainWindow > QTabBar::tab:left {
+ border-left: 3px solid transparent;
+ border-bottom: none;
+ margin: 0px;
+ padding: -8px 8px 8px 8px;
+}
+
+/* Only the left one is the mainwindow side bar */
+QMainWindow > QTabBar::tab:left:hover {
+ color: @widgets#mainwindow#side_bar#hover#fg;
+ background-color: @widgets#mainwindow#side_bar#hover#bg;
+}
+
+QMainWindow > QTabBar::tab:left:selected {
+ color: @widgets#mainwindow#side_bar#selected#fg;
+ background-color: @widgets#mainwindow#side_bar#selected#bg;
+}
+
+QTabBar {
+ border: none;
+}
+
+QTabBar::tab {
+ color: @widgets#qtabbar#tab#fg;
+ background-color: @widgets#qtabbar#tab#bg;
+ border: none;
+}
+
+QTabBar::tab:top, QTabBar::tab:bottom {
+ border-top: 2px solid transparent;
+ border-right: 1px solid @widgets#qtabbar#tab#border;
+ /* MUST leave right and left padding 0px. */
+ padding: 2px 0px 2px 0px;
+ height: 20px;
+}
+
+QTabBar::tab:right {
+ border-right: 3px solid transparent;
+ border-bottom: 1px solid @widgets#qtabbar#tab#border;
+ padding: 5px 2px 5px 2px;
+ min-width: 20px;
+}
+
+QTabBar::tab:left {
+ border-left: 3px solid transparent;
+ border-bottom: 1px solid @widgets#qtabbar#tab#border;
+ padding: 5px 2px 5px 2px;
+ min-width: 20px;
+}
+
+
+/* Tabified QDockWidget */
+QMainWindow > QTabBar::tab:right {
+ border-right: 3px solid transparent;
+ border-bottom: none;
+ margin: 0px;
+ padding: 6px 2px -10px 2px;
+}
+
+/* Tabified QDockWidget */
+QMainWindow > QTabBar::tab:left {
+ border-left: 3px solid transparent;
+ border-bottom: none;
+ margin: 0px;
+ padding: -10px 2px 6px 2px;
+}
+
+QTabBar::tab:hover {
+ color: @widgets#qtabbar#tab#hover#fg;
+ background-color: @widgets#qtabbar#tab#hover#bg;
+}
+
+QTabBar::tab:selected {
+ color: @widgets#qtabbar#tab#selected#fg;
+ background-color: @widgets#qtabbar#tab#selected#bg;
+}
+
+QTabBar::tab:top:selected, QTabBar::tab:bottom:selected {
+ border-top: 2px solid @widgets#qtabbar#tab#selected#border;
+}
+
+QTabBar::tab:right:selected {
+ border-right: 3px solid @widgets#qtabbar#tab#selected#border;
+}
+
+QTabBar::tab:left:selected {
+ border-left: 3px solid @widgets#qtabbar#tab#selected#border;
+}
+
+QTabBar::close-button {
+ image: url(close_grey.svg);
+}
+
+QTabBar::close-button:focus {
+ image: url(close.svg);
+}
+
+QTabBar::close-button:hover {
+ image: url(close.svg);
+}
+
+QTabBar::scroller {
+ width: $20px;
+}
+
+QTabBar QToolButton {
+ border: none;
+}
+
+QTabBar QToolButton::right-arrow:enabled {
+ image: url(right.svg);
+}
+
+QTabBar QToolButton::left-arrow:enabled {
+ image: url(left.svg);
+}
+
+QTabBar QToolButton::right-arrow:disabled {
+ image: url(right_disabled.svg);
+}
+
+QTabBar QToolButton::left-arrow:disabled {
+ image: url(left_disabled.svg);
+}
+
+/* QTreeView */
+QTreeView {
+ color: @widgets#qtreeview#fg;
+ background-color: @widgets#qtreeview#bg;
+ show-decoration-selected: 0;
+ border: none;
+ selection-background-color: transparent;
+ outline: none;
+}
+
+QTreeView::item {
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+QTreeView::item:hover {
+ color: @widgets#qtreeview#item#hover#fg;
+ background-color: @widgets#qtreeview#item#hover#bg;
+}
+
+QTreeView::item:selected {
+ color: @widgets#qtreeview#item#selected#fg;
+ background-color: @widgets#qtreeview#item#selected#bg;
+}
+
+QTreeView::item:selected:active {
+ color: @widgets#qtreeview#item#selected#active#fg;
+ background-color: @widgets#qtreeview#item#selected#active#bg;
+}
+
+QTreeView::item:selected:!active {
+ color: @widgets#qtreeview#item#selected#inactive#fg;
+ background-color: @widgets#qtreeview#item#selected#inactive#bg;
+}
+
+QTreeView::branch:has-siblings:!adjoins-item {
+ border-image: none;
+}
+
+QTreeView::branch:has-siblings:adjoins-item {
+ border-image: none;
+}
+
+QTreeView::branch:!has-children:!has-siblings:adjoins-item {
+ border-image: none;
+}
+
+QTreeView::branch:has-children:!has-siblings:closed,
+QTreeView::branch:closed:has-children:has-siblings {
+ border-image: none;
+ image: url(branch_closed.svg);
+}
+
+QTreeView::branch:open:has-children:!has-siblings,
+QTreeView::branch:open:has-children:has-siblings {
+ border-image: none;
+ image: url(branch_open.svg);
+}
+
+/* QListView */
+QListView {
+ color: @widgets#qlistview#fg;
+ background-color: @widgets#qlistview#bg;
+ show-decoration-selected: 0;
+ border: none;
+ selection-background-color: transparent;
+ outline: none;
+}
+
+QListView::item {
+ padding-top: 5px;
+ padding-bottom: 5px;
+}
+
+QListView::item:hover {
+ color: @widgets#qlistview#item#hover#fg;
+ background-color: @widgets#qlistview#item#hover#bg;
+}
+
+QListView::item:selected {
+ color: @widgets#qlistview#item#selected#fg;
+ background-color: @widgets#qlistview#item#selected#bg;
+}
+
+QListView::item:selected:active {
+ color: @widgets#qlistview#item#selected#active#fg;
+ background-color: @widgets#qlistview#item#selected#active#bg;
+}
+
+QListView::item:selected:!active {
+ color: @widgets#qlistview#item#selected#inactive#fg;
+ background-color: @widgets#qlistview#item#selected#inactive#bg;
+}
+
+QListView::item:disabled {
+ background-color: transparent;
+}
+
+/* QSplitter */
+QSplitter {
+ border: none;
+}
+
+QSplitter::handle {
+ background-color: @widgets#qsplitter#handle#bg;
+}
+
+QSplitter::handle:pressed {
+ background-color: @widgets#qsplitter#handle#pressed#bg;
+}
+
+QSplitter::handle:vertical {
+ height: 2px;
+}
+
+QSplitter::handle:horizontal {
+ width: 2px;
+}
+
+/* QStatusBar */
+QStatusBar {
+ color: @widgets#qstatusbar#fg;
+ background-color: @widgets#qstatusbar#bg;
+ border: none;
+}
+
+QStatusBar::item {
+ border: none;
+}
+
+/* QScrollBar */
+QScrollBar::add-page, QScrollBar::sub-page {
+ background-color: @widgets#qscrollbar#addpage#bg;
+}
+
+QScrollBar:vertical {
+ background-color: @widgets#qscrollbar#bg;
+ width: 14px;
+ margin: 14px 0px 14px 0px;
+ padding: 0px 2px 0px 2px;
+ border: none;
+}
+
+QScrollBar::handle:vertical {
+ background-color: @widgets#qscrollbar#handle#bg;
+ min-height: 14px;
+ border-radius:4px;
+}
+
+QScrollBar::handle:vertical:hover {
+ background-color: @widgets#qscrollbar#handle#hover#bg;
+ border-radius:4px;
+}
+
+QScrollBar::handle:vertical:pressed {
+ background-color: @widgets#qscrollbar#handle#pressed#bg;
+}
+
+QScrollBar::add-line:vertical {
+ border: none;
+ background-color: @widgets#qscrollbar#bg;
+ width: 14px;
+ height: 14px;
+ subcontrol-position: bottom;
+ subcontrol-origin: margin;
+}
+
+QScrollBar::add-line:vertical:hover {
+ background-color: @widgets#qscrollbar#handle#hover#bg;
+}
+
+QScrollBar::add-line:vertical:pressed {
+ background-color: @widgets#qscrollbar#handle#pressed#bg;
+}
+
+QScrollBar::sub-line:vertical {
+ border: none;
+ background-color: @widgets#qscrollbar#bg;
+ width: 14px;
+ height: 14px;
+ subcontrol-position: top;
+ subcontrol-origin: margin;
+}
+
+QScrollBar::sub-line:vertical:hover {
+ background-color: @widgets#qscrollbar#handle#hover#bg;
+}
+
+QScrollBar::sub-line:vertical:pressed {
+ background-color: @widgets#qscrollbar#handle#pressed#bg;
+}
+
+QScrollBar::down-arrow:vertical {
+ image: url(down.svg);
+ width: 14px;
+ height: 14px;
+}
+
+QScrollBar::up-arrow:vertical {
+ image: url(up.svg);
+ width: 14px;
+ height: 14px;
+}
+
+QScrollBar:horizontal {
+ background-color: @widgets#qscrollbar#bg;
+ height: 14px;
+ margin: 0px 14px 0px 14px;
+ padding: 2px 0px 2px 0px;
+ border: none;
+}
+
+QScrollBar::handle:horizontal {
+ background-color: @widgets#qscrollbar#handle#bg;
+ min-height: 14px;
+ border-radius:4px;
+}
+
+QScrollBar::handle:horizontal:hover {
+ background-color: @widgets#qscrollbar#handle#hover#bg;
+ border-radius:4px;
+}
+
+QScrollBar::handle:horizontal:pressed {
+ background-color: @widgets#qscrollbar#handle#pressed#bg;
+}
+
+QScrollBar::add-line:horizontal {
+ border: none;
+ background-color: @widgets#qscrollbar#bg;
+ width: 14px;
+ height: 14px;
+ subcontrol-position: right;
+ subcontrol-origin: margin;
+}
+
+QScrollBar::add-line:horizontal:hover {
+ background-color: @widgets#qscrollbar#handle#hover#bg;
+}
+
+QScrollBar::add-line:horizontal:pressed {
+ background-color: @widgets#qscrollbar#handle#pressed#bg;
+}
+
+QScrollBar::sub-line:horizontal {
+ border: none;
+ background-color: @widgets#qscrollbar#bg;
+ width: 14px;
+ height: 14px;
+ subcontrol-position: left;
+ subcontrol-origin: margin;
+}
+
+QScrollBar::sub-line:horizontal:hover {
+ background-color: @widgets#qscrollbar#handle#hover#bg;
+}
+
+QScrollBar::sub-line:horizontal:pressed {
+ background-color: @widgets#qscrollbar#handle#pressed#bg;
+}
+
+QScrollBar::right-arrow:horizontal {
+ image: url(right.svg);
+ width: 14px;
+ height: 14px;
+}
+
+QScrollBar::left-arrow:horizontal {
+ image: url(left.svg);
+ width: 14px;
+ height: 14px;
+}
+
+/* QCheckBox */
+QCheckBox {
+ spacing: 5px;
+}
+
+QCheckBox:disabled {
+ color: @widgets#qcheckbox#disabled#fg;
+}
+
+QCheckBox::indicator:unchecked {
+ image: url(checkbox_unchecked.svg);
+}
+
+QCheckBox::indicator:unchecked:disabled {
+ image: url(checkbox_unchecked_disabled.svg);
+}
+
+QCheckBox::indicator:checked {
+ image: url(checkbox_checked.svg);
+}
+
+QCheckBox::indicator:checked:disabled {
+ image: url(checkbox_checked_disabled.svg);
+}
+
+QCheckBox::indicator {
+ width: 20px;
+ height: 20px;
+}
+
+QCheckBox::indicator:focus {
+ background-color: @widgets#qcheckbox#indicator#focus#bg;
+}
+
+QCheckBox::indicator:hover {
+ background-color: @widgets#qcheckbox#indicator#hover#bg;
+}
+
+QCheckBox::indicator:pressed {
+ background-color: @widgets#qcheckbox#indicator#pressed#bg;
+}
+
+/* QRadioButton */
+QRadioButton {
+ spacing: 5px;
+}
+
+QRadioButton:disabled {
+ color: @widgets#qradiobutton#disabled#fg;
+}
+
+QRadioButton::indicator:unchecked {
+ image: url(radiobutton_unchecked.svg);
+}
+
+QRadioButton::indicator:unchecked:disabled {
+ image: url(radiobutton_unchecked_disabled.svg);
+}
+
+QRadioButton::indicator:checked {
+ image: url(radiobutton_checked.svg);
+}
+
+QRadioButton::indicator:checked:disabled {
+ image: url(radiobutton_checked_disabled.svg);
+}
+
+QRadioButton::indicator {
+ width: 20px;
+ height: 20px;
+}
+
+QRadioButton::indicator:focus {
+ background-color: @widgets#qradiobutton#indicator#focus#bg;
+}
+
+QRadioButton::indicator:hover {
+ background-color: @widgets#qradiobutton#indicator#hover#bg;
+}
+
+QRadioButton::indicator:pressed {
+ background-color: @widgets#qradiobutton#indicator#pressed#bg;
+}
+
+QAbstractSpinBox {
+ border: 1px solid @widgets#qspinbox#border;
+ color: @widgets#qspinbox#fg;
+ background-color: @widgets#qspinbox#bg;
+ padding-right: 25px;
+ min-height: 25px;
+ selection-color: @widgets#qspinbox#selection#fg;
+ selection-background-color: @widgets#qspinbox#selection#bg;
+}
+
+QAbstractSpinBox:disabled {
+ color: @widgets#qspinbox#disabled#fg;
+ background-color: @widgets#qspinbox#disabled#bg;
+}
+
+QAbstractSpinBox:focus {
+ border: 2px solid @widgets#qspinbox#focus#border;
+ background-color: @widgets#qspinbox#focus#bg;
+}
+
+QAbstractSpinBox:hover {
+ border: 2px solid @widgets#qspinbox#hover#border;
+ background-color: @widgets#qspinbox#hover#bg;
+}
+
+QAbstractSpinBox::up-button {
+ subcontrol-origin: border;
+ /* Position at the top right corner */
+ subcontrol-position: top right;
+ width: 25px;
+ border: none;
+ background-color: transparent;
+}
+
+QAbstractSpinBox::up-button:hover {
+ background-color: @widgets#qspinbox#button#hover#bg;
+}
+
+QAbstractSpinBox::up-button:pressed {
+ background-color: @widgets#qspinbox#button#pressed#bg;
+}
+
+QAbstractSpinBox::up-arrow {
+ image: url(up.svg);
+ width: 12px;
+ height: 12px;
+}
+
+QAbstractSpinBox::up-arrow:disabled, QAbstractSpinBox::up-arrow:off {
+ image: url(up_disabled.svg);
+}
+
+QAbstractSpinBox::down-button {
+ subcontrol-origin: border;
+ /* Position at the top right corner */
+ subcontrol-position: bottom right;
+ width: 25px;
+ border: none;
+ background-color: transparent;
+}
+
+QAbstractSpinBox::down-button:hover {
+ background-color: @widgets#qspinbox#button#hover#bg;
+}
+
+QAbstractSpinBox::down-button:pressed {
+ background-color: @widgets#qspinbox#button#pressed#bg;
+}
+
+QAbstractSpinBox::down-arrow {
+ image: url(down.svg);
+ width: 12px;
+ height: 12px;
+}
+
+QAbstractSpinBox::down-arrow:disabled, QAbstractSpinBox::down-arrow:off {
+ image: url(down_disabled.svg);
+}
+
+/* QHeaderView */
+QHeaderView::section {
+ color: @widgets#qheaderview#section#fg;
+ background-color: @widgets#qheaderview#section#bg;
+ padding-left: 4px;
+ border: none;
+ border-left: 1px solid @widgets#qheaderview#section#border;
+ border-bottom: 1px solid @widgets#qheaderview#section#border;
+}
+
+QHeaderView::section:checked
+{
+ color: @widgets#qheaderview#section#checked#fg;
+ background-color: @widgets#qheaderview#section#checked#bg;
+}
+
+/* style the sort indicator */
+QHeaderView::down-arrow {
+ image: url(down.svg);
+ width: 12px;
+ height: 12px;
+}
+
+QHeaderView::up-arrow {
+ image: url(up.svg);
+ width: 12px;
+ height: 12px;
+}
+
+/* QProgressBar */
+QProgressBar {
+ background-color: @widgets#qprogressbar#bg;
+ border: 1px solid @widgets#qprogressbar#border;
+ text-align: center;
+}
+
+QProgressBar::chunk {
+ background-color: @widgets#qprogressbar#chunk#bg;
+ width: 20px;
+}
+
+/* QGroupBox */
+QGroupBox {
+ border: 2px solid @widgets#qgroupbox#border;
+ border-radius: 5px;
+ margin-top: 2ex;
+}
+
+QGroupBox::title {
+ color: @widgets#qgroupbox#title#fg;
+ subcontrol-origin: margin;
+ subcontrol-position: top left;
+ position: absolute;
+ padding: 0 3px;
+ top: 0px;
+ left: 10px;
+ bottom: 0px;
+}
+
+/* QSlider */
+QSlider::groove:horizontal {
+ border: 1px solid @widgets#qslider#groove#border;
+ height: 8px;
+ background-color: @widgets#qslider#groove#bg;
+ margin: 2px 0;
+}
+
+QSlider::handle:horizontal {
+ border: 1px solid @widgets#qslider#handle#border;
+ background-color: @widgets#qslider#handle#bg;
+ width: 18px;
+ margin: -2px 0;
+}
+
+QSlider::add-page:horizontal {
+ background-color: transparent;
+}
+
+QSlider::sub-page:horizontal {
+ border: 1px solid @widgets#qslider#subpage#border;
+ background-color: @widgets#qslider#subpage#bg;
+ margin: 2px 0;
+}
+
+QSlider::groove:vertical {
+ border: 1px solid @widgets#qslider#groove#border;
+ width: 8px;
+ background-color: @widgets#qslider#groove#bg;
+ margin: 0 2px;
+}
+
+QSlider::handle:vertical {
+ border: 1px solid @widgets#qslider#handle#border;
+ background-color: @widgets#qslider#handle#bg;
+ height: 18px;
+ margin: 0 -2px;
+}
+
+QSlider::add-page:vertical {
+ background-color: transparent;
+}
+
+QSlider::sub-page:vertical {
+ border: 1px solid @widgets#qslider#subpage#border;
+ background-color: @widgets#qslider#subpage#bg;
+ margin: 0 2px;
+}
+
+QSizeGrip {
+ image: url(sizegrip.svg);
+ width: 16px;
+ height: 16px;
+}
+
+/* ViewWindow */
+vnotex--ViewWindow QToolBar[ViewWindowToolBar="true"] {
+ background-color: @widgets#viewwindow#toolbar#bg;
+}
+
+/* ViewSplit */
+vnotex--ViewSplit QTabBar::tab:selected {
+ color: @widgets#viewsplit#tabbar#tab#selected#fg;
+ background-color: @widgets#viewsplit#tabbar#tab#selected#bg;
+}
+
+vnotex--ViewSplit QTabBar[ViewSplitFlash="true"]::tab:selected {
+ background-color: @widgets#viewsplit#flash#bg;
+}
+
+vte--VTextEdit {
+ border: none;
+}
+
+vnotex--EntryPopup {
+ border: 1px solid @widgets#unitedentry#popup#border;
+}
diff --git a/src/data/extra/themes/vx-idea/left.svg b/src/data/extra/themes/vx-idea/left.svg
new file mode 100644
index 00000000..860a778b
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/left.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/left_disabled.svg b/src/data/extra/themes/vx-idea/left_disabled.svg
new file mode 100644
index 00000000..e06ac73f
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/left_disabled.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/menu_checkbox.svg b/src/data/extra/themes/vx-idea/menu_checkbox.svg
new file mode 100644
index 00000000..94658f10
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/menu_checkbox.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/menu_radiobutton.svg b/src/data/extra/themes/vx-idea/menu_radiobutton.svg
new file mode 100644
index 00000000..afa3fcc8
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/menu_radiobutton.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/palette.json b/src/data/extra/themes/vx-idea/palette.json
new file mode 100644
index 00000000..60e0f786
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/palette.json
@@ -0,0 +1,685 @@
+{
+ "metadata" : {
+ "revision" : 1,
+ "//comment" : "If there is a file named 'editor-highlight.theme' under theme folder, this value will be ignored.",
+ "//comment" : "Otherwise, this value specify the theme name to use for syntax highlighting.",
+ "editor-highlight-theme" : "Default",
+ "//comment" : "If there is a file named 'markdown-editor-highlight.theme' under theme folder, this value will be ignored.",
+ "//comment" : "Otherwise, this value specify the theme name to use for syntax highlighting.",
+ "//comment" : "If empty, 'editor-highlight-theme' will be used.",
+ "markdown-editor-highlight-theme" : "Markdown Default",
+ "display_name" : "vx-idea",
+ "//comment" : "Display name for different locales",
+ "display_name_zh_CN" : "vx-idea"
+ },
+ "palette" : {
+ "bg3_0" : "#b4c0cf",
+ "bg3_1" : "#ced6e0",
+ "bg3_2" : "#b4c0cf",
+ "bg3_3" : "#cfd8e2",
+ "bg3_4" : "#dae3ea",
+ "bg3_41" : "#cfd8e2",
+ "bg3_5" : "#f1f2f6",
+ "bg3_6" : "#fafafa",
+ "fg3_5" : "#34495e",
+ "fg3_6" : "#646464",
+ "fg3_7" : "#7a7a7a",
+ "fg3_8" : "#9e9e9e",
+ "fg3_9" : "#b0b0b0",
+ "fg3_10" : "#ced4da",
+ "bg2_4" : "#007b6e",
+ "//comment": "menu highliht",
+ "bg2_5" : "#2980b9",
+ "bg2_6" : "#199488",
+ "bg2_7" : "#e5f3f1",
+ "fg10" : "#b71c1c",
+ "fg11" : "#ab5683",
+ "fg12" : "#283593",
+ "fg13" : "#b42b1f",
+ "fg15_3" : "#b0b0b0",
+ "fg15_4" : "#7a7a7a",
+ "fg15_5" : "#34495e",
+ "bg11" : "#79889e",
+ "layer1" : "#f1f2f6",
+ "layer2" : "#dae3ea",
+ "layer3" : "#c3d1e0",
+ "layer4" : "#ffffff"
+ },
+ "base" : {
+ "normal" : {
+ "fg" : "@palette#fg3_5",
+ "bg" : "@palette#bg3_5",
+ "border" : "@palette#fg3_10"
+ },
+ "master" : {
+ "fg" : "@palette#bg3_6",
+ "bg" : "@palette#bg2_5",
+ "alt" : "@palette#bg2_6"
+ },
+ "header" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@base#normal#bg"
+ },
+ "footer" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@base#normal#bg"
+ },
+ "title" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@palette#bg3_41"
+ },
+ "content" : {
+ "fg" : "@palette#fg3_5",
+ "bg" : "@palette#bg3_6",
+ "border" : "@base#normal#border",
+ "disabled" : {
+ "fg" : "@base#disabled#fg",
+ "bg" : "@base#content#bg"
+ },
+ "pressed" : {
+ "fg" : "@base#pressed#fg",
+ "bg" : "@base#pressed#bg"
+ },
+ "focus" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#focus#bg",
+ "border" : "@base#master#bg"
+ },
+ "hover" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#hover#bg",
+ "border" : "@base#master#bg"
+ },
+ "selection" : {
+ "fg" : "@palette#bg3_6",
+ "bg" : "@palette#bg11"
+ },
+ "selected" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#selected#bg",
+ "active" : {
+ "fg" : "@base#content#selected#fg",
+ "bg" : "@base#content#selected#bg"
+ },
+ "inactive" : {
+ "fg" : "@base#content#selected#fg",
+ "bg" : "@base#content#hover#bg"
+ }
+ }
+ },
+ "edit" : {
+ "focus" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#content#bg",
+ "border" : "@base#master#bg"
+ },
+ "hover" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@palette#bg2_7",
+ "border" : "@base#master#bg"
+ }
+ },
+ "error" : {
+ "fg" : "@palette#fg10"
+ },
+ "warning" : {
+ "fg" : "@palette#fg11"
+ },
+ "info" : {
+ "fg" : "@palette#fg12"
+ },
+ "danger" : {
+ "fg": "@base#normal#bg",
+ "bg": "@palette#fg13"
+ },
+ "disabled" : {
+ "fg" : "@palette#fg3_8",
+ "bg" : "@base#normal#bg"
+ },
+ "pressed" : {
+ "fg" : "@palette#fg3_5",
+ "bg" : "@palette#bg3_1"
+ },
+ "focus" : {
+ "fg" : "@palette#fg3_5",
+ "bg" : "@palette#bg3_2"
+ },
+ "hover" : {
+ "fg" : "@palette#fg3_5",
+ "bg" : "@palette#bg3_4"
+ },
+ "selected" : {
+ "fg" : "@palette#fg3_5",
+ "bg" : "@palette#bg3_3"
+ },
+ "icon" : {
+ "fg" : "@palette#fg15_5",
+ "inactive" : {
+ "fg" : "@palette#fg15_4"
+ },
+ "disabled" : {
+ "fg" : "@palette#fg15_3"
+ },
+ "warning" : {
+ "fg" : "@base#warning#fg"
+ },
+ "danger" : {
+ "fg": "@base#danger#fg"
+ },
+ "selected" : {
+ "fg" : "@base#master#bg"
+ }
+ }
+ },
+ "widgets" : {
+ "separator" : {
+ "bg" : "@base#normal#border"
+ },
+ "qwidget" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@base#normal#bg",
+ "info" : {
+ "border" : "@base#info#fg"
+ },
+ "warning" : {
+ "border" : "@base#warning#fg"
+ },
+ "error" : {
+ "border" : "@base#error#fg"
+ },
+ "danger" : {
+ "fg" : "@base#danger#fg",
+ "bg" : "@base#danger#bg"
+ }
+ },
+ "toolbox" : {
+ "title" : {
+ "border" : "@widgets#toolbox#title#button#active#bg",
+ "button": {
+ "fg" : "@base#normal#fg",
+ "active" : {
+ "fg" : "@base#master#fg",
+ "bg" : "@base#master#bg"
+ }
+ }
+ }
+ },
+ "titlebar" : {
+ "button" : {
+ "fg" : "@base#icon#fg"
+ },
+ "menu_icon" : {
+ "fg" : "@base#icon#fg",
+ "disabled" : {
+ "fg" : "@base#icon#disabled#fg"
+ }
+ }
+ },
+ "toolbar" : {
+ "icon" : {
+ "fg" : "@base#icon#fg",
+ "disabled" : {
+ "fg" : "@base#icon#disabled#fg"
+ },
+ "danger" : {
+ "fg" : "@base#icon#danger#fg"
+ }
+ }
+ },
+ "notebookexplorer" : {
+ "node_icon" : {
+ "fg" : "@base#icon#fg",
+ "invalid" : {
+ "fg" : "@base#icon#warning#fg"
+ }
+ },
+ "external_node_icon" : {
+ "fg" : "@base#icon#inactive#fg"
+ }
+ },
+ "locationlist" : {
+ "node_icon" : {
+ "fg" : "@base#icon#fg"
+ }
+ },
+ "viewsplit" : {
+ "action_button" : {
+ "fg" : "@base#icon#inactive#fg",
+ "active" : {
+ "fg" : "@base#icon#fg"
+ }
+ },
+ "tabbar" : {
+ "tab" : {
+ "selected" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#content#bg"
+ }
+ }
+ },
+ "flash" : {
+ "bg" : "@base#master#alt"
+ }
+ },
+ "qmainwindow" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@base#normal#bg",
+ "separator" : {
+ "bg" : "@widgets#separator#bg"
+ }
+ },
+ "dragdropareaindicator" : {
+ "fg" : "@base#normal#fg",
+ "border" : "@widgets#dragdropareaindicator#fg"
+ },
+ "navigationlabel" : {
+ "fg" : "@widgets#toolbox#title#button#active#fg",
+ "bg" : "@widgets#toolbox#title#button#active#bg"
+ },
+ "qmenu" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@base#normal#bg",
+ "border" : "@base#normal#border",
+ "item" : {
+ "selected" : {
+ "fg" : "@base#selected#fg",
+ "bg" : "@base#selected#bg"
+ },
+ "disabled" : {
+ "fg" : "@base#disabled#fg"
+ }
+ },
+ "separator" : {
+ "bg" : "@widgets#separator#bg"
+ }
+ },
+ "qtooltip" : {
+ "fg" : "@base#master#fg",
+ "bg" : "@base#master#bg"
+ },
+ "qtoolbar" : {
+ "bg" : "@base#header#bg",
+ "separator" : {
+ "bg" : "@widgets#separator#bg"
+ },
+ "extension" : {
+ "bg" : "@base#normal#border",
+ "hover" : {
+ "bg" : "@base#hover#bg"
+ }
+ }
+ },
+ "qtoolbutton" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "transparent",
+ "checked" : {
+ "fg" : "@base#selected#fg",
+ "bg" : "@base#selected#bg"
+ },
+ "hover" : {
+ "fg" : "@base#hover#fg",
+ "bg" : "@base#hover#bg"
+ },
+ "pressed" : {
+ "fg" : "@base#pressed#fg",
+ "bg" : "@base#pressed#bg"
+ }
+ },
+ "qdockwidget" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@base#normal#bg",
+ "title" : {
+ "bg" : "@base#title#bg",
+ "button" : {
+ "hover" : {
+ "bg" : "@base#hover#bg"
+ }
+ }
+ }
+ },
+ "qpushbutton" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "transparent",
+ "border" : "@base#normal#border",
+ "default" : {
+ "border" : "@base#master#bg"
+ },
+ "focus" : {
+ "fg" : "@base#focus#fg",
+ "bg" : "@base#focus#bg"
+ },
+ "checked" : {
+ "fg" : "@base#selected#fg",
+ "bg" : "@base#selected#bg"
+ },
+ "hover" : {
+ "fg" : "@base#hover#fg",
+ "bg" : "@base#hover#bg"
+ },
+ "pressed" : {
+ "fg" : "@base#pressed#fg",
+ "bg" : "@base#pressed#bg"
+ },
+ "disabled" : {
+ "fg" : "@base#disabled#fg",
+ "bg" : "@widgets#qpushbutton#bg"
+ }
+ },
+ "qdialog" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@base#normal#bg"
+ },
+ "qcombobox" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#content#bg",
+ "border" : "@base#content#border",
+ "focus" : {
+ "bg" : "@base#content#focus#bg",
+ "border" : "@base#content#focus#border"
+ },
+ "hover" : {
+ "bg" : "@base#content#hover#bg",
+ "border" : "@base#content#hover#border"
+ },
+ "disabled" : {
+ "fg" : "@base#content#disabled#fg"
+ },
+ "view" : {
+ "border" : "@base#content#border",
+ "bg" : "@widgets#qcombobox#bg",
+ "selection" : {
+ "fg" : "@base#content#selection#fg",
+ "bg" : "@base#content#selection#bg"
+ }
+ },
+ "item" : {
+ "hover" : {
+ "fg" : "@base#content#hover#fg",
+ "bg" : "@base#content#hover#bg"
+ }
+ }
+ },
+ "qlabel" : {
+ "fg" : "@base#normal#fg"
+ },
+ "qlineedit" : {
+ "border" : "@base#content#border",
+ "fg" : "@base#content#fg",
+ "bg" : "@base#content#bg",
+ "selection" : {
+ "fg" : "@base#content#selection#fg",
+ "bg" : "@base#content#selection#bg"
+ },
+ "focus" : {
+ "bg" : "@base#edit#focus#bg",
+ "border" : "@base#edit#focus#border"
+ },
+ "hover" : {
+ "bg" : "@base#edit#hover#bg",
+ "border" : "@base#edit#hover#border"
+ },
+ "disabled" : {
+ "fg" : "@base#content#disabled#fg"
+ }
+ },
+ "qtabbar" : {
+ "tab" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@base#normal#bg",
+ "border" : "@base#normal#border",
+ "hover" : {
+ "fg" : "@base#hover#fg",
+ "bg" : "@base#hover#bg"
+ },
+ "selected" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#content#bg",
+ "border" : "@base#master#bg"
+ }
+ }
+ },
+ "qtreeview" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#content#bg",
+ "item" : {
+ "hover" : {
+ "fg" : "@base#content#hover#fg",
+ "bg" : "@base#content#hover#bg"
+ },
+ "selected" : {
+ "fg" : "@base#content#selected#fg",
+ "bg" : "@base#content#selected#bg",
+ "active" : {
+ "fg" : "@base#content#selected#active#fg",
+ "bg" : "@base#content#selected#active#bg"
+ },
+ "inactive" : {
+ "fg" : "@base#content#selected#inactive#fg",
+ "bg" : "@base#content#selected#inactive#bg"
+ }
+ }
+ }
+ },
+ "qlistview" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#content#bg",
+ "item" : {
+ "hover" : {
+ "fg" : "@base#content#hover#fg",
+ "bg" : "@base#content#hover#bg"
+ },
+ "selected" : {
+ "fg" : "@base#content#selected#fg",
+ "bg" : "@base#content#selected#bg",
+ "active" : {
+ "fg" : "@base#content#selected#active#fg",
+ "bg" : "@base#content#selected#active#bg"
+ },
+ "inactive" : {
+ "fg" : "@base#content#selected#inactive#fg",
+ "bg" : "@base#content#selected#inactive#bg"
+ }
+ }
+ }
+ },
+ "qsplitter" : {
+ "handle" : {
+ "bg" : "@base#normal#border",
+ "pressed" : {
+ "bg" : "@base#pressed#bg"
+ }
+ }
+ },
+ "qstatusbar" : {
+ "fg" : "@base#footer#fg",
+ "bg" : "@base#footer#bg"
+ },
+ "qscrollbar" : {
+ "bg" : "@base#normal#bg",
+ "addpage" : {
+ "bg" : "transparent"
+ },
+ "handle" : {
+ "bg" : "@palette#bg3_2",
+ "hover" : {
+ "bg" : "@palette#bg3_1"
+ },
+ "pressed" : {
+ "bg" : "@palette#bg3_0"
+ }
+ }
+ },
+ "qcheckbox" : {
+ "disabled" : {
+ "fg" : "@base#disabled#fg"
+ },
+ "indicator" : {
+ "focus" : {
+ "bg" : "@base#focus#bg"
+ },
+ "hover" : {
+ "bg" : "@base#hover#bg"
+ },
+ "pressed" : {
+ "bg" : "@base#pressed#bg"
+ }
+ }
+ },
+ "qradiobutton" : {
+ "disabled" : {
+ "fg" : "@base#disabled#fg"
+ },
+ "indicator" : {
+ "focus" : {
+ "bg" : "@base#focus#bg"
+ },
+ "hover" : {
+ "bg" : "@base#hover#bg"
+ },
+ "pressed" : {
+ "bg" : "@base#pressed#bg"
+ }
+ }
+ },
+ "qspinbox" : {
+ "border" : "@base#content#border",
+ "fg" : "@base#content#fg",
+ "bg" : "@base#content#bg",
+ "disabled" : {
+ "fg" : "@base#content#disabled#fg",
+ "bg" : "@base#content#disabled#bg"
+ },
+ "selection" : {
+ "fg" : "@base#content#selection#fg",
+ "bg" : "@base#content#selection#bg"
+ },
+ "focus" : {
+ "bg" : "@base#edit#focus#bg",
+ "border" : "@base#edit#focus#border"
+ },
+ "hover" : {
+ "bg" : "@base#edit#hover#bg",
+ "border" : "@base#edit#hover#border"
+ },
+ "button" : {
+ "hover" : {
+ "bg" : "@base#content#hover#bg"
+ },
+ "pressed" : {
+ "bg" : "@base#content#pressed#bg"
+ }
+ }
+ },
+ "qheaderview" : {
+ "section" : {
+ "fg" : "@base#content#fg",
+ "bg" : "@base#content#bg",
+ "border" : "@base#content#border",
+ "checked" : {
+ "fg" : "@base#content#selected#fg",
+ "bg" : "@base#content#selected#bg"
+ }
+ }
+ },
+ "qprogressbar" : {
+ "bg" : "@base#content#bg",
+ "border" : "@base#content#border",
+ "chunk" : {
+ "bg" : "@base#master#alt"
+ }
+ },
+ "qgroupbox" : {
+ "border" : "@base#normal#border",
+ "title" : {
+ "fg" : "@base#normal#fg"
+ }
+ },
+ "qabstractscrollarea" : {
+ "border" : "@base#normal#border",
+ "corner" : {
+ "bg" : "@widgets#qscrollbar#bg"
+ }
+ },
+ "qslider" : {
+ "groove" : {
+ "bg" : "@base#content#bg",
+ "border" : "@base#content#border"
+ },
+ "handle" : {
+ "border" : "@base#content#border",
+ "bg" : "@base#master#bg"
+ },
+ "subpage" : {
+ "border" : "@widgets#qslider#handle#border",
+ "bg" : "@base#master#alt"
+ }
+ },
+ "viewwindow" : {
+ "toolbar" : {
+ "bg" : "@base#content#bg"
+ }
+ },
+ "quickselector" : {
+ "item_icon" : {
+ "fg" : "@base#master#bg",
+ "border" : "@base#master#bg"
+ }
+ },
+ "styleditemdelegate" : {
+ "separator" : {
+ "fg" : "@base#normal#fg",
+ "bg" : "@widgets#separator#bg"
+ },
+ "highlight" : {
+ "fg" : "@base#master#fg",
+ "bg" : "@base#master#bg"
+ }
+ },
+ "mainwindow" : {
+ "side_bar" : {
+ "fg" : "@palette#fg15_5",
+ "bg" : "@palette#layer1",
+ "selected" : {
+ "fg" : "@palette#bg2_7",
+ "bg" : "@palette#layer2"
+ },
+ "icon" : {
+ "fg" : "@widgets#mainwindow#side_bar#fg",
+ "selected" : {
+ "fg" : "@widgets#mainwindow#side_bar#selected#fg"
+ }
+ },
+ "hover" : {
+ "fg" : "@widgets#mainwindow#side_bar#fg",
+ "bg" : "@palette#layer3"
+ },
+ "widget" : {
+ "bg" : "@palette#layer4"
+ }
+ },
+ "dockwidget_tabbar" : {
+ "icon" : {
+ "fg" : "@base#icon#fg",
+ "selected" : {
+ "fg" : "@base#icon#selected#fg"
+ }
+ }
+ },
+ "tips_label" : {
+ "fg" : "@base#master#fg",
+ "bg" : "@base#master#bg"
+ }
+ },
+ "unitedentry" : {
+ "icon" : {
+ "fg" : "@base#icon#fg",
+ "busy" : {
+ "fg" : "@base#master#bg"
+ }
+ },
+ "popup" : {
+ "border" : "@base#normal#border"
+ }
+ }
+ }
+}
diff --git a/src/data/extra/themes/vx-idea/radiobutton_checked.svg b/src/data/extra/themes/vx-idea/radiobutton_checked.svg
new file mode 100644
index 00000000..a8979e68
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/radiobutton_checked.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/radiobutton_checked_disabled.svg b/src/data/extra/themes/vx-idea/radiobutton_checked_disabled.svg
new file mode 100644
index 00000000..7514e74e
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/radiobutton_checked_disabled.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/radiobutton_unchecked.svg b/src/data/extra/themes/vx-idea/radiobutton_unchecked.svg
new file mode 100644
index 00000000..d9989668
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/radiobutton_unchecked.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/radiobutton_unchecked_disabled.svg b/src/data/extra/themes/vx-idea/radiobutton_unchecked_disabled.svg
new file mode 100644
index 00000000..fb806995
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/radiobutton_unchecked_disabled.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/right.svg b/src/data/extra/themes/vx-idea/right.svg
new file mode 100644
index 00000000..9013b442
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/right.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/right_disabled.svg b/src/data/extra/themes/vx-idea/right_disabled.svg
new file mode 100644
index 00000000..42721807
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/right_disabled.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/sizegrip.svg b/src/data/extra/themes/vx-idea/sizegrip.svg
new file mode 100644
index 00000000..3018b1bb
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/sizegrip.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/text-editor.theme b/src/data/extra/themes/vx-idea/text-editor.theme
new file mode 100644
index 00000000..d40bf364
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/text-editor.theme
@@ -0,0 +1,199 @@
+{
+ "metadata": {
+ "revision": 0,
+ "name": "vx-idea",
+ "type": "vtextedit"
+ },
+ "editor-styles": {
+ "Text": {
+ "//comment": "Support a list of fonts separated by ,",
+ "font-family": "YaHei Consolas Hybrid, Consolas, Monaco, Andale Mono, Monospace, Courier New",
+ "font-size": 12,
+ "text-color": "#34495e",
+ "background-color": "#ffffff",
+ "selected-text-color": "#f5f5f5",
+ "selected-background-color": "#1976d2"
+ },
+ "CursorLine": {
+ "background-color": "#f1f2f6"
+ },
+ "TrailingSpace": {
+ "background-color": "#f1f2f6"
+ },
+ "Tab": {
+ "background-color": "#cfcfcf"
+ },
+ "SelectedText": {
+ "//comment": "Selected text highlight",
+ "text-color": "#34495e",
+ "background-color": "#dfdf00"
+ },
+ "IndicatorsBorder": {
+ "text-color": "#aaaaaa",
+ "background-color": "#e6edf5"
+ },
+ "CurrentLineNumber": {
+ "text-color": "#34495e"
+ },
+ "Folding": {
+ "text-color": "#6495ed"
+ },
+ "FoldedFolding": {
+ "text-color": "#4169e1"
+ },
+ "FoldingHighlight": {
+ "text-color": "#a9c4f5"
+ },
+ "FoldedFoldingRangeLine": {
+ "background-color": "#befbdd"
+ },
+ "IncrementalSearch": {
+ "//comment": "Incremental search highlight",
+ "text-color": "#34495e",
+ "background-color": "#ce93d8"
+ },
+ "Search": {
+ "//comment": "Search highlight",
+ "text-color": "#34495e",
+ "background-color": "#4db6ac"
+ },
+ "SearchUnderCursor": {
+ "//comment": "Search highlight under cursor",
+ "text-color": "#34495e",
+ "background-color": "#66bb6a"
+ }
+ },
+ "//comment": "Override the Text style in editor-styles",
+ "markdown-editor-styles": {
+ "Text": {
+ "//comment": "Support a list of fonts separated by ,",
+ "font-family": "YaHei Consolas Hybrid, 冬青黑体, Microsoft YaHei, 微软雅黑, Microsoft YaHei UI, WenQuanYi Micro Hei, 文泉驿雅黑, Dengxian, 等线体, STXihei, 华文细黑, Liberation Sans, Droid Sans, NSimSun, 新宋体, SimSun, 宋体, Verdana, Helvetica, sans-serif, Tahoma, Arial, Geneva, Georgia, Times New Roman",
+ "font-size": 12,
+ "text-color": "#34495e",
+ "background-color": "#ffffff",
+ "selected-text-color": "#f5f5f5",
+ "selected-background-color": "#1976d2"
+ }
+ },
+ "markdown-syntax-styles": {
+ "H1": {
+ "text-color": "#34495e",
+ "bold": true,
+ "font-size": 17
+ },
+ "H2": {
+ "text-color": "#34495e",
+ "bold": true,
+ "font-size": 16
+ },
+ "H3": {
+ "text-color": "#34495e",
+ "bold": true,
+ "font-size": 15
+ },
+ "H4": {
+ "text-color": "#34495e",
+ "bold": true,
+ "font-size": 14
+ },
+ "H5": {
+ "text-color": "#34495e",
+ "bold": true,
+ "font-size": 13
+ },
+ "H6": {
+ "text-color": "#34495e",
+ "bold": true,
+ "font-size": 12
+ },
+ "HRULE": {
+ "text-color": "#34495e",
+ "background-color": "#dac7c9"
+ },
+ "LIST_BULLET": {
+ "text-color": "#d33682",
+ "bold": true
+ },
+ "LIST_ENUMERATOR": {
+ "text-color": "#0000ff"
+ },
+ "LINK": {
+ "text-color": "#005fff"
+ },
+ "AUTO_LINK_URL": {
+ "text-color": "#005fff"
+ },
+ "AUTO_LINK_EMAIL": {
+ "text-color": "#005fff"
+ },
+ "IMAGE": {
+ "text-color": "#616161"
+ },
+ "REFERENCE": {
+ "text-color": "#826200"
+ },
+ "CODE": {
+ "text-color": "#8e24aa",
+ "font-family": "YaHei Consolas Hybrid, Consolas, Monaco, Andale Mono, Monospace, Courier New"
+ },
+ "EMPH": {
+ "italic": true
+ },
+ "STRONG": {
+ "bold": true
+ },
+ "HTML_ENTITY": {
+ "text-color": "#8900b5"
+ },
+ "HTML": {
+ "text-color": "#8900b5"
+ },
+ "HTMLBLOCK": {
+ "text-color": "#8900b5"
+ },
+ "COMMENT": {
+ "text-color": "#93a1a1"
+ },
+ "VERBATIM": {
+ "text-color": "#673ab7",
+ "font-family": "YaHei Consolas Hybrid, Consolas, Monaco, Andale Mono, Monospace, Courier New"
+ },
+ "//comment": "Please modify the syntax highlight theme as well if you change this",
+ "FENCEDCODEBLOCK": {
+ "text-color": "#673ab7",
+ "font-family": "YaHei Consolas Hybrid, Consolas, Monaco, Andale Mono, Monospace, Courier New"
+ },
+ "BLOCKQUOTE": {
+ "text-color": "#00af00"
+ },
+ "NOTE": {
+ "text-color": "#0087b5"
+ },
+ "STRIKE": {
+ "text-color": "#b71c1c",
+ "strike-through": true
+ },
+ "FRONTMATTER": {
+ "text-color": "#6c6c6c"
+ },
+ "INLINEEQUATION": {
+ "text-color": "#00897b",
+ "font-family": "YaHei Consolas Hybrid, Consolas, Monaco, Andale Mono, Monospace, Courier New"
+ },
+ "DISPLAYFORMULA": {
+ "text-color": "#00897b",
+ "font-family": "YaHei Consolas Hybrid, Consolas, Monaco, Andale Mono, Monospace, Courier New"
+ },
+ "MARK": {
+ "text-color": "#34495e",
+ "background-color": "#ffff76"
+ },
+ "TABLE": {
+ "font-family": "YaHei Consolas Hybrid, Consolas, Monaco, Andale Mono, Monospace, Courier New"
+ },
+ "TABLEBORDER": {
+ "text-color": "#d33682",
+ "background-color": "#ffffff"
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/tips_components/alert.png b/src/data/extra/themes/vx-idea/tips_components/alert.png
new file mode 100644
index 00000000..a42e6eb9
Binary files /dev/null and b/src/data/extra/themes/vx-idea/tips_components/alert.png differ
diff --git a/src/data/extra/themes/vx-idea/tips_components/snippets/Danger.json b/src/data/extra/themes/vx-idea/tips_components/snippets/Danger.json
new file mode 100644
index 00000000..ee809d00
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/tips_components/snippets/Danger.json
@@ -0,0 +1,9 @@
+{
+ "content": ":::alert-danger\n$$@@\n:::",
+ "cursor_mark": "@@",
+ "description": "警告",
+ "indent_as_first_line": true,
+ "selection_mark": "$$",
+ "shortcut": 4,
+ "type": 1
+}
diff --git a/src/data/extra/themes/vx-idea/tips_components/snippets/Notes.json b/src/data/extra/themes/vx-idea/tips_components/snippets/Notes.json
new file mode 100644
index 00000000..68cda192
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/tips_components/snippets/Notes.json
@@ -0,0 +1,9 @@
+{
+ "content": ":::alert-primary\n$$@@\n:::",
+ "cursor_mark": "@@",
+ "description": "注意",
+ "indent_as_first_line": false,
+ "selection_mark": "$$",
+ "shortcut": 1,
+ "type": 1
+}
diff --git a/src/data/extra/themes/vx-idea/tips_components/snippets/Point.json b/src/data/extra/themes/vx-idea/tips_components/snippets/Point.json
new file mode 100644
index 00000000..262fdd96
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/tips_components/snippets/Point.json
@@ -0,0 +1,9 @@
+{
+ "content": ":::alert-warning\n$$@@\n:::",
+ "cursor_mark": "@@",
+ "description": "重点",
+ "indent_as_first_line": false,
+ "selection_mark": "$$",
+ "shortcut": 2,
+ "type": 1
+}
diff --git a/src/data/extra/themes/vx-idea/tips_components/snippets/Test.json b/src/data/extra/themes/vx-idea/tips_components/snippets/Test.json
new file mode 100644
index 00000000..d0c72615
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/tips_components/snippets/Test.json
@@ -0,0 +1,9 @@
+{
+ "content": ":::alert-dark\n$$@@\n:::",
+ "cursor_mark": "@@",
+ "description": "实验",
+ "indent_as_first_line": false,
+ "selection_mark": "$$",
+ "shortcut": 3,
+ "type": 1
+}
diff --git a/src/data/extra/themes/vx-idea/tips_components/snippets/Tips.json b/src/data/extra/themes/vx-idea/tips_components/snippets/Tips.json
new file mode 100644
index 00000000..e8fc837b
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/tips_components/snippets/Tips.json
@@ -0,0 +1,9 @@
+{
+ "content": "::: alert-info\n$$@@\n:::",
+ "cursor_mark": "@@",
+ "description": "提示",
+ "indent_as_first_line": false,
+ "selection_mark": "$$",
+ "shortcut": 0,
+ "type": 1
+}
diff --git a/src/data/extra/themes/vx-idea/tips_components/snippets/alert片段快捷方式,复制到配置文件对应文件夹下即可.txt b/src/data/extra/themes/vx-idea/tips_components/snippets/alert片段快捷方式,复制到配置文件对应文件夹下即可.txt
new file mode 100644
index 00000000..e69de29b
diff --git a/src/data/extra/themes/vx-idea/tips_components/sytle.css b/src/data/extra/themes/vx-idea/tips_components/sytle.css
new file mode 100644
index 00000000..7641ee91
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/tips_components/sytle.css
@@ -0,0 +1,49 @@
+@font-face {
+ font-family: "vx-alert"; /* Project id 3575329 */
+src: url('data:font/woff2;charset=utf-8;base64,d09GMgABAAAAAAaAAA0AAAAADDAAAAYqAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP0ZGVE0cGh4GYACCYhEICossiH8LEgABNgIkAxgEIAWFAgdxGwcKUZROUpvsZ4KpsnIjDE5dNucqeN4hZnC54KFeJ0K+8yfSr8F/31533+z8ZEOp1RhQuNo0CIsrTSIMioPC4bpFYaNo7keiond4tvm9t7kCWYKxiL5S1w24X4EsIuCu4a5dB/6KcruK4vl/b/dt/wx8EHkYUQRZFgCEnSSBQvtqTW2AVWLEhuwLEysv9wECC4QKxqNSUUVU6IBc37UyrVG1ugPbJeJTNwIEKN9P2gLgr+P6F+65BepAB4CRoEgcGPBCFxnstE8AN8Dv6yM2tmCyDnfz5T1jOzibt1VKApc4hBseCOBkyGUOsLkvPLnPktx/ITMHUCcy/rbliTmZb6+UpAR48/mv/lA/qmdVh4EIXo3K1kANMOC/RwA5/YkRRLwm7b2AHoBtoKJTu5E4F5YmmazFnSR7FsKBkDvKih9BYuQKxAU62DmygoIe5JX6IZGgBjicVAwighE3Ao4gSCNNJY1Cfko5pBxCxYAkmqL1FF0SVlpuVJRmoIfRS1qCjTidoEzcVgwOYVJdkKaUdLlwP/seIZJ6AHDD+DJd/ieQxB0QDioG1yBJe16HfKxCOQShb8KpFTBuDs9FL0B+NdSI7wMcJRdMEPI7UEyUAOCWt2JQ3k7CUVeRNskL3f2VNMc1qnH3afe94XsfvZtsJs3UCqUYdDW5TnpOek157Uk6U4QbiRH1SIi04jHhPu4+rFIFLQWd0J5IOhN3wHeVXm3m4TI+DAAi/dCoScBJelBY5ggKIOJDB0OR06GnI/dDXv86IBSpFUoALnqnbvlREhFMrhAF3HKXQJpJM+BidiVICVAigJEjALfvGoqKNw5AOMQr4FAYPBN2Ju4A5OlVerVTzjVJKCbu4E3dGQ1coQaxeDLysRFKPMWdFE7zZ9ANCAwaGoOQH1UEQtSCGyECQHfV6OGDqorhmVOok3hmri4RTnx7PWdEEGEQWvJDKCoOgGl/h5GmxlGPkZs3RzykxiZJ+bjklPduutiYyX8I55vv5hdIncbqqu8uqFx+/Pr5kwP2Kq1vVVVjQ3tbTk5b+zMR34HvPmp7uf2mgTCcQGI32/F2k/u4ILqdaW85gBg4jsXZ9kBkKJWaDoN/a2tVtS+Wjm7zdfQrjUp+z/pprKyd3j/R5tNvY97+D+E84j/sYu058k6Z+Br8wKc4/LHp2uM3nKyfNi5Es1rMkzr/feDNvCB19ouPZD6pLevbacac5OGYI2amv3m43On1oPOq8+D/2Px8e+AbuqZh9wWH+Ml9ITX3IqjW+X+DhXvhZ29pi+2KsK1JVA5zoHjnmX12xz9oeJpQ/+b2cNUcYu+lePqkpj/r0Ssz2dH3pTf2P/PnvwfK/3PpSq7wtMjyKwzUgx1qAN4c+8nFrezD8jXDiK/bs3l5FD3sZtxi2/YPy9wIy/EvYXG8hXWxhgzJCspID84MXYSRhizkfDdSu0WJx29iv37W5YQF8YUzcdLqidLtdGxZTDQZo2eydxZ1VbwGvsyMltnIQr3MhZ7PehaavcIskQdFZRwBcx3dxbtymBh9NFkWQ8dalh2MxXzdfDH1CC2Ad086ZnWMRsPo2J8IpCELOcf/ROZ3IhMDJp0kXsfkyfn9PHSxWr+zoXpx+AnWa1sNkbRqz79xd3Awi+xeXjXVlco5FWaqnWKhPJ99dg+lRdxJ1FsiAAj80f3jX21y0FUj6gxDF6T/ElcWToDIcpBDh2+/QAwP+tkKAC+DlA2C/C+aT0kUiF400k1fIwIkRFu8V1a4VbANEi2CKTqEIDqlO/sWMrXeoSD6ghqz0Z1fqzUvE6hKwAQAgDTRgWmwBUGTerqzBch0WICCJtegxqZPjqs1kQqQpgljixZVdjtvW3USK21Tr45hpgU4GMMTFDyBmgBS9ASft4rBalVjiybg98NRk48OEjcxmjSrbPcWI1I0sG+yekxkdFb6gqEu++A+5jdrw4oNEbUw+A2a4HQtb5lF+Bk1YrKet4bwTaowtmkRCRy6FTa3sbEtLYadFny/HC94ND9xBwE4Kn+9BhpRohhKDkbaVqcZLITNhsx4JtkzFZmmBqPHU8RiCnJlKtRMqQ0Rs0+L3LLVsYQ6DM81WZh6Sql2qWevAAA=') format('woff2'),
+ url('data:font/woff;charset=utf-8;base64,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') format('woff'),
+ url('data:font/ttf;charset=utf-8;base64,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') format('truetype');
+}
+
+.vx-alert {
+ font-family: "vx-alert" !important;
+ font-size: 2.5em;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.alert-dark:before {
+ content: "\e614";
+ color: #2c2c2c;
+ float: left;
+ padding-right: .2em;
+}
+
+.alert-primary:before {
+ content: "\e664";
+ color: #0077b9;
+ float: left;
+ padding-right: .2em;
+}
+
+.alert-info:before {
+ content: "\e654";
+ color: #23a3ba;
+ float: left;
+ padding-right: .2em;
+}
+
+.alert-danger:before {
+ content: "\e63e";
+ color: #bf3300;
+ float: left;
+ padding-right: .2em;
+}
+
+.alert-warning:before {
+ content: "\e751";
+ color: #d88400;
+ float: left;
+ padding-right: .2em;
+}
\ No newline at end of file
diff --git a/src/data/extra/themes/vx-idea/up.svg b/src/data/extra/themes/vx-idea/up.svg
new file mode 100644
index 00000000..d33d0edb
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/up.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/up_disabled.svg b/src/data/extra/themes/vx-idea/up_disabled.svg
new file mode 100644
index 00000000..32084904
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/up_disabled.svg
@@ -0,0 +1 @@
+
diff --git a/src/data/extra/themes/vx-idea/web.css b/src/data/extra/themes/vx-idea/web.css
new file mode 100644
index 00000000..7acdd4cc
--- /dev/null
+++ b/src/data/extra/themes/vx-idea/web.css
@@ -0,0 +1,312 @@
+@media print {
+ page-break-inside: avoid !important;
+ page-break-after: avoid; !important;
+ page-break-before: avoid !important;
+}
+
+body {
+ margin: 0 auto;
+ font-family: "YaHei Consolas Hybrid", "Segoe UI", Helvetica, sans-serif, Tahoma, Arial, Geneva, Georgia, Palatino, "Times New Roman", "冬青黑体", "Microsoft YaHei", "微软雅黑", "Microsoft YaHei UI", "WenQuanYi Micro Hei", "文泉驿雅黑", Dengxian, "等线体", STXihei, "华文细黑", "Liberation Sans", "Droid Sans", NSimSun, "新宋体", SimSun, "宋体";
+ color: #34495e;
+ line-height: 1.5;
+ padding: 15px;
+ background-color: #ffffff;
+ font-size: 16px;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #34495e;
+ font-weight: bold;
+ margin-top: 20px;
+ margin-bottom: 10px;
+ padding: 0;
+}
+
+p {
+ padding: 0;
+ margin-top: 16px;
+ margin-bottom: 16px;
+}
+
+h1 {
+ font-size: 26px;
+}
+
+h2 {
+ font-size: 24px;
+}
+
+h3 {
+ font-size: 22px;
+}
+
+h4 {
+ font-size: 20px;
+}
+
+h5 {
+ font-size: 19px;
+}
+
+h6 {
+ font-size: 18px;
+}
+
+a {
+ color: #0099ff;
+ margin: 0;
+ padding: 0;
+ vertical-align: baseline;
+ text-decoration: none;
+ word-break: break-word;
+}
+
+a:hover {
+ text-decoration: underline;
+}
+
+a:visited {
+ color: #800080;
+}
+
+ul, ol {
+ padding: 0;
+ padding-left: 24px;
+}
+
+li {
+ line-height: 24px;
+}
+
+li ul, li ol {
+ margin-left: 16px;
+}
+
+p, ul, ol {
+ font-size: 16px;
+ line-height: 24px;
+}
+
+mark {
+ color: #000000;
+ background-color: #c4c400;
+}
+
+pre {
+ display: block;
+ /*overflow-y: hidden;*/
+ /*overflow-x: auto;*/
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+}
+
+code {
+ font-family: "YaHei Consolas Hybrid", Consolas, Monaco, Monospace, Courier;
+ color: #e96900;
+ word-break: break-word;
+}
+
+pre code {
+ display: block;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ color: #e8eaf6;
+ background-color: #272822;
+ line-height: 1.5;
+ font-family: "YaHei Consolas Hybrid", Consolas, Monaco, Monospace, Courier;
+ white-space: pre;
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+}
+
+aside {
+ display: block;
+ float: right;
+ width: 390px;
+}
+
+blockquote {
+ color: #34495e;
+ border-left: .2em solid #a0c1dd;
+ padding: .1em 1em;
+ background-color: #f4f7f9;
+ margin-left: 0;
+}
+
+blockquote p {
+ color: #34495e;
+}
+
+hr {
+ display: block;
+ text-align: left;
+ margin: 1em 0;
+ border: none;
+ height: 1px;
+ background-color: #bdc3c7;
+}
+
+table {
+ padding: 0;
+ margin: 1rem 0.5rem;
+ border-collapse: collapse;
+}
+
+table tr {
+ border-top: 1px solid #dfe2e5;
+ background-color: #ffffff;
+ margin: 0;
+ padding: 0;
+}
+
+table tr:nth-child(2n),
+th {
+ background-color: #fafafa;
+}
+
+table tr:hover {
+ background-color: #f1f2f6;
+}
+
+table tr th {
+ font-weight: bold;
+ border: 1px solid #dfe2e5;
+ margin: 0;
+ padding: 6px 13px;
+}
+
+table tr td {
+ border: 1px solid #dfe2e5;
+ margin: 0;
+ padding: 6px 13px;
+}
+
+table tr th :first-child, table tr td :first-child {
+ margin-top: 0;
+}
+
+table tr th :last-child, table tr td :last-child {
+ margin-bottom: 0;
+}
+
+div.vx-mermaid-graph {
+ margin: 16px 0px 16px 0px;
+ overflow-y: hidden;
+ /* background: #bdcbd3; */
+ color: #c4c4c4;
+}
+
+div.vx-flowchartjs-graph {
+ padding: 0px 5px 0px 5px;
+ margin: 16px 0px 16px 0px;
+ width: fit-content;
+ overflow: hidden;
+ /* background: #bdcbd3; */
+ color: #c7c4c4;
+}
+
+div.vx-wavedrom-graph {
+ padding: 0px 5px 0px 5px;
+ margin: 16px 0px 16px 0px;
+ width: fit-content;
+ overflow: hidden;
+ /* background: #bdcbd3; */
+ color: #c4c4c4;
+}
+
+div.vx-plantuml-graph {
+ padding: 5px 5px 0px 5px;
+ margin: 16px 0px 16px 0px;
+ width: fit-content;
+ overflow: hidden;
+ /* background: #bdcbd3; */
+ color: #c4c4c4;
+}
+
+/* ::selection {
+ background-color: #dae3ea;
+ color: #34495e;
+} */
+
+::-webkit-scrollbar {
+ background-color: #eaeaea;
+ width: 10px;
+ height: 10px;
+ border: none;
+}
+
+::-webkit-scrollbar-corner {
+ background-color: #eaeaea;
+}
+
+::-webkit-scrollbar-button {
+ /* This selector affects the styling of both the up & down and left & right buttons of a scrollbar */
+ height: 10px;
+ width: 10px;
+ background-color: #eaeaea;
+}
+
+::-webkit-scrollbar-button:hover {
+ background-color: #ced6e0;
+}
+
+::-webkit-scrollbar-button:active {
+ background-color: #b4c0cf;
+}
+
+::-webkit-scrollbar-track {
+ /* This selector affects the styling of the area in the scrollbar between the two buttons */
+ background-color: #eaeaea;
+ border-radius: 10px;
+}
+
+::-webkit-scrollbar-thumb {
+ /* This selector affects the styling of draggable element of the scollbar */
+ border: none;
+ background-color: #b4c0cf;
+ border-radius: 10px;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background-color: #ced6e0;
+}
+
+::-webkit-scrollbar-thumb:active {
+ background-color: #b4c0cf;
+}
+
+::-webkit-scrollbar-button:horizontal:increment {
+ background-image: url(right.svg);
+ background-repeat: no-repeat;
+ background-size: contain;
+}
+
+::-webkit-scrollbar-button:horizontal:decrement {
+ background-image: url(left.svg);
+ background-repeat: no-repeat;
+ background-size: contain;
+}
+
+::-webkit-scrollbar-button:vertical:increment {
+ background-image: url(down.svg);
+ background-repeat: no-repeat;
+ background-size: contain;
+}
+
+::-webkit-scrollbar-button:vertical:decrement {
+ background-image: url(up.svg);
+ background-repeat: no-repeat;
+ background-size: contain;
+}
+
+#vx-content span.vx-search-match {
+ color: #34495e;
+ background-color: #4db6ac;
+}
+
+#vx-content span.vx-current-search-match {
+ color: #34495e;
+ background-color: #66bb6a;
+}
\ No newline at end of file