diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index 720000f09..c1e87a222 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -18,6 +18,8 @@ module.exports = { docsBranch: "main", editLinks: true, editLinkText: "帮助我们改善此页面!", + themeChange: true, + themeChangeText: "切换主题", nav: [ { text: "首页", link: "/" }, { text: "大史记", link: "/about/news" }, diff --git a/docs/.vuepress/theme/README.md b/docs/.vuepress/theme/README.md new file mode 100644 index 000000000..4ea07afc9 --- /dev/null +++ b/docs/.vuepress/theme/README.md @@ -0,0 +1,3 @@ +# Xray-docs-next dark theme + +Fork from https://github.com/tolking/vuepress-theme-default-prefers-color-scheme . diff --git a/docs/.vuepress/theme/components/NavLinks.vue b/docs/.vuepress/theme/components/NavLinks.vue new file mode 100644 index 000000000..6e5f6c0d6 --- /dev/null +++ b/docs/.vuepress/theme/components/NavLinks.vue @@ -0,0 +1,45 @@ + + + diff --git a/docs/.vuepress/theme/index.js b/docs/.vuepress/theme/index.js new file mode 100644 index 000000000..b4eddc0df --- /dev/null +++ b/docs/.vuepress/theme/index.js @@ -0,0 +1,3 @@ +module.exports = { + extend: "@vuepress/theme-default" +}; diff --git a/docs/.vuepress/theme/layouts/Layout.vue b/docs/.vuepress/theme/layouts/Layout.vue new file mode 100644 index 000000000..6a8137327 --- /dev/null +++ b/docs/.vuepress/theme/layouts/Layout.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/docs/.vuepress/theme/styles/components.styl b/docs/.vuepress/theme/styles/components.styl new file mode 100644 index 000000000..f5533f7b2 --- /dev/null +++ b/docs/.vuepress/theme/styles/components.styl @@ -0,0 +1,176 @@ +// search +.search-box + input + color var(--lighten25TextColor) + border-color var(--darken10BorderColor) + background-color var(--bgColor) + + &:focus + border-color var(--accentColor) + + .suggestions + background var(--bgColor) + border-color var(--darken10BorderColor) + + .suggestion + a + color var(--lighten35TextColor) + + &.focused + background-color var(--darken10BgColor) + + a + color var(--accentColor) + +.algolia-search-wrapper + .algolia-autocomplete + .ds-dropdown-menu + background var(--bgColor) + border-color var(--searchBorderColor) + + &::before + border-color var(--searchBorderColor) + + .ds-suggestion + border-bottom-color var(--borderColor) + + // .algolia-docsearch-suggestion--highlight + // color #2c815b + .algolia-docsearch-suggestion + border-color var(--borderColor) + + .algolia-docsearch-suggestion--category-header + background var(--accentColor) + // color #fff + // .algolia-docsearch-suggestion--highlight + // background rgba(255, 255, 255, 0.6) + + .algolia-docsearch-suggestion--title + color var(--textColor) + + .algolia-docsearch-suggestion--subcategory-column + border-color var(--borderColor) + // background #f1f3f5 + + .algolia-docsearch-footer + border-color var(--borderColor) + + .ds-cursor .algolia-docsearch-suggestion--content + // background-color #e7edf3 !important + color var(--textColor) + +.dropdown-wrapper + .dropdown-title + .mobile-dropdown-title + color var(--textColor) + + .nav-dropdown + .dropdown-item + h4 + border-top-color var(--kbdBgColor) + + a + &:hover + color var(--accentColor) + + &.router-link-active + color var(--accentColor) + + &::after + border-left-color var(--accentColor) + +@media (max-width: $MQMobile) + .dropdown-wrapper .dropdown-title:hover + color var(--accentColor) + +@media (min-width: $MQMobile) + .dropdown-wrapper .dropdown-title .arrow + border-top-color var(--arrowBgColor) + + .dropdown-wrapper .nav-dropdown + background-color var(--bgColor) + border-color var(--borderColor) + +// home +.home + .hero + .description + color var(--lighten40TextColor) + + .action-button + // color #fff + background-color var(--accentColor) + border-bottom-color var(--darken10AccentColor) + + &:hover + background-color var(--lighten10AccentColor) + + .features + border-top-color var(--borderColor) + + .feature + h2 + color var(--lighten10TextColor) + + p + color var(--lighten25TextColor) + + .footer + border-top-color var(--borderColor) + color var(--lighten25TextColor) + +// navbar +.navbar .site-name + color var(--textColor) + white-space nowrap + +.navbar .links + background var(--bgColor) + +.nav-links a + &:hover + &.router-link-active + color var(--accentColor) + + @media (min-width: $MQMobile) + color var(--textColor) + +@media (min-width: $MQMobile) + .nav-item > a:not(.external) + &:hover + &.router-link-active + border-bottom-color var(--accentColor) + +// page-edit +.page-edit .edit-link a +.page-edit .last-updated .prefix + color var(--lighten25TextColor) + +.page-edit .last-updated .time + color var(--lighten40TextColor) + +// sidebar +.sidebar .nav-links +.page-nav .inner + border-color var(--borderColor) + +.sidebar-heading + color var(--textColor) + + &.clickable + &.active + color var(--accentColor) + border-left-color var(--accentColor) + + &:hover + color var(--accentColor) + +a.sidebar-link + color var(--textColor) + + &:hover + color var(--accentColor) + + &.active + color var(--accentColor) + border-left-color var(--accentColor) diff --git a/docs/.vuepress/theme/styles/index.styl b/docs/.vuepress/theme/styles/index.styl new file mode 100644 index 000000000..72b796891 --- /dev/null +++ b/docs/.vuepress/theme/styles/index.styl @@ -0,0 +1,329 @@ +@require './palette.styl' + +:root + --accentColor $accentColor + --textColor $textColor + --borderColor $borderColor + --codeBgColor $codeBgColor + --arrowBgColor $arrowBgColor + --badgeTipColor $badgeTipColor + --badgeWarningColor $badgeWarningColor + --badgeErrorColor $badgeErrorColor + --bgColor $bgColor + --kbdBgColor $kbdBgColor + --blockquoteTextColor $blockquoteTextColor + --blockquoteBorderColor $blockquoteBorderColor + --tableBorderColor $tableBorderColor + --tableStripeBgColor $tableStripeBgColor + --preTextColor $preTextColor + --highlightedBgColor $highlightedBgColor + --languageTextColor $languageTextColor + --lineNumbersColor $lineNumbersColor + --tipColor $tipColor + --tipBgColor $tipBgColor + --warningColor $warningColor + --warningBgColor $warningBgColor + --dangerColor $dangerColor + --dangerBgColor $dangerBgColor + --miniCodeBgColor $miniCodeBgColor + --searchBorderColor $searchBorderColor + --lighten10AccentColor lighten($accentColor, 10%) + --lighten10TextColor lighten($textColor, 10%) + --lighten20TextColor lighten($textColor, 20%) + --lighten25TextColor lighten($textColor, 25%) + --lighten35TextColor lighten($textColor, 35%) + --lighten40TextColor lighten($textColor, 40%) + --darken10AccentColor darken($accentColor, 10%) + --darken10BgColor darken($bgColor, 5%) + --darken10BorderColor darken($borderColor, 10%) + + @media (prefers-color-scheme light) + --codeBgColor $codeBgLightColor + --preTextColor $preTextLightColor + --highlightedBgColor $highlightedBgLightColor + --languageTextColor $languageTextLightColor + --lineNumbersColor $lineNumbersLightColor + + @media (prefers-color-scheme dark) + --accentColor $accentDarkColor + --textColor $textDarkColor + --borderColor $borderDarkColor + --arrowBgColor $arrowBgDarkColor + --badgeTipColor $badgeTipDarkColor + --badgeWarningColor $badgeWarningDarkColor + --badgeErrorColor $badgeErrorDarkColor + --bgColor $bgDarkColor + --kbdBgColor $kbdBgDarkColor + --blockquoteTextColor $blockquoteTextDarkColor + --blockquoteBorderColor $blockquoteBorderDarkColor + --tableBorderColor $tableBorderDarkColor + --tableStripeBgColor $tableStripeBgDarkColor + --tipColor $tipDarkColor + --tipBgColor $tipBgDarkColor + --warningColor $warningDarkColor + --warningBgColor $warningBgDarkColor + --dangerColor $dangerDarkColor + --dangerBgColor $dangerBgDarkColor + --miniCodeBgColor $miniCodeBgDarkColor + --searchBorderColor $searchBorderDarkColor + --lighten10AccentColor lighten($accentDarkColor, 10%) + --lighten10TextColor lighten($textDarkColor, 10%) + --lighten20TextColor lighten($textDarkColor, 20%) + --lighten25TextColor lighten($textDarkColor, 25%) + --lighten35TextColor lighten($textDarkColor, 35%) + --lighten40TextColor lighten($textDarkColor, 40%) + --darken10AccentColor darken($accentDarkColor, 10%) + --darken10BgColor lighten($bgDarkColor, 5%) + --darken10BorderColor darken($borderDarkColor, 10%) + +html[theme='light'] + --accentColor $accentColor + --textColor $textColor + --borderColor $borderColor + --codeBgColor $codeBgLightColor + --arrowBgColor $arrowBgColor + --badgeTipColor $badgeTipColor + --badgeWarningColor $badgeWarningColor + --badgeErrorColor $badgeErrorColor + --bgColor $bgColor + --kbdBgColor $kbdBgColor + --blockquoteTextColor $blockquoteTextColor + --blockquoteBorderColor $blockquoteBorderColor + --tableBorderColor $tableBorderColor + --tableStripeBgColor $tableStripeBgColor + --preTextColor $preTextLightColor + --highlightedBgColor $highlightedBgLightColor + --languageTextColor $languageTextLightColor + --lineNumbersColor $lineNumbersLightColor + --tipColor $tipColor + --tipBgColor $tipBgColor + --warningColor $warningColor + --warningBgColor $warningBgColor + --dangerColor $dangerColor + --dangerBgColor $dangerBgColor + --miniCodeBgColor $miniCodeBgColor + --searchBorderColor $searchBorderColor + --lighten10AccentColor lighten($accentColor, 10%) + --lighten10TextColor lighten($textColor, 10%) + --lighten20TextColor lighten($textColor, 20%) + --lighten25TextColor lighten($textColor, 25%) + --lighten35TextColor lighten($textColor, 35%) + --lighten40TextColor lighten($textColor, 40%) + --darken10AccentColor darken($accentColor, 10%) + --darken10BgColor darken($bgColor, 5%) + --darken10BorderColor darken($borderColor, 10%) + +html[theme='dark'] + --accentColor $accentDarkColor + --textColor $textDarkColor + --borderColor $borderDarkColor + --codeBgColor $codeBgColor + --arrowBgColor $arrowBgDarkColor + --badgeTipColor $badgeTipDarkColor + --badgeWarningColor $badgeWarningDarkColor + --badgeErrorColor $badgeErrorDarkColor + --bgColor $bgDarkColor + --kbdBgColor $kbdBgDarkColor + --blockquoteTextColor $blockquoteTextDarkColor + --blockquoteBorderColor $blockquoteBorderDarkColor + --tableBorderColor $tableBorderDarkColor + --tableStripeBgColor $tableStripeBgDarkColor + --preTextColor $preTextColor + --highlightedBgColor $highlightedBgColor + --languageTextColor $languageTextColor + --lineNumbersColor $lineNumbersColor + --tipColor $tipDarkColor + --tipBgColor $tipBgDarkColor + --warningColor $warningDarkColor + --warningBgColor $warningBgDarkColor + --dangerColor $dangerDarkColor + --dangerBgColor $dangerBgDarkColor + --miniCodeBgColor $miniCodeBgDarkColor + --searchBorderColor $searchBorderDarkColor + --lighten10AccentColor lighten($accentDarkColor, 10%) + --lighten10TextColor lighten($textDarkColor, 10%) + --lighten20TextColor lighten($textDarkColor, 20%) + --lighten25TextColor lighten($textDarkColor, 25%) + --lighten35TextColor lighten($textDarkColor, 35%) + --lighten40TextColor lighten($textDarkColor, 40%) + --darken10AccentColor darken($accentDarkColor, 10%) + --darken10BgColor darken($bgDarkColor, 5%) + --darken10BorderColor darken($borderDarkColor, 10%) + +html +body +.navbar +.sidebar + background-color var(--bgColor) + +body + color var(--textColor) + +.navbar +h2 + border-bottom-color var(--borderColor) + +.sidebar + border-right-color var(--borderColor) + +{$contentClass}:not(.custom) p.demo +kbd + border-color var(--borderColor) + +kbd + background var(--kbdBgColor) + +blockquote + color var(--blockquoteTextColor) + border-left-color var(--blockquoteBorderColor) + +a +p a code + color var(--accentColor) + +hr + border-top-color var(--borderColor) + +tr + border-top-color var(--tableBorderColor) + + &:nth-child(2n) + background-color var(--tableStripeBgColor) + +th +td + border-color var(--tableBorderColor) + +.arrow.up + border-bottom-color var(--arrowBgColor) + +.arrow.down + border-top-color var(--arrowBgColor) + +.arrow.right +border-left-color var(--arrowBgColor) +.arrow.left + border-right-color var(--arrowBgColor) + +// code +{$contentClass} code + color var(--lighten20TextColor) + background-color var(--miniCodeBgColor) + + .token.inserted + color var(--accentColor) + + .token.punctuation + color var(--preTextColor) + +{$contentClass} pre + +{$contentClass} pre[class*='language-'] +div[class*='language-'] +div[class*='language-'].line-numbers-mode::after + background-color var(--codeBgColor) + +{$contentClass} + pre + pre[class*='language-'] + code + color var(--preTextColor) + +div[class*='language-'] .highlight-lines .highlighted +div[class*='language-'].line-numbers-mode .highlight-lines .highlighted::before + background-color var(--highlightedBgColor) + +div[class*='language-'].line-numbers-mode::after + background-color var(--codeBgColor) + border-right-color var(--highlightedBgColor) + +div[class*='language-']::before + color var(--languageTextColor) + +div[class*='language-'].line-numbers-mode .line-numbers-wrapper + color var(--lineNumbersColor) + +.theme-code-block > pre + background-color var(--codeBgColor) !important + +.theme-code-group .theme-code-group__nav + background-color var(--codeBgColor) !important + + .theme-code-group__nav-tab + color var(--textColor) !important + + .theme-code-group__nav-tab-active + border-color: var(--accentColor) !important + +// custom-block +.custom-block.tip + border-color var(--badgeTipColor) + background-color var(--tipBgColor) + + .custom-block-title + a + color var(--tipColor) + +.custom-block.warning + border-color var(--badgeWarningColor) + background-color var(--warningBgColor) + + .custom-block-title + a + color var(--warningColor) + +.custom-block.danger + border-color var(--badgeErrorColor) + background-color var(--dangerBgColor) + + .custom-block-title + a + color var(--dangerColor) + +.custom-block.warning +.custom-block.danger + color var(--textColor) + +.custom-block.details + background-color var(--tipBgColor) + +// badge +.badge + background-color var(--badgeTipColor) !important + + &.tip + &.green + background-color var(--badgeTipColor) !important + + &.error + background-color var(--badgeErrorColor) !important + + &.warning + &.warn + &.yellow + background-color var(--badgeWarningColor) !important + +// pwa +.global-ui + .sw-update-popup + border-color var(--accentColor) !important + background-color var(--bgColor) !important + color var(--textColor) !important + + button + border-color var(--darken10AccentColor) !important + background-color var(--accentColor) !important + color #fff !important + + &:hover + background-color var(--lighten10AccentColor) !important + +// scroll bar +@media (min-width $MQMobile) + ::-webkit-scrollbar + max-width 6px + max-height 12px + + ::-webkit-scrollbar-thumb + background-color var(--languageTextColor) + border-radius 6px diff --git a/docs/.vuepress/theme/styles/palette.styl b/docs/.vuepress/theme/styles/palette.styl new file mode 100644 index 000000000..22379c117 --- /dev/null +++ b/docs/.vuepress/theme/styles/palette.styl @@ -0,0 +1,79 @@ +$contentClass = '.theme-default-content' + +$accentColor ?= #3eaf7c +$accentDarkColor ?= $accentColor + +$textColor ?= #2c3e50 +$textDarkColor ?= #e2e2e2 + +$borderColor ?= #eaecef +$borderDarkColor ?= #4e4e4e + +$codeBgColor ?= #282c34 +$codeBgLightColor ?= #f8f8f8 + +$arrowBgColor ?= #ccc +$arrowBgDarkColor ?= $arrowBgColor + +$badgeTipColor ?= #42b983 +$badgeTipDarkColor ?= $badgeTipColor + +$badgeWarningColor ?= darken(#ffe564, 35%) +$badgeWarningDarkColor ?= $badgeWarningColor + +$badgeErrorColor ?= #DA5961 +$badgeErrorDarkColor ?= $badgeErrorColor + +$preTextColor ?= #fff +$preTextLightColor ?= #4d4d4d + +$highlightedBgColor ?= rgba(0, 0, 0, .66) +$highlightedBgLightColor ?= rgba(224, 224, 224, 0.5) + +$languageTextColor ?= rgba(255, 255, 255, 0.4) +$languageTextLightColor ?= rgba(0, 0, 0, 0.4) + +$lineNumbersColor ?= rgba(255, 255, 255, 0.3) +$lineNumbersLightColor ?= rgba(0, 0, 0, 0.3) + +$miniCodeBgColor ?= rgba(27,31,35,0.05) +$miniCodeBgDarkColor ?= rgba(255,255,255,0.1) + +$bgColor ?= #fff +$bgDarkColor ?= #25272a + +$kbdBgColor ?= #eee +$kbdBgDarkColor ?= #444 + +$blockquoteTextColor ?= #999 +$blockquoteTextDarkColor ?= #eee + +$blockquoteBorderColor ?= #dfe2e5 +$blockquoteBorderDarkColor ?= #666b6f + +$tableBorderColor ?= #dfe2e5 +$tableBorderDarkColor ?= $borderDarkColor + +$tableStripeBgColor ?= #f6f8fa +$tableStripeBgDarkColor ?= #444 + +$tipColor ?= $textColor +$tipDarkColor ?= $textDarkColor + +$tipBgColor ?= #f3f5f7 +$tipBgDarkColor ?= #3e3b3b + +$warningColor ?= #e7c000 +$warningDarkColor ?= $warningColor + +$warningBgColor ?= rgba(255, 229, 100, 0.3) +$warningBgDarkColor ?= rgba(185, 174, 119, 0.3) + +$dangerColor ?= #c00 +$dangerDarkColor ?= $dangerColor + +$dangerBgColor ?= #ffe6e6 +$dangerBgDarkColor ?= rgba(72, 56, 57, 30%) + +$searchBorderColor ?= #999 +$searchBorderDarkColor ?= #eee