From a17c9c010918cf39bcc272da9d9b15799001f5b3 Mon Sep 17 00:00:00 2001
From: luckyasme <807254037@qq.com>
Date: Tue, 1 Jul 2025 14:36:06 +0800
Subject: [PATCH] =?UTF-8?q?sync:=20=E5=90=8C=E6=AD=A5website=E4=BB=A3?=
=?UTF-8?q?=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.gitignore | 12 +
.hugo_build.lock | 0
Dockerfile | 157 ++
LICENSE | 427 +++++
archetypes/default.md | 6 +
config.toml | 75 +
data/docsversion/93.yaml | 25 +
data/docsversion/94.yaml | 25 +
data/docsversion/95.yaml | 22 +
data/docsversion/96.yaml | 24 +
data/docsversion/97.yaml | 15 +
data/docsversion/98.yaml | 21 +
deploy/docs-builder.sh | 37 +
deploy/entrypoint.sh | 10 +
deploy/monitor.sh | 33 +
deploy/nginx.conf | 124 ++
i18n/en/en.toml | 388 +++++
i18n/zh/zh.toml | 400 +++++
layouts/404.html | 17 +
layouts/docs/baseof.html | 151 ++
layouts/docs/list.html | 5 +
layouts/docs/single.html | 10 +
layouts/index.html | 258 +++
layouts/partials/doc_hot.html | 28 +
layouts/partials/doc_map.html | 202 +++
.../partials/doc_map_22.03_LTS_SP1_en.html | 239 +++
layouts/partials/docs/docsVersion.html | 60 +
layouts/partials/docs/menu-bundle.html | 24 +
layouts/partials/docs/menu-filetree.html | 59 +
layouts/partials/docs/menu.html | 21 +
layouts/partials/docs/search.html | 7 +
layouts/partials/docs/title.html | 11 +
layouts/partials/float-mobile.html | 19 +
layouts/partials/float-popup.html | 42 +
layouts/partials/float.html | 55 +
layouts/partials/footer.html | 16 +
layouts/partials/h5_footer.html | 15 +
layouts/partials/head.html | 63 +
layouts/partials/inside-nav.html | 90 ++
layouts/partials/link.html | 38 +
layouts/partials/nav.html | 100 ++
layouts/partials/pcfooter.html | 62 +
layouts/partials/scripts.html | 233 +++
layouts/partials/search.html | 9 +
layouts/partials/slider.html | 68 +
layouts/partials/svg/icon-cancel.html | 3 +
layouts/partials/svg/icon-chat.html | 3 +
layouts/partials/svg/icon-close.html | 13 +
layouts/partials/svg/icon-done-solid.html | 3 +
layouts/partials/svg/icon-down.html | 4 +
layouts/partials/svg/icon-headset.html | 1 +
.../partials/svg/icon-quickissue_dark.html | 22 +
.../partials/svg/icon-quickissue_light.html | 17 +
layouts/partials/svg/icon-right.html | 6 +
layouts/partials/svg/icon-robot.html | 22 +
layouts/partials/svg/icon-robot_dark.html | 29 +
layouts/partials/svg/icon-smile-mobile.html | 19 +
layouts/partials/svg/icon-smile.html | 1 +
layouts/partials/svg/icon-tip.html | 3 +
layouts/partials/svg/icon-top.html | 4 +
layouts/partials/turn.html | 9 +
layouts/partials/version.html | 12 +
static/404.html | 44 +
static/baidu_verify_codeva-tt9d17tf7q.html | 1 +
static/css/common.css | 689 ++++++++
static/css/cookie.css | 340 ++++
static/css/doc_map.css | 141 ++
static/css/docdetail.css | 876 +++++++++++
static/css/docsearch.css | 220 +++
static/css/float.css | 1354 ++++++++++++++++
static/css/h5_footer.css | 61 +
static/css/highlightjs-theme.css | 203 +++
static/css/index.css | 761 +++++++++
static/css/login.css | 106 ++
static/css/markdown.css | 305 ++++
static/css/o_theme_dark.css | 1 +
static/css/o_theme_light.css | 1 +
static/css/pagination.css | 105 ++
static/css/pcfooter.css | 0
static/css/reset.css | 154 ++
static/css/revision_new.css | 1139 ++++++++++++++
static/css/theme.css | 290 ++++
static/error.html | 44 +
static/favicon.ico | Bin 0 -> 4286 bytes
static/fonts/Roboto-BoldCondensed.ttf | Bin 0 -> 161308 bytes
static/fonts/Roboto-Regular.ttf | Bin 0 -> 158604 bytes
static/img/404-banner.png | Bin 0 -> 252146 bytes
static/img/common/atom-logo-dark.svg | 52 +
static/img/common/atom.png | Bin 0 -> 26120 bytes
static/img/common/banner-bg.png | Bin 0 -> 39305 bytes
static/img/common/banner-iii.png | Bin 0 -> 19059 bytes
static/img/common/copied.png | Bin 0 -> 682 bytes
static/img/common/copy-success.png | Bin 0 -> 1255 bytes
static/img/common/copy.png | Bin 0 -> 582 bytes
static/img/common/docs-banner.png | Bin 0 -> 65252 bytes
static/img/common/down-dark.svg | 7 +
static/img/common/down.svg | 7 +
static/img/common/earth.svg | 1 +
static/img/common/footer-logo-dark.png | Bin 0 -> 2107 bytes
static/img/common/footer-logo.png | Bin 0 -> 6818 bytes
static/img/common/footerLogo.png | Bin 0 -> 2685 bytes
static/img/common/help-dark.png | Bin 0 -> 361 bytes
static/img/common/help.png | Bin 0 -> 735 bytes
static/img/common/help.svg | 1 +
static/img/common/icon-arrow-left1.svg | 4 +
static/img/common/icon-arrow-right-open.svg | 4 +
static/img/common/icon-arrow-right.svg | 4 +
static/img/common/icon-arrow-right1.svg | 4 +
static/img/common/icon-checkbox.svg | 5 +
static/img/common/icon-chevron-dark-gray.svg | 4 +
static/img/common/icon-chevron-right-dark.svg | 4 +
static/img/common/icon-chevron-right-gray.svg | 4 +
static/img/common/icon-chevron-right.svg | 4 +
static/img/common/icon-close-dark.svg | 11 +
static/img/common/icon-close-light.svg | 11 +
static/img/common/icon-down-dark.svg | 1 +
static/img/common/icon-down-light.svg | 1 +
static/img/common/icon-home.svg | 1 +
static/img/common/icon-user-dark.svg | 3 +
static/img/common/icon-user.svg | 3 +
static/img/common/lang.png | Bin 0 -> 1802 bytes
static/img/common/logo-doc.svg | 39 +
static/img/common/logo-h5.png | Bin 0 -> 1216 bytes
static/img/common/logo-mobile.svg | 35 +
static/img/common/logo-pc.png | Bin 0 -> 2928 bytes
static/img/common/logo.png | Bin 0 -> 5742 bytes
static/img/common/logo.svg | 29 +
static/img/common/moon.svg | 4 +
static/img/common/more-dark.svg | 11 +
static/img/common/more-light.svg | 11 +
static/img/common/more-version.svg | 11 +
static/img/common/new-banner1.png | Bin 0 -> 36554 bytes
static/img/common/new-banner2.png | Bin 0 -> 130300 bytes
static/img/common/openEuler Docs-dark.svg | 37 +
static/img/common/qrcode.png | Bin 0 -> 18178 bytes
static/img/common/rectangle.png | Bin 0 -> 20827 bytes
static/img/common/search.svg | 13 +
static/img/common/sun.svg | 5 +
static/img/common/tick.svg | 1 +
static/img/common/white_search.svg | 1 +
.../common/\347\274\226\347\273\204 14.svg" | 16 +
static/img/detail/1-star.png | Bin 0 -> 3163 bytes
static/img/detail/2-star.png | Bin 0 -> 2997 bytes
static/img/detail/3-star.png | Bin 0 -> 3055 bytes
static/img/detail/4-star.png | Bin 0 -> 3653 bytes
static/img/detail/5-star.png | Bin 0 -> 3205 bytes
static/img/detail/active-star.svg | 26 +
static/img/detail/blue-down.svg | 1 +
static/img/detail/blue-left.svg | 1 +
static/img/detail/blue-right.svg | 1 +
static/img/detail/bug-dark.svg | 1 +
static/img/detail/bug.svg | 1 +
static/img/detail/close.png | Bin 0 -> 208 bytes
static/img/detail/feedback-dark.svg | 13 +
static/img/detail/feedback-light.svg | 13 +
static/img/detail/feedback.png | Bin 0 -> 1025 bytes
static/img/detail/icon-next.svg | 1 +
static/img/detail/icon-prev.svg | 1 +
static/img/detail/icon-right.svg | 1 +
static/img/detail/icon-star.svg | 17 +
static/img/detail/inside1.png | Bin 0 -> 2834 bytes
static/img/detail/inside2.png | Bin 0 -> 2345 bytes
static/img/detail/inside3.png | Bin 0 -> 2556 bytes
static/img/detail/loading.gif | Bin 0 -> 61050 bytes
static/img/detail/pr-tip.gif | Bin 0 -> 3599207 bytes
static/img/detail/slash.png | Bin 0 -> 584 bytes
static/img/detail/source-code-dark.svg | 13 +
static/img/detail/source-code-light.svg | 13 +
static/img/detail/source-code.png | Bin 0 -> 944 bytes
static/img/detail/v-icon-down.svg | 1 +
static/img/doc-map/bg-1.png | Bin 0 -> 124967 bytes
static/img/float/bug-bg-hover.png | Bin 0 -> 1724 bytes
static/img/float/bug-bg.png | Bin 0 -> 1524 bytes
static/img/float/icon-chat.svg | 3 +
static/img/float/icon-headset.svg | 1 +
static/img/float/icon-quickissue_dark.svg | 23 +
static/img/float/icon-quickissue_light.svg | 18 +
static/img/float/icon-robot_dark.svg | 30 +
static/img/float/icon-robot_light.svg | 23 +
static/img/float/icon-smile.svg | 1 +
static/img/float/icon-top.svg | 1 +
static/img/footer/51cto.png | Bin 0 -> 3977 bytes
static/img/footer/atom-logo.png | Bin 0 -> 7407 bytes
static/img/footer/atom-logo.svg | 16 +
static/img/footer/bilibili.png | Bin 0 -> 2841 bytes
static/img/footer/code-xzs.png | Bin 0 -> 16872 bytes
static/img/footer/code-zgz.png | Bin 0 -> 27168 bytes
static/img/footer/csdn.png | Bin 0 -> 3116 bytes
static/img/footer/footer-logo2-mo.png | Bin 0 -> 2458 bytes
static/img/footer/footer-logo2.png | Bin 0 -> 6818 bytes
static/img/footer/img-gzh.png | Bin 0 -> 6100 bytes
static/img/footer/img-xzs.png | Bin 0 -> 5778 bytes
static/img/footer/infoq.png | Bin 0 -> 2108 bytes
static/img/footer/juejin.png | Bin 0 -> 4108 bytes
static/img/footer/linkededin.png | Bin 0 -> 383 bytes
static/img/footer/oschina.png | Bin 0 -> 3761 bytes
static/img/footer/police.png | Bin 0 -> 2715 bytes
static/img/footer/reddit.png | Bin 0 -> 526 bytes
static/img/footer/twitter.png | Bin 0 -> 390 bytes
static/img/footer/youtube.png | Bin 0 -> 1166 bytes
static/img/list/develop.png | Bin 0 -> 1687 bytes
static/img/list/earth.png | Bin 0 -> 6615 bytes
static/img/list/earth.svg | 1 +
static/img/list/install.png | Bin 0 -> 1045 bytes
static/img/list/konw.png | Bin 0 -> 2427 bytes
static/img/list/kunpeng.png | Bin 0 -> 5046 bytes
static/img/list/kunpeng2.png | Bin 0 -> 1364 bytes
static/img/list/manage.png | Bin 0 -> 3166 bytes
static/img/list/migrate.png | Bin 0 -> 1598 bytes
static/img/list/use.png | Bin 0 -> 1109 bytes
static/img/menu/icon-close-h5.svg | 26 +
static/img/menu/icon-down-h5.svg | 17 +
static/img/menu/icon-right-h5.svg | 38 +
static/img/menu/menu-icon-down-h5.svg | 41 +
static/img/search/icon-close.svg | 1 +
static/img/search/no-data.png | Bin 0 -> 42527 bytes
static/img/search/search-dark.svg | 4 +
static/img/search/search.svg | 4 +
static/js/analytics.js | 6 +
static/js/common.js | 242 +++
static/js/cookie-notice.js | 430 +++++
static/js/docdetail.js | 143 ++
static/js/docsearch.js | 232 +++
static/js/float.js | 572 +++++++
static/js/highlight.min.js | 1396 +++++++++++++++++
static/js/init-theme.js | 25 +
static/js/jquery.min.js | 2 +
static/js/jstree.min.js | 3 +
static/js/login.js | 233 +++
static/js/modules/analytics.js | 97 ++
static/js/pagination.js | 348 ++++
static/js/version.js | 31 +
static/js/version_data.js | 174 ++
static/logo.png | Bin 0 -> 6032 bytes
static/openeuler.png | Bin 0 -> 8315 bytes
235 files changed, 15344 insertions(+)
create mode 100644 .gitignore
create mode 100644 .hugo_build.lock
create mode 100644 Dockerfile
create mode 100644 LICENSE
create mode 100644 archetypes/default.md
create mode 100644 config.toml
create mode 100644 data/docsversion/93.yaml
create mode 100644 data/docsversion/94.yaml
create mode 100644 data/docsversion/95.yaml
create mode 100644 data/docsversion/96.yaml
create mode 100644 data/docsversion/97.yaml
create mode 100644 data/docsversion/98.yaml
create mode 100644 deploy/docs-builder.sh
create mode 100644 deploy/entrypoint.sh
create mode 100644 deploy/monitor.sh
create mode 100644 deploy/nginx.conf
create mode 100644 i18n/en/en.toml
create mode 100644 i18n/zh/zh.toml
create mode 100644 layouts/404.html
create mode 100644 layouts/docs/baseof.html
create mode 100644 layouts/docs/list.html
create mode 100644 layouts/docs/single.html
create mode 100644 layouts/index.html
create mode 100644 layouts/partials/doc_hot.html
create mode 100644 layouts/partials/doc_map.html
create mode 100644 layouts/partials/doc_map_22.03_LTS_SP1_en.html
create mode 100644 layouts/partials/docs/docsVersion.html
create mode 100644 layouts/partials/docs/menu-bundle.html
create mode 100644 layouts/partials/docs/menu-filetree.html
create mode 100644 layouts/partials/docs/menu.html
create mode 100644 layouts/partials/docs/search.html
create mode 100644 layouts/partials/docs/title.html
create mode 100644 layouts/partials/float-mobile.html
create mode 100644 layouts/partials/float-popup.html
create mode 100644 layouts/partials/float.html
create mode 100644 layouts/partials/footer.html
create mode 100644 layouts/partials/h5_footer.html
create mode 100644 layouts/partials/head.html
create mode 100644 layouts/partials/inside-nav.html
create mode 100644 layouts/partials/link.html
create mode 100644 layouts/partials/nav.html
create mode 100644 layouts/partials/pcfooter.html
create mode 100644 layouts/partials/scripts.html
create mode 100644 layouts/partials/search.html
create mode 100644 layouts/partials/slider.html
create mode 100644 layouts/partials/svg/icon-cancel.html
create mode 100644 layouts/partials/svg/icon-chat.html
create mode 100644 layouts/partials/svg/icon-close.html
create mode 100644 layouts/partials/svg/icon-done-solid.html
create mode 100644 layouts/partials/svg/icon-down.html
create mode 100644 layouts/partials/svg/icon-headset.html
create mode 100644 layouts/partials/svg/icon-quickissue_dark.html
create mode 100644 layouts/partials/svg/icon-quickissue_light.html
create mode 100644 layouts/partials/svg/icon-right.html
create mode 100644 layouts/partials/svg/icon-robot.html
create mode 100644 layouts/partials/svg/icon-robot_dark.html
create mode 100644 layouts/partials/svg/icon-smile-mobile.html
create mode 100644 layouts/partials/svg/icon-smile.html
create mode 100644 layouts/partials/svg/icon-tip.html
create mode 100644 layouts/partials/svg/icon-top.html
create mode 100644 layouts/partials/turn.html
create mode 100644 layouts/partials/version.html
create mode 100644 static/404.html
create mode 100644 static/baidu_verify_codeva-tt9d17tf7q.html
create mode 100644 static/css/common.css
create mode 100644 static/css/cookie.css
create mode 100644 static/css/doc_map.css
create mode 100644 static/css/docdetail.css
create mode 100644 static/css/docsearch.css
create mode 100644 static/css/float.css
create mode 100644 static/css/h5_footer.css
create mode 100644 static/css/highlightjs-theme.css
create mode 100644 static/css/index.css
create mode 100644 static/css/login.css
create mode 100644 static/css/markdown.css
create mode 100644 static/css/o_theme_dark.css
create mode 100644 static/css/o_theme_light.css
create mode 100644 static/css/pagination.css
create mode 100644 static/css/pcfooter.css
create mode 100644 static/css/reset.css
create mode 100644 static/css/revision_new.css
create mode 100644 static/css/theme.css
create mode 100644 static/error.html
create mode 100644 static/favicon.ico
create mode 100644 static/fonts/Roboto-BoldCondensed.ttf
create mode 100644 static/fonts/Roboto-Regular.ttf
create mode 100644 static/img/404-banner.png
create mode 100644 static/img/common/atom-logo-dark.svg
create mode 100644 static/img/common/atom.png
create mode 100644 static/img/common/banner-bg.png
create mode 100644 static/img/common/banner-iii.png
create mode 100644 static/img/common/copied.png
create mode 100644 static/img/common/copy-success.png
create mode 100644 static/img/common/copy.png
create mode 100644 static/img/common/docs-banner.png
create mode 100644 static/img/common/down-dark.svg
create mode 100644 static/img/common/down.svg
create mode 100644 static/img/common/earth.svg
create mode 100644 static/img/common/footer-logo-dark.png
create mode 100644 static/img/common/footer-logo.png
create mode 100644 static/img/common/footerLogo.png
create mode 100644 static/img/common/help-dark.png
create mode 100644 static/img/common/help.png
create mode 100644 static/img/common/help.svg
create mode 100644 static/img/common/icon-arrow-left1.svg
create mode 100644 static/img/common/icon-arrow-right-open.svg
create mode 100644 static/img/common/icon-arrow-right.svg
create mode 100644 static/img/common/icon-arrow-right1.svg
create mode 100644 static/img/common/icon-checkbox.svg
create mode 100644 static/img/common/icon-chevron-dark-gray.svg
create mode 100644 static/img/common/icon-chevron-right-dark.svg
create mode 100644 static/img/common/icon-chevron-right-gray.svg
create mode 100644 static/img/common/icon-chevron-right.svg
create mode 100644 static/img/common/icon-close-dark.svg
create mode 100644 static/img/common/icon-close-light.svg
create mode 100644 static/img/common/icon-down-dark.svg
create mode 100644 static/img/common/icon-down-light.svg
create mode 100644 static/img/common/icon-home.svg
create mode 100644 static/img/common/icon-user-dark.svg
create mode 100644 static/img/common/icon-user.svg
create mode 100644 static/img/common/lang.png
create mode 100644 static/img/common/logo-doc.svg
create mode 100644 static/img/common/logo-h5.png
create mode 100644 static/img/common/logo-mobile.svg
create mode 100644 static/img/common/logo-pc.png
create mode 100644 static/img/common/logo.png
create mode 100644 static/img/common/logo.svg
create mode 100644 static/img/common/moon.svg
create mode 100644 static/img/common/more-dark.svg
create mode 100644 static/img/common/more-light.svg
create mode 100644 static/img/common/more-version.svg
create mode 100644 static/img/common/new-banner1.png
create mode 100644 static/img/common/new-banner2.png
create mode 100644 static/img/common/openEuler Docs-dark.svg
create mode 100644 static/img/common/qrcode.png
create mode 100644 static/img/common/rectangle.png
create mode 100644 static/img/common/search.svg
create mode 100644 static/img/common/sun.svg
create mode 100644 static/img/common/tick.svg
create mode 100644 static/img/common/white_search.svg
create mode 100644 "static/img/common/\347\274\226\347\273\204 14.svg"
create mode 100644 static/img/detail/1-star.png
create mode 100644 static/img/detail/2-star.png
create mode 100644 static/img/detail/3-star.png
create mode 100644 static/img/detail/4-star.png
create mode 100644 static/img/detail/5-star.png
create mode 100644 static/img/detail/active-star.svg
create mode 100644 static/img/detail/blue-down.svg
create mode 100644 static/img/detail/blue-left.svg
create mode 100644 static/img/detail/blue-right.svg
create mode 100644 static/img/detail/bug-dark.svg
create mode 100644 static/img/detail/bug.svg
create mode 100644 static/img/detail/close.png
create mode 100644 static/img/detail/feedback-dark.svg
create mode 100644 static/img/detail/feedback-light.svg
create mode 100644 static/img/detail/feedback.png
create mode 100644 static/img/detail/icon-next.svg
create mode 100644 static/img/detail/icon-prev.svg
create mode 100644 static/img/detail/icon-right.svg
create mode 100644 static/img/detail/icon-star.svg
create mode 100644 static/img/detail/inside1.png
create mode 100644 static/img/detail/inside2.png
create mode 100644 static/img/detail/inside3.png
create mode 100644 static/img/detail/loading.gif
create mode 100644 static/img/detail/pr-tip.gif
create mode 100644 static/img/detail/slash.png
create mode 100644 static/img/detail/source-code-dark.svg
create mode 100644 static/img/detail/source-code-light.svg
create mode 100644 static/img/detail/source-code.png
create mode 100644 static/img/detail/v-icon-down.svg
create mode 100644 static/img/doc-map/bg-1.png
create mode 100644 static/img/float/bug-bg-hover.png
create mode 100644 static/img/float/bug-bg.png
create mode 100644 static/img/float/icon-chat.svg
create mode 100644 static/img/float/icon-headset.svg
create mode 100644 static/img/float/icon-quickissue_dark.svg
create mode 100644 static/img/float/icon-quickissue_light.svg
create mode 100644 static/img/float/icon-robot_dark.svg
create mode 100644 static/img/float/icon-robot_light.svg
create mode 100644 static/img/float/icon-smile.svg
create mode 100644 static/img/float/icon-top.svg
create mode 100644 static/img/footer/51cto.png
create mode 100644 static/img/footer/atom-logo.png
create mode 100644 static/img/footer/atom-logo.svg
create mode 100644 static/img/footer/bilibili.png
create mode 100644 static/img/footer/code-xzs.png
create mode 100644 static/img/footer/code-zgz.png
create mode 100644 static/img/footer/csdn.png
create mode 100644 static/img/footer/footer-logo2-mo.png
create mode 100644 static/img/footer/footer-logo2.png
create mode 100644 static/img/footer/img-gzh.png
create mode 100644 static/img/footer/img-xzs.png
create mode 100644 static/img/footer/infoq.png
create mode 100644 static/img/footer/juejin.png
create mode 100644 static/img/footer/linkededin.png
create mode 100644 static/img/footer/oschina.png
create mode 100644 static/img/footer/police.png
create mode 100644 static/img/footer/reddit.png
create mode 100644 static/img/footer/twitter.png
create mode 100644 static/img/footer/youtube.png
create mode 100644 static/img/list/develop.png
create mode 100644 static/img/list/earth.png
create mode 100644 static/img/list/earth.svg
create mode 100644 static/img/list/install.png
create mode 100644 static/img/list/konw.png
create mode 100644 static/img/list/kunpeng.png
create mode 100644 static/img/list/kunpeng2.png
create mode 100644 static/img/list/manage.png
create mode 100644 static/img/list/migrate.png
create mode 100644 static/img/list/use.png
create mode 100644 static/img/menu/icon-close-h5.svg
create mode 100644 static/img/menu/icon-down-h5.svg
create mode 100644 static/img/menu/icon-right-h5.svg
create mode 100644 static/img/menu/menu-icon-down-h5.svg
create mode 100644 static/img/search/icon-close.svg
create mode 100644 static/img/search/no-data.png
create mode 100644 static/img/search/search-dark.svg
create mode 100644 static/img/search/search.svg
create mode 100644 static/js/analytics.js
create mode 100644 static/js/common.js
create mode 100644 static/js/cookie-notice.js
create mode 100644 static/js/docdetail.js
create mode 100644 static/js/docsearch.js
create mode 100644 static/js/float.js
create mode 100644 static/js/highlight.min.js
create mode 100644 static/js/init-theme.js
create mode 100644 static/js/jquery.min.js
create mode 100644 static/js/jstree.min.js
create mode 100644 static/js/login.js
create mode 100644 static/js/modules/analytics.js
create mode 100644 static/js/pagination.js
create mode 100644 static/js/version.js
create mode 100644 static/js/version_data.js
create mode 100644 static/logo.png
create mode 100644 static/openeuler.png
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..05b5e1d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+.DS_Store
+*/.DS_Store
+*.pyc
+*.vscode
+/content
+/web-ui/node_modules
+/web-ui/package-lock.json
+public
+layouts/partials/docs/test-list.html
+layouts/partials/docs/test-list2.html
+node_modules
+app/**
\ No newline at end of file
diff --git a/.hugo_build.lock b/.hugo_build.lock
new file mode 100644
index 0000000..e69de29
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..1f09a4c
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,157 @@
+FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/openeuler/nginx-hugo:latest as NginxBuilder
+
+FROM swr.cn-north-4.myhuaweicloud.com/opensourceway/openeuler/base:latest
+
+ENV NGINX_CONFIG_FILE /etc/nginx/nginx.conf
+ENV NGINX_CONFIG_PATH /etc/nginx/
+ENV NGINX_PID /var/run/nginx.pid
+ENV NGINX_USER nginx
+ENV NGINX_GROUP nginx
+ENV NGINX_BIN /usr/share/nginx/sbin/
+ENV NGINX_HOME /usr/share/nginx/
+ENV NGINX_EXE_FILE /usr/share/nginx/sbin/nginx
+ENV DST_PATH /etc/nginx/cert
+
+COPY --from=NginxBuilder /usr/share/nginx /usr/share/nginx
+COPY --from=NginxBuilder /usr/share/nginx/sbin/nginx /usr/share/nginx/sbin/nginx
+COPY --from=NginxBuilder /etc/nginx/modules /etc/nginx/modules
+COPY --from=NginxBuilder /etc/nginx/geoip /etc/nginx/geoip
+COPY --from=NginxBuilder /etc/nginx/mime.types /etc/nginx/mime.types
+COPY --from=NginxBuilder /usr/bin/hugo /usr/bin/hugo
+COPY ./deploy/monitor.sh ./deploy/entrypoint.sh /etc/nginx/
+COPY ./deploy/nginx.conf /etc/nginx/nginx.conf.template
+
+RUN mkdir -p /src/
+COPY . /src/website
+
+RUN cd /src/website && hugo -b / --minify && \
+ mkdir -p /usr/share/nginx/www && \
+ cp -rf /src/website/public/* /usr/share/nginx/www/ && \
+ rm -rf /src/*
+
+RUN sed -i "s|repo.openeuler.org|mirrors.nju.edu.cn/openeuler|g" /etc/yum.repos.d/openEuler.repo \
+ && sed -i '/metalink/d' /etc/yum.repos.d/openEuler.repo \
+ && sed -i '/metadata_expire/d' /etc/yum.repos.d/openEuler.repo \
+ && yum update -y \
+ && yum install -y findutils passwd shadow pcre-devel net-tools libmaxminddb libmaxminddb-devel \
+ && find /usr/share/nginx/www -type d -print0| xargs -0 chmod 500 \
+ && find /usr/share/nginx/www -type f -print0| xargs -0 chmod 400 \
+ && touch /var/run/nginx.pid \
+ && groupadd -g 1000 nginx \
+ && useradd -u 1000 -g nginx -s /sbin/nologin nginx \
+ && sed -i '/^PATH="\$HOME\/\.local\/bin:\$HOME\/bin:\$PATH"/d; /^export PATH/d' /home/nginx/.bashrc \
+ && chmod 750 /usr \
+ && chmod 550 /usr/share \
+ && chown -R nginx:nginx /usr/share/nginx \
+ && find /usr/share/nginx -type d -print0 | xargs -0 chmod 500 \
+ && chmod 500 /usr/share/nginx/sbin/nginx \
+ && mkdir -p /var/log/nginx \
+ && mkdir -p /etc/nginx/cert \
+ && chown -R nginx:nginx /etc/nginx/cert \
+ && chmod -R 700 /etc/nginx/cert \
+ && chown -R nginx:nginx /var/log/nginx \
+ && chmod -R 640 /var/log/nginx \
+ && touch /var/log/nginx/error.log \
+ && touch /var/log/nginx/access.log \
+ && chmod 640 /var/log/nginx/error.log \
+ && chmod 640 /var/log/nginx/access.log \
+ && chmod 640 /var/log/dnf.librepo.log \
+ && chmod 640 /var/log/dnf.log \
+ && chmod 640 /var/log/dnf.rpm.log \
+ && chmod 640 /var/log/hawkey.log \
+ && chmod 640 /var/log/*.log \
+ && chmod 440 /etc/nginx/nginx*.conf* \
+ && chown -R nginx:nginx /var/log/nginx/* \
+ && mkdir -p /var/lib/nginx/tmp/client_body \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/client_body \
+ && mkdir -p /var/lib/nginx/tmp/fastcgi \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/fastcgi \
+ && mkdir -p /var/lib/nginx/tmp/proxy \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/proxy \
+ && mkdir -p /var/lib/nginx/tmp/scgi \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/scgi \
+ && mkdir -p /var/lib/nginx/tmp/uwsgi \
+ && chown -R nginx:nginx /var/lib/nginx/tmp/uwsgi \
+ && chmod -R 500 /var/lib/nginx/ \
+ && chmod -R 750 /var/lib/nginx/tmp/proxy \
+ && chown -R nginx:nginx /var/lib/nginx/ \
+ && chown -R nginx:nginx /var/run/nginx.pid \
+ && chmod 640 /var/run/nginx.pid \
+ && chown -R nginx:nginx /etc/nginx \
+ && chmod 550 /etc/nginx \
+ && chmod 550 /etc/nginx/geoip/ \
+ && chmod 440 /etc/nginx/geoip/* \
+ && chmod 550 /etc/nginx/modules \
+ && chmod 440 /etc/nginx/modules/* \
+ && touch /etc/nginx/nginx.conf \
+ && chown nginx:nginx /etc/nginx/nginx.conf \
+ && chmod 640 /etc/nginx/nginx.conf \
+ && chmod 640 /etc/nginx/nginx.conf.template \
+ && chmod 440 /etc/nginx/mime.types \
+ && chmod 700 /var/lib/nginx/tmp/client_body \
+ && lsd() { \
+ local v="$1"; \
+ ls -ld "$v"; \
+ while :; do \
+ v="${v%/*}"; \
+ [[ "$v" && ! -f "$v" ]] || break; \
+ chown root:root "$v"; \
+ done; \
+ }; lsd "$NGINX_HOME" \
+ && lsd() { \
+ local v="$1"; \
+ ls -ld $v; \
+ while :; do \
+ v="${v%/*}"; \
+ [[ "$v" && ! -f "$v" ]] || break; \
+ chmod 550 "$v"; \
+ done; \
+ }; lsd $NGINX_HOME \
+ && lsd() { \
+ local v="$1"; \
+ ls -ld $v; \
+ while :; do \
+ v="${v%/*}"; \
+ [[ "$v" && ! -f "$v" ]] || break; \
+ chown $NGINX_USER:$NGINX_GROUP "$v"; \
+ done; \
+ }; lsd $NGINX_HOME \
+ && rm -rf /usr/share/nginx/html/ \
+ && rm -rf /usr/share/nginx/logs/ \
+ && echo "umask 0027" >> /etc/bashrc \
+ && echo "set +o history" >> /etc/bashrc \
+ && sed -i "s|HISTSIZE=1000|HISTSIZE=0|" /etc/profile \
+ && sed -i "s/PASS_MAX_DAYS.*/PASS_MAX_DAYS 30/" /etc/login.defs \
+ && echo "ALWAYS_SET_PATH yes" >> /etc/login.defs \
+ && chage --maxdays 30 nginx \
+ && passwd -l $NGINX_USER \
+ && yum clean all \
+ && usermod -s /sbin/nologin sync \
+ && usermod -s /sbin/nologin shutdown \
+ && usermod -s /sbin/nologin halt \
+ && echo "export TMOUT=1800 readonly TMOUT" >> /etc/profile \
+ && rm -rf /usr/bin/gdb* \
+ && rm -rf /usr/share/gdb \
+ && rm -rf /usr/share/gcc* \
+ && rm -rf /usr/lib64/python3.11/bdb.py \
+ && rm -rf /usr/lib64/python3.11/pdb.py \
+ && rm -rf /usr/lib64/python3.11/timeit.py \
+ && rm -rf /usr/lib64/python3.11/trace.py \
+ && rm -rf /usr/lib64/python3.11/tracemalloc.py \
+ && rm -rf /usr/share/licenses/glibc \
+ && rm -rf /usr/share/locale/ar \
+ && rm -rf /usr/share/locale/cpp \
+ && yum remove gdb-gdbserver findutils passwd shadow -y
+
+RUN chmod 500 /etc/nginx/monitor.sh \
+ && chmod 500 /etc/nginx/entrypoint.sh \
+ && chown nginx:nginx /etc/nginx/monitor.sh \
+ && chown nginx:nginx /etc/nginx/entrypoint.sh \
+ && sed -i "/PATH=/d" /home/nginx/.bashrc \
+ && source /home/nginx/.bashrc
+
+EXPOSE 8080
+
+USER nginx
+
+ENTRYPOINT ["/etc/nginx/entrypoint.sh"]
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..2310559
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,427 @@
+Attribution-ShareAlike 4.0 International
+
+=======================================================================
+
+Creative Commons Corporation ("Creative Commons") is not a law firm and
+does not provide legal services or legal advice. Distribution of
+Creative Commons public licenses does not create a lawyer-client or
+other relationship. Creative Commons makes its licenses and related
+information available on an "as-is" basis. Creative Commons gives no
+warranties regarding its licenses, any material licensed under their
+terms and conditions, or any related information. Creative Commons
+disclaims all liability for damages resulting from their use to the
+fullest extent possible.
+
+Using Creative Commons Public Licenses
+
+Creative Commons public licenses provide a standard set of terms and
+conditions that creators and other rights holders may use to share
+original works of authorship and other material subject to copyright
+and certain other rights specified in the public license below. The
+following considerations are for informational purposes only, are not
+exhaustive, and do not form part of our licenses.
+
+ Considerations for licensors: Our public licenses are
+ intended for use by those authorized to give the public
+ permission to use material in ways otherwise restricted by
+ copyright and certain other rights. Our licenses are
+ irrevocable. Licensors should read and understand the terms
+ and conditions of the license they choose before applying it.
+ Licensors should also secure all rights necessary before
+ applying our licenses so that the public can reuse the
+ material as expected. Licensors should clearly mark any
+ material not subject to the license. This includes other CC-
+ licensed material, or material used under an exception or
+ limitation to copyright. More considerations for licensors:
+ wiki.creativecommons.org/Considerations_for_licensors
+
+ Considerations for the public: By using one of our public
+ licenses, a licensor grants the public permission to use the
+ licensed material under specified terms and conditions. If
+ the licensor's permission is not necessary for any reason--for
+ example, because of any applicable exception or limitation to
+ copyright--then that use is not regulated by the license. Our
+ licenses grant only permissions under copyright and certain
+ other rights that a licensor has authority to grant. Use of
+ the licensed material may still be restricted for other
+ reasons, including because others have copyright or other
+ rights in the material. A licensor may make special requests,
+ such as asking that all changes be marked or described.
+ Although not required by our licenses, you are encouraged to
+ respect those requests where reasonable. More_considerations
+ for the public:
+ wiki.creativecommons.org/Considerations_for_licensees
+
+=======================================================================
+
+Creative Commons Attribution-ShareAlike 4.0 International Public
+License
+
+By exercising the Licensed Rights (defined below), You accept and agree
+to be bound by the terms and conditions of this Creative Commons
+Attribution-ShareAlike 4.0 International Public License ("Public
+License"). To the extent this Public License may be interpreted as a
+contract, You are granted the Licensed Rights in consideration of Your
+acceptance of these terms and conditions, and the Licensor grants You
+such rights in consideration of benefits the Licensor receives from
+making the Licensed Material available under these terms and
+conditions.
+
+
+Section 1 -- Definitions.
+
+ a. Adapted Material means material subject to Copyright and Similar
+ Rights that is derived from or based upon the Licensed Material
+ and in which the Licensed Material is translated, altered,
+ arranged, transformed, or otherwise modified in a manner requiring
+ permission under the Copyright and Similar Rights held by the
+ Licensor. For purposes of this Public License, where the Licensed
+ Material is a musical work, performance, or sound recording,
+ Adapted Material is always produced where the Licensed Material is
+ synched in timed relation with a moving image.
+
+ b. Adapter's License means the license You apply to Your Copyright
+ and Similar Rights in Your contributions to Adapted Material in
+ accordance with the terms and conditions of this Public License.
+
+ c. BY-SA Compatible License means a license listed at
+ creativecommons.org/compatiblelicenses, approved by Creative
+ Commons as essentially the equivalent of this Public License.
+
+ d. Copyright and Similar Rights means copyright and/or similar rights
+ closely related to copyright including, without limitation,
+ performance, broadcast, sound recording, and Sui Generis Database
+ Rights, without regard to how the rights are labeled or
+ categorized. For purposes of this Public License, the rights
+ specified in Section 2(b)(1)-(2) are not Copyright and Similar
+ Rights.
+
+ e. Effective Technological Measures means those measures that, in the
+ absence of proper authority, may not be circumvented under laws
+ fulfilling obligations under Article 11 of the WIPO Copyright
+ Treaty adopted on December 20, 1996, and/or similar international
+ agreements.
+
+ f. Exceptions and Limitations means fair use, fair dealing, and/or
+ any other exception or limitation to Copyright and Similar Rights
+ that applies to Your use of the Licensed Material.
+
+ g. License Elements means the license attributes listed in the name
+ of a Creative Commons Public License. The License Elements of this
+ Public License are Attribution and ShareAlike.
+
+ h. Licensed Material means the artistic or literary work, database,
+ or other material to which the Licensor applied this Public
+ License.
+
+ i. Licensed Rights means the rights granted to You subject to the
+ terms and conditions of this Public License, which are limited to
+ all Copyright and Similar Rights that apply to Your use of the
+ Licensed Material and that the Licensor has authority to license.
+
+ j. Licensor means the individual(s) or entity(ies) granting rights
+ under this Public License.
+
+ k. Share means to provide material to the public by any means or
+ process that requires permission under the Licensed Rights, such
+ as reproduction, public display, public performance, distribution,
+ dissemination, communication, or importation, and to make material
+ available to the public including in ways that members of the
+ public may access the material from a place and at a time
+ individually chosen by them.
+
+ l. Sui Generis Database Rights means rights other than copyright
+ resulting from Directive 96/9/EC of the European Parliament and of
+ the Council of 11 March 1996 on the legal protection of databases,
+ as amended and/or succeeded, as well as other essentially
+ equivalent rights anywhere in the world.
+
+ m. You means the individual or entity exercising the Licensed Rights
+ under this Public License. Your has a corresponding meaning.
+
+
+Section 2 -- Scope.
+
+ a. License grant.
+
+ 1. Subject to the terms and conditions of this Public License,
+ the Licensor hereby grants You a worldwide, royalty-free,
+ non-sublicensable, non-exclusive, irrevocable license to
+ exercise the Licensed Rights in the Licensed Material to:
+
+ a. reproduce and Share the Licensed Material, in whole or
+ in part; and
+
+ b. produce, reproduce, and Share Adapted Material.
+
+ 2. Exceptions and Limitations. For the avoidance of doubt, where
+ Exceptions and Limitations apply to Your use, this Public
+ License does not apply, and You do not need to comply with
+ its terms and conditions.
+
+ 3. Term. The term of this Public License is specified in Section
+ 6(a).
+
+ 4. Media and formats; technical modifications allowed. The
+ Licensor authorizes You to exercise the Licensed Rights in
+ all media and formats whether now known or hereafter created,
+ and to make technical modifications necessary to do so. The
+ Licensor waives and/or agrees not to assert any right or
+ authority to forbid You from making technical modifications
+ necessary to exercise the Licensed Rights, including
+ technical modifications necessary to circumvent Effective
+ Technological Measures. For purposes of this Public License,
+ simply making modifications authorized by this Section 2(a)
+ (4) never produces Adapted Material.
+
+ 5. Downstream recipients.
+
+ a. Offer from the Licensor -- Licensed Material. Every
+ recipient of the Licensed Material automatically
+ receives an offer from the Licensor to exercise the
+ Licensed Rights under the terms and conditions of this
+ Public License.
+
+ b. Additional offer from the Licensor -- Adapted Material.
+ Every recipient of Adapted Material from You
+ automatically receives an offer from the Licensor to
+ exercise the Licensed Rights in the Adapted Material
+ under the conditions of the Adapter's License You apply.
+
+ c. No downstream restrictions. You may not offer or impose
+ any additional or different terms or conditions on, or
+ apply any Effective Technological Measures to, the
+ Licensed Material if doing so restricts exercise of the
+ Licensed Rights by any recipient of the Licensed
+ Material.
+
+ 6. No endorsement. Nothing in this Public License constitutes or
+ may be construed as permission to assert or imply that You
+ are, or that Your use of the Licensed Material is, connected
+ with, or sponsored, endorsed, or granted official status by,
+ the Licensor or others designated to receive attribution as
+ provided in Section 3(a)(1)(A)(i).
+
+ b. Other rights.
+
+ 1. Moral rights, such as the right of integrity, are not
+ licensed under this Public License, nor are publicity,
+ privacy, and/or other similar personality rights; however, to
+ the extent possible, the Licensor waives and/or agrees not to
+ assert any such rights held by the Licensor to the limited
+ extent necessary to allow You to exercise the Licensed
+ Rights, but not otherwise.
+
+ 2. Patent and trademark rights are not licensed under this
+ Public License.
+
+ 3. To the extent possible, the Licensor waives any right to
+ collect royalties from You for the exercise of the Licensed
+ Rights, whether directly or through a collecting society
+ under any voluntary or waivable statutory or compulsory
+ licensing scheme. In all other cases the Licensor expressly
+ reserves any right to collect such royalties.
+
+
+Section 3 -- License Conditions.
+
+Your exercise of the Licensed Rights is expressly made subject to the
+following conditions.
+
+ a. Attribution.
+
+ 1. If You Share the Licensed Material (including in modified
+ form), You must:
+
+ a. retain the following if it is supplied by the Licensor
+ with the Licensed Material:
+
+ i. identification of the creator(s) of the Licensed
+ Material and any others designated to receive
+ attribution, in any reasonable manner requested by
+ the Licensor (including by pseudonym if
+ designated);
+
+ ii. a copyright notice;
+
+ iii. a notice that refers to this Public License;
+
+ iv. a notice that refers to the disclaimer of
+ warranties;
+
+ v. a URI or hyperlink to the Licensed Material to the
+ extent reasonably practicable;
+
+ b. indicate if You modified the Licensed Material and
+ retain an indication of any previous modifications; and
+
+ c. indicate the Licensed Material is licensed under this
+ Public License, and include the text of, or the URI or
+ hyperlink to, this Public License.
+
+ 2. You may satisfy the conditions in Section 3(a)(1) in any
+ reasonable manner based on the medium, means, and context in
+ which You Share the Licensed Material. For example, it may be
+ reasonable to satisfy the conditions by providing a URI or
+ hyperlink to a resource that includes the required
+ information.
+
+ 3. If requested by the Licensor, You must remove any of the
+ information required by Section 3(a)(1)(A) to the extent
+ reasonably practicable.
+
+ b. ShareAlike.
+
+ In addition to the conditions in Section 3(a), if You Share
+ Adapted Material You produce, the following conditions also apply.
+
+ 1. The Adapter's License You apply must be a Creative Commons
+ license with the same License Elements, this version or
+ later, or a BY-SA Compatible License.
+
+ 2. You must include the text of, or the URI or hyperlink to, the
+ Adapter's License You apply. You may satisfy this condition
+ in any reasonable manner based on the medium, means, and
+ context in which You Share Adapted Material.
+
+ 3. You may not offer or impose any additional or different terms
+ or conditions on, or apply any Effective Technological
+ Measures to, Adapted Material that restrict exercise of the
+ rights granted under the Adapter's License You apply.
+
+
+Section 4 -- Sui Generis Database Rights.
+
+Where the Licensed Rights include Sui Generis Database Rights that
+apply to Your use of the Licensed Material:
+
+ a. for the avoidance of doubt, Section 2(a)(1) grants You the right
+ to extract, reuse, reproduce, and Share all or a substantial
+ portion of the contents of the database;
+
+ b. if You include all or a substantial portion of the database
+ contents in a database in which You have Sui Generis Database
+ Rights, then the database in which You have Sui Generis Database
+ Rights (but not its individual contents) is Adapted Material,
+
+ including for purposes of Section 3(b); and
+ c. You must comply with the conditions in Section 3(a) if You Share
+ all or a substantial portion of the contents of the database.
+
+For the avoidance of doubt, this Section 4 supplements and does not
+replace Your obligations under this Public License where the Licensed
+Rights include other Copyright and Similar Rights.
+
+
+Section 5 -- Disclaimer of Warranties and Limitation of Liability.
+
+ a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
+ EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
+ AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
+ ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
+ IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
+ WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
+ PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
+ ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
+ KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
+ ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
+
+ b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
+ TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
+ NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
+ INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
+ COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
+ USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
+ ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
+ DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
+ IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
+
+ c. The disclaimer of warranties and limitation of liability provided
+ above shall be interpreted in a manner that, to the extent
+ possible, most closely approximates an absolute disclaimer and
+ waiver of all liability.
+
+
+Section 6 -- Term and Termination.
+
+ a. This Public License applies for the term of the Copyright and
+ Similar Rights licensed here. However, if You fail to comply with
+ this Public License, then Your rights under this Public License
+ terminate automatically.
+
+ b. Where Your right to use the Licensed Material has terminated under
+ Section 6(a), it reinstates:
+
+ 1. automatically as of the date the violation is cured, provided
+ it is cured within 30 days of Your discovery of the
+ violation; or
+
+ 2. upon express reinstatement by the Licensor.
+
+ For the avoidance of doubt, this Section 6(b) does not affect any
+ right the Licensor may have to seek remedies for Your violations
+ of this Public License.
+
+ c. For the avoidance of doubt, the Licensor may also offer the
+ Licensed Material under separate terms or conditions or stop
+ distributing the Licensed Material at any time; however, doing so
+ will not terminate this Public License.
+
+ d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
+ License.
+
+
+Section 7 -- Other Terms and Conditions.
+
+ a. The Licensor shall not be bound by any additional or different
+ terms or conditions communicated by You unless expressly agreed.
+
+ b. Any arrangements, understandings, or agreements regarding the
+ Licensed Material not stated herein are separate from and
+ independent of the terms and conditions of this Public License.
+
+
+Section 8 -- Interpretation.
+
+ a. For the avoidance of doubt, this Public License does not, and
+ shall not be interpreted to, reduce, limit, restrict, or impose
+ conditions on any use of the Licensed Material that could lawfully
+ be made without permission under this Public License.
+
+ b. To the extent possible, if any provision of this Public License is
+ deemed unenforceable, it shall be automatically reformed to the
+ minimum extent necessary to make it enforceable. If the provision
+ cannot be reformed, it shall be severed from this Public License
+ without affecting the enforceability of the remaining terms and
+ conditions.
+
+ c. No term or condition of this Public License will be waived and no
+ failure to comply consented to unless expressly agreed to by the
+ Licensor.
+
+ d. Nothing in this Public License constitutes or may be interpreted
+ as a limitation upon, or waiver of, any privileges and immunities
+ that apply to the Licensor or You, including from the legal
+ processes of any jurisdiction or authority.
+
+
+=======================================================================
+
+Creative Commons is not a party to its public
+licenses. Notwithstanding, Creative Commons may elect to apply one of
+its public licenses to material it publishes and in those instances
+will be considered the "Licensor." The text of the Creative Commons
+public licenses is dedicated to the public domain under the CC0 Public
+Domain Dedication. Except for the limited purpose of indicating that
+material is shared under a Creative Commons public license or as
+otherwise permitted by the Creative Commons policies published at
+creativecommons.org/policies, Creative Commons does not authorize the
+use of the trademark "Creative Commons" or any other trademark or logo
+of Creative Commons without its prior written consent including,
+without limitation, in connection with any unauthorized modifications
+to any of its public licenses or any other arrangements,
+understandings, or agreements concerning use of licensed material. For
+the avoidance of doubt, this paragraph does not form part of the
+public licenses.
+
+Creative Commons may be contacted at creativecommons.org.
diff --git a/archetypes/default.md b/archetypes/default.md
new file mode 100644
index 0000000..00e77bd
--- /dev/null
+++ b/archetypes/default.md
@@ -0,0 +1,6 @@
+---
+title: "{{ replace .Name "-" " " | title }}"
+date: {{ .Date }}
+draft: true
+---
+
diff --git a/config.toml b/config.toml
new file mode 100644
index 0000000..94b6d2b
--- /dev/null
+++ b/config.toml
@@ -0,0 +1,75 @@
+baseURL = "/"
+title = "openEuler documentation"
+
+disablePathToLower = true
+
+# Site language. Available translations in the theme's `/i18n` directory.
+languageCode = "en-us"
+defaultContentLanguage = "zh"
+defaultContentLanguageInSubdir = true
+# Enable comments by entering your Disqus shortname
+disqusShortname = ""
+# Enable Google Analytics by entering your tracking code
+googleAnalytics = ""
+uglyURLs = true
+buildFuture = true
+[markup]
+ [markup.goldmark]
+ [markup.goldmark.renderer]
+ unsafe = true
+ [markup.goldmark.extensions]
+ typographer = false
+# Define the number of posts per page
+paginate = 10
+
+
+[languages]
+ [languages.en]
+ languageCode = "en"
+ contentDir = "content/en"
+ [languages.en.params]
+ rootSuffix = "openEuler documentation"
+ suffix = "openEuler documentation"
+ [languages.zh]
+ languageCode = "zh"
+ contentDir = "content/zh"
+ [languages.zh.params]
+ rootSuffix = "openEuler文档 | openEuler社区官网"
+ suffix = "openEuler文档 | openEuler社区"
+
+
+[params]
+ resourceURL = "/"
+ defaultKeywords = ["devows", "hugo", "go", "openEuler"]
+ author = "Site template made by devcows Modified by openEuler team"
+ defaultDescription = "Select the version and chapter of the openEuler documentation you want to view."
+ email = "contact@openeuler.io"
+
+ ### DOC Configurations
+ BookEditPath= 'blob/master/content'
+ BookDateFormat = 'Jan 2, 2019'
+ enableGitInfo = true
+ BookMenuBundle = '/menu'
+ bookHidden = true
+ bookFlatSection = true
+ BookMenuBundleActiveLinkColor = '\#004ed0'
+ showInnovation = true
+ languageZh = "中文"
+ languageEn = "English"
+
+ ltsText = "LTS"
+ version_88 = "23.03"
+ version_89 = "22.03 LTS SP1"
+ version_90 = "22.09"
+ version_91 = "22.03 LTS"
+ version_92 = "20.03 LTS SP3"
+ version_93 = "21.09"
+ version_94 = "20.03 LTS SP2"
+ version_95 = "21.03"
+ version_96 = "20.03 LTS SP1"
+ version_97 = "20.09"
+ version_98 = "20.03 LTS"
+
+
+ notFound = "404"
+
diff --git a/data/docsversion/93.yaml b/data/docsversion/93.yaml
new file mode 100644
index 0000000..f2f6e71
--- /dev/null
+++ b/data/docsversion/93.yaml
@@ -0,0 +1,25 @@
+version : "21.09"
+index: "93"
+display: 'flex'
+zhmodule:
+ - {name: "了解",class: "know",link: [{title: "法律声明",href: "/zh/docs/20.03_LTS_SP2/docs/Releasenotes/法律声明.html"},{title: "发行说明",href: "/zh/docs/20.03_LTS_SP2/docs/Releasenotes/release_notes.html"}]}
+ - {name: "安装",class: "install",link: [{title: "快速入门",href: "/zh/docs/20.03_LTS_SP2/docs/Quickstart/quick-start.html"},{title: "安装指南",href: "/zh/docs/20.03_LTS_SP2/docs/Installation/installation.html"}]}
+ - {name: "管理",class: "manage",link: [{title: "管理员指南",href: "/zh/docs/20.03_LTS_SP2/docs/Administration/administration.html"}]}
+ - {name: "开发",class: "develop",link: [{title: "应用开发指南",href: "/zh/docs/20.03_LTS_SP2/docs/ApplicationDev/application-development.html"}]}
+ - {name: "使用",class: "use",link: [{title: "HA用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/desktop/ha.html"},{title: "A-Tune用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/A-Tune/A-Tune.html"},{title: "容器用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/Container/container.html"},{title: "桌面环境用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/desktop/desktop.html"},{title: "虚拟化用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/Virtualization/virtualization.html"},{title: "安全加固指南",href: "/zh/docs/20.03_LTS_SP2/docs/SecHarden/secHarden.html"}]}
+ - {name: "迁移",class: "migrate",link: [{title: "K8S迁移指南",href: "/zh/docs/20.03_LTS_SP2/docs/thirdparty_migration/k8sinstall.html"},{title: "OpenStack 安装",href: "/zh/docs/20.03_LTS_SP2/docs/thirdparty_migration/openstack.html"},{title: "Spring Framework 迁移指导",href: "/zh/docs/20.03_LTS_SP2/docs/thirdparty_migration/springframework.html"}]}
+enmodule:
+ - {name: "About",class: "know",link: [{title: "Terms of Use",href: "/en/docs/20.03_LTS_SP2/docs/Releasenotes/terms-of-use.html"},{title: "Release Notes",href: "/en/docs/20.03_LTS_SP2/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Install",class: "install",link: [{title: "Quick Start",href: "/en/docs/20.03_LTS_SP2/docs/Quickstart/quick-start.html"},{title: "Installation Guide",href: "/en/docs/20.03_LTS_SP2/docs/Installation/Installation.html"}]}
+ - {name: "Mgmt",class: "manage",link: [{title: "Administrator Guide",href: "/en/docs/20.03_LTS_SP2/docs/Administration/administration.html"}]}
+ - {name: "Dev",class: "develop",link: [{title: "Application Development Guide",href: "/en/docs/20.03_LTS_SP2/docs/ApplicationDev/application-development.html"}]}
+ - {name: "Use",class: "use",link: [{title: "HA User Guide",href: "/en/docs/20.03_LTS_SP2/docs/desktop/HAuserguide.html"},{title: "A-Tune User Guide",href: "/en/docs/20.03_LTS_SP2/docs/A-Tune/A-Tune.html"},{title: "Container User Guide",href: "/en/docs/20.03_LTS_SP2/docs/Container/container.html"},{title: "Desktop Environment User Guide",href: "/en/docs/20.03_LTS_SP2/docs/desktop/desktop.html"},{title: "Virtualization User Guide",href: "/en/docs/20.03_LTS_SP2/docs/Virtualization/virtualization.html"},{title: "Security Hardening Guide",href: "/en/docs/20.03_LTS_SP2/docs/SecHarden/secHarden.html"}]}
+ - {name: "Porting",class: "migrate",link: [{title: "Guide to Porting Kubernetes to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/k8sinstall.html"},{title: "OpenStack Installation",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/openstack-train.html"},{title: "Guide to Porting Spring Framework to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/springframework.html"}]}
+rumodule:
+ - {name: "About",class: "know",link: [{title: "Terms of Use",href: "/en/docs/20.03_LTS_SP2/docs/Releasenotes/terms-of-use.html"},{title: "Release Notes",href: "/en/docs/20.03_LTS_SP2/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Install",class: "install",link: [{title: "Quick Start",href: "/en/docs/20.03_LTS_SP2/docs/Quickstart/quick-start.html"},{title: "Installation Guide",href: "/en/docs/20.03_LTS_SP2/docs/Installation/Installation.html"}]}
+ - {name: "Mgmt",class: "manage",link: [{title: "Administrator Guide",href: "/en/docs/20.03_LTS_SP2/docs/Administration/administration.html"}]}
+ - {name: "Dev",class: "develop",link: [{title: "Application Development Guide",href: "/en/docs/20.03_LTS_SP2/docs/ApplicationDev/application-development.html"}]}
+ - {name: "Use",class: "use",link: [{title: "HA User Guide",href: "/en/docs/20.03_LTS_SP2/docs/desktop/HAuserguide.html"},{title: "A-Tune User Guide",href: "/en/docs/20.03_LTS_SP2/docs/A-Tune/A-Tune.html"},{title: "Container User Guide",href: "/en/docs/20.03_LTS_SP2/docs/Container/container.html"},{title: "Desktop Environment User Guide",href: "/en/docs/20.03_LTS_SP2/docs/desktop/desktop.html"},{title: "Virtualization User Guide",href: "/en/docs/20.03_LTS_SP2/docs/Virtualization/virtualization.html"},{title: "Security Hardening Guide",href: "/en/docs/20.03_LTS_SP2/docs/SecHarden/secHarden.html"}]}
+ - {name: "Porting",class: "migrate",link: [{title: "Guide to Porting Kubernetes to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/k8sinstall.html"},{title: "OpenStack Installation",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/openstack-train.html"},{title: "Guide to Porting Spring Framework to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/springframework.html"}]}
+ - {name: "Porting",class: "migrate",link: [{title: "Guide to Porting Kubernetes to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/k8sinstall.html"},{title: "OpenStack Installation",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/openstack.html"},{title: "Guide to Porting Spring Framework to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/springframework.html"}]}
diff --git a/data/docsversion/94.yaml b/data/docsversion/94.yaml
new file mode 100644
index 0000000..62fe3f5
--- /dev/null
+++ b/data/docsversion/94.yaml
@@ -0,0 +1,25 @@
+version : "20.03 LTS SP2"
+index: "94"
+display: 'none'
+zhmodule:
+ - {name: "了解",class: "know",link: [{title: "法律声明",href: "/zh/docs/20.03_LTS_SP2/docs/Releasenotes/法律声明.html"},{title: "发行说明",href: "/zh/docs/20.03_LTS_SP2/docs/Releasenotes/release_notes.html"}]}
+ - {name: "安装",class: "install",link: [{title: "快速入门",href: "/zh/docs/20.03_LTS_SP2/docs/Quickstart/quick-start.html"},{title: "安装指南",href: "/zh/docs/20.03_LTS_SP2/docs/Installation/installation.html"}]}
+ - {name: "管理",class: "manage",link: [{title: "管理员指南",href: "/zh/docs/20.03_LTS_SP2/docs/Administration/administration.html"}]}
+ - {name: "开发",class: "develop",link: [{title: "应用开发指南",href: "/zh/docs/20.03_LTS_SP2/docs/ApplicationDev/application-development.html"}]}
+ - {name: "使用",class: "use",link: [{title: "HA用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/desktop/ha.html"},{title: "A-Tune用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/A-Tune/A-Tune.html"},{title: "容器用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/Container/container.html"},{title: "桌面环境用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/desktop/desktop.html"},{title: "虚拟化用户指南",href: "/zh/docs/20.03_LTS_SP2/docs/Virtualization/virtualization.html"},{title: "安全加固指南",href: "/zh/docs/20.03_LTS_SP2/docs/SecHarden/secHarden.html"}]}
+ - {name: "迁移",class: "migrate",link: [{title: "K8S迁移指南",href: "/zh/docs/20.03_LTS_SP2/docs/thirdparty_migration/k8sinstall.html"},{title: "OpenStack 安装",href: "/zh/docs/20.03_LTS_SP2/docs/thirdparty_migration/openstack.html"},{title: "Spring Framework 迁移指导",href: "/zh/docs/20.03_LTS_SP2/docs/thirdparty_migration/springframework.html"}]}
+enmodule:
+ - {name: "About",class: "know",link: [{title: "Terms of Use",href: "/en/docs/20.03_LTS_SP2/docs/Releasenotes/terms-of-use.html"},{title: "Release Notes",href: "/en/docs/20.03_LTS_SP2/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Install",class: "install",link: [{title: "Quick Start",href: "/en/docs/20.03_LTS_SP2/docs/Quickstart/quick-start.html"},{title: "Installation Guide",href: "/en/docs/20.03_LTS_SP2/docs/Installation/Installation.html"}]}
+ - {name: "Mgmt",class: "manage",link: [{title: "Administrator Guide",href: "/en/docs/20.03_LTS_SP2/docs/Administration/administration.html"}]}
+ - {name: "Dev",class: "develop",link: [{title: "Application Development Guide",href: "/en/docs/20.03_LTS_SP2/docs/ApplicationDev/application-development.html"}]}
+ - {name: "Use",class: "use",link: [{title: "HA User Guide",href: "/en/docs/20.03_LTS_SP2/docs/desktop/HAuserguide.html"},{title: "A-Tune User Guide",href: "/en/docs/20.03_LTS_SP2/docs/A-Tune/A-Tune.html"},{title: "Container User Guide",href: "/en/docs/20.03_LTS_SP2/docs/Container/container.html"},{title: "Desktop Environment User Guide",href: "/en/docs/20.03_LTS_SP2/docs/desktop/desktop.html"},{title: "Virtualization User Guide",href: "/en/docs/20.03_LTS_SP2/docs/Virtualization/virtualization.html"},{title: "Security Hardening Guide",href: "/en/docs/20.03_LTS_SP2/docs/SecHarden/secHarden.html"}]}
+ - {name: "Porting",class: "migrate",link: [{title: "Guide to Porting Kubernetes to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/k8sinstall.html"},{title: "OpenStack Installation",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/openstack-train.html"},{title: "Guide to Porting Spring Framework to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/springframework.html"}]}
+rumodule:
+ - {name: "About",class: "know",link: [{title: "Terms of Use",href: "/en/docs/20.03_LTS_SP2/docs/Releasenotes/terms-of-use.html"},{title: "Release Notes",href: "/en/docs/20.03_LTS_SP2/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Install",class: "install",link: [{title: "Quick Start",href: "/en/docs/20.03_LTS_SP2/docs/Quickstart/quick-start.html"},{title: "Installation Guide",href: "/en/docs/20.03_LTS_SP2/docs/Installation/Installation.html"}]}
+ - {name: "Mgmt",class: "manage",link: [{title: "Administrator Guide",href: "/en/docs/20.03_LTS_SP2/docs/Administration/administration.html"}]}
+ - {name: "Dev",class: "develop",link: [{title: "Application Development Guide",href: "/en/docs/20.03_LTS_SP2/docs/ApplicationDev/application-development.html"}]}
+ - {name: "Use",class: "use",link: [{title: "HA User Guide",href: "/en/docs/20.03_LTS_SP2/docs/desktop/HAuserguide.html"},{title: "A-Tune User Guide",href: "/en/docs/20.03_LTS_SP2/docs/A-Tune/A-Tune.html"},{title: "Container User Guide",href: "/en/docs/20.03_LTS_SP2/docs/Container/container.html"},{title: "Desktop Environment User Guide",href: "/en/docs/20.03_LTS_SP2/docs/desktop/desktop.html"},{title: "Virtualization User Guide",href: "/en/docs/20.03_LTS_SP2/docs/Virtualization/virtualization.html"},{title: "Security Hardening Guide",href: "/en/docs/20.03_LTS_SP2/docs/SecHarden/secHarden.html"}]}
+ - {name: "Porting",class: "migrate",link: [{title: "Guide to Porting Kubernetes to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/k8sinstall.html"},{title: "OpenStack Installation",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/openstack-train.html"},{title: "Guide to Porting Spring Framework to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/springframework.html"}]}
+ - {name: "Porting",class: "migrate",link: [{title: "Guide to Porting Kubernetes to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/k8sinstall.html"},{title: "OpenStack Installation",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/openstack.html"},{title: "Guide to Porting Spring Framework to openEuler",href: "/en/docs/20.03_LTS_SP2/docs/thirdparty_migration/springframework.html"}]}
diff --git a/data/docsversion/95.yaml b/data/docsversion/95.yaml
new file mode 100644
index 0000000..a73d136
--- /dev/null
+++ b/data/docsversion/95.yaml
@@ -0,0 +1,22 @@
+version : "21.03"
+index: "95"
+display: 'none'
+zhmodule:
+ - {name: "了解",class: "know",link: [{title: "法律声明",href: "/zh/docs/21.03/docs/Releasenotes/法律声明.html"},{title: "发行说明",href: "/zh/docs/21.03/docs/Releasenotes/release_notes.html"}]}
+ - {name: "安装",class: "install",link: [{title: "快速入门",href: "/zh/docs/21.03/docs/Quickstart/quick-start.html"},{title: "安装指南",href: "/zh/docs/21.03/docs/Installation/installation.html"},{title: "第三方软件安装指南",href: "/zh/docs/21.03/docs/thirdparty_migration/thidrparty.html"}]}
+ - {name: "管理",class: "manage",link: [{title: "管理员指南",href: "/zh/docs/21.03/docs/Administration/administration.html"}]}
+ - {name: "迁移",class: "migrate",link: [{title: "内核热升级用户指南",href: "/zh/docs/21.03/docs/KernelLiveUpgrade/KernelLiveUpgrade.html"}]}
+ - {name: "使用",class: "use",link: [{title: "A-Tune用户指南",href: "/zh/docs/21.03/docs/A-Tune/A-Tune.html"},{title: "容器用户指南",href: "/zh/docs/21.03/docs/Container/container.html"},{title: "虚拟化用户指南",href: "/zh/docs/21.03/docs/Virtualization/virtualization.html"},{title: "安全加固指南",href: "/zh/docs/21.03/docs/SecHarden/secHarden.html"},{title: "桌面环境用户指南",href: "/zh/docs/21.03/docs/desktop/desktop.html"},{title: "StratoVirt用户指南",href: "/zh/docs/21.03/docs/StratoVirt/StratoVirtGuide.html"},{title: "Kubernetes 集群部署指南",href: "/zh/docs/21.03/docs/Kubernetes/Kubernetes.html"}]}
+ - {name: "开发",class: "develop",link: [{title: "应用开发指南",href: "/zh/docs/21.03/docs/ApplicationDev/application-development.html"},{title: "工具集用户指南",href: "/zh/docs/21.03/docs/userguide/overview.html"},{title: "secGear开发指南",href: "/zh/docs/21.03/docs/secGear/secGear.html"}]}
+enmodule:
+ - {name: "About",class: "know",link: [{title: "Terms of Use",href: "/en/docs/21.03/docs/Releasenotes/terms-of-use.html"},{title: "Release Notes",href: "/en/docs/21.03/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Mgmt",class: "manage",link: [{title: "Administrator Guide",href: "/en/docs/21.03/docs/Administration/administration.html"}]}
+ - {name: "Install",class: "install",link: [{title: "Quick Start",href: "/en/docs/21.03/docs/Quickstart/quick-start.html"},{title: "Installation Guide",href: "/en/docs/21.03/docs/Installation/Installation.html"},{title: "Third-Party Software Porting Guide",href: "/en/docs/21.03/docs/thirdparty_migration/thidrparty.html"}]}
+ - {name: "Dev",class: "develop",link: [{title: "Application Development Guide",href: "/en/docs/21.03/docs/ApplicationDev/application-development.html"},{title: "openEuler Toolset User Guide",href: "/en/docs/21.03/docs/userguide/overview.html"}]}
+ - {name: "Use",class: "use",link: [{title: "A-Tune User Guide",href: "/en/docs/21.03/docs/A-Tune/A-Tune.html"},{title: "Container User Guide",href: "/en/docs/21.03/docs/Container/container.html"},{title: "Virtualization User Guide",href: "/en/docs/21.03/docs/Virtualization/virtualization.html"},{title: "Security Hardening Guide",href: "/en/docs/21.03/docs/SecHarden/secHarden.html"},{title: "Desktop Environment User Guide",href: "/en/docs/21.03/docs/desktop/desktop.html"},{title: "StratoVirt User Guide",href: "/en/docs/21.03/docs/StratoVirt/StratoVrit_guidence.html"}]}
+rumodule:
+ - {name: "О версии",class: "know",link: [{title: "Условия использования",href: "/en/docs/21.03/docs/Releasenotes/terms-of-use.html"},{title: "Примечания к релизу",href: "/en/docs/21.03/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Управление",class: "manage",link: [{title: "Руководство администратора",href: "/en/docs/21.03/docs/Administration/administration.html"}]}
+ - {name: "Установка",class: "install",link: [{title: "Быстрый запуск",href: "/en/docs/21.03/docs/Quickstart/quick-start.html"},{title: "Руководство по установке",href: "/en/docs/21.03/docs/Installation/Installation.html"},{title: "Third-Party Software Porting Guide",href: "/en/docs/21.03/docs/thirdparty_migration/thidrparty.html"}]}
+ - {name: "Разработка",class: "develop",link: [{title: "Руководство по разработке приложений",href: "/en/docs/21.03/docs/ApplicationDev/application-development.html"},{title: "openEuler Toolset User Guide",href: "/en/docs/21.03/docs/userguide/overview.html"}]}
+ - {name: "Использование",class: "use",link: [{title: "Руководство пользователя A-Tune",href: "/en/docs/21.03/docs/A-Tune/A-Tune.html"},{title: "Container User Guide",href: "/en/docs/21.03/docs/Container/container.html"},{title: "Руководство пользователя платформы виртуализации",href: "/en/docs/21.03/docs/Virtualization/virtualization.html"},{title: "Руководство по усилению мер безопасности",href: "/en/docs/21.03/docs/SecHarden/secHarden.html"},{title: "Desktop Environment User Guide",href: "/en/docs/21.03/docs/desktop/desktop.html"},{title: "Руководство пользователя платформы виртуализации StratoVirt",href: "/en/docs/21.03/docs/StratoVirt/StratoVrit_guidence.html"}]}
\ No newline at end of file
diff --git a/data/docsversion/96.yaml b/data/docsversion/96.yaml
new file mode 100644
index 0000000..3ef7e43
--- /dev/null
+++ b/data/docsversion/96.yaml
@@ -0,0 +1,24 @@
+version : "20.03 LTS SP1"
+index: "96"
+display: 'none'
+zhmodule:
+ - {name: "了解",class: "know",link: [{title: "法律声明",href: "/zh/docs/20.03_LTS_SP1/docs/Releasenotes/法律声明.html"},{title: "发行说明",href: "/zh/docs/20.03_LTS_SP1/docs/Releasenotes/release_notes.html"}]}
+ - {name: "安装",class: "install",link: [{title: "快速入门",href: "/zh/docs/20.03_LTS_SP1/docs/Quickstart/quick-start.html"},{title: "安装指南",href: "/zh/docs/20.03_LTS_SP1/docs/Installation/installation.html"}]}
+ - {name: "管理",class: "manage",link: [{title: "管理员指南",href: "/zh/docs/20.03_LTS_SP1/docs/Administration/administration.html"}]}
+ - {name: "开发",class: "develop",link: [{title: "应用开发指南",href: "/zh/docs/20.03_LTS_SP1/docs/ApplicationDev/application-development.html"}]}
+ - {name: "使用",class: "use",link: [{title: "HA用户指南",href: "/zh/docs/20.03_LTS_SP1/docs/desktop/HAuserguide.html"},{title: "A-Tune用户指南",href: "/zh/docs/20.03_LTS_SP1/docs/A-Tune/A-Tune.html"},{title: "容器用户指南",href: "/zh/docs/20.03_LTS_SP1/docs/Container/container.html"},{title: "桌面环境用户指南",href: "/zh/docs/20.03_LTS_SP1/docs/desktop/desktop.html"},{title: "虚拟化用户指南",href: "/zh/docs/20.03_LTS_SP1/docs/Virtualization/virtualization.html"},{title: "安全加固指南",href: "/zh/docs/20.03_LTS_SP1/docs/SecHarden/secHarden.html"}]}
+ - {name: "迁移",class: "migrate",link: [{title: "K8S迁移指南",href: "/zh/docs/20.03_LTS_SP1/docs/thirdparty_migration/k8sinstall.html"},{title: "OpenStack 迁移",href: "/zh/docs/20.03_LTS_SP1/docs/thirdparty_migration/openstack-train.html"},{title: "Spring Framework 迁移指导",href: "/zh/docs/20.03_LTS_SP1/docs/thirdparty_migration/springframework.html"}]}
+enmodule:
+ - {name: "About",class: "know",link: [{title: "Terms of Use",href: "/en/docs/20.03_LTS_SP1/docs/Releasenotes/terms-of-use.html"},{title: "Release Notes",href: "/en/docs/20.03_LTS_SP1/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Install",class: "install",link: [{title: "Quick Start",href: "/en/docs/20.03_LTS_SP1/docs/Quickstart/quick-start.html"},{title: "Installation Guide",href: "/en/docs/20.03_LTS_SP1/docs/Installation/Installation.html"}]}
+ - {name: "Mgmt",class: "manage",link: [{title: "Administrator Guide",href: "/en/docs/20.03_LTS_SP1/docs/Administration/administration.html"}]}
+ - {name: "Dev",class: "develop",link: [{title: "Application Development Guide",href: "/en/docs/20.03_LTS_SP1/docs/ApplicationDev/application-development.html"}]}
+ - {name: "Use",class: "use",link: [{title: "HA User Guide",href: "/en/docs/20.03_LTS_SP1/docs/desktop/HAuserguide.html"},{title: "A-Tune User Guide",href: "/en/docs/20.03_LTS_SP1/docs/A-Tune/A-Tune.html"},{title: "Container User Guide",href: "/en/docs/20.03_LTS_SP1/docs/Container/container.html"},{title: "Desktop Environment User Guide",href: "/en/docs/20.03_LTS_SP1/docs/desktop/desktop.html"},{title: "Virtualization User Guide",href: "/en/docs/20.03_LTS_SP1/docs/Virtualization/virtualization.html"},{title: "Security Hardening Guide",href: "/en/docs/20.03_LTS_SP1/docs/SecHarden/secHarden.html"}]}
+ - {name: "Porting",class: "migrate",link: [{title: "Guide to Porting Kubernetes to openEuler",href: "/en/docs/20.03_LTS_SP1/docs/thirdparty_migration/k8sinstall.html"},{title: "Guide to Porting OpenStack-Train to openEuler",href: "/en/docs/20.03_LTS_SP1/docs/thirdparty_migration/openstack-train.html"},{title: "Guide to Porting Spring Framework to openEuler",href: "/en/docs/20.03_LTS_SP1/docs/thirdparty_migration/springframework.html"}]}
+rumodule:
+ - {name: "О версии",class: "know",link: [{title: "Условия использования",href: "/en/docs/20.03_LTS_SP1/docs/Releasenotes/terms-of-use.html"},{title: "Примечания к релизу",href: "/en/docs/20.03_LTS_SP1/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Установка",class: "install",link: [{title: "Быстрый запуск",href: "/en/docs/20.03_LTS_SP1/docs/Quickstart/quick-start.html"},{title: "Руководство по установке",href: "/en/docs/20.03_LTS_SP1/docs/Installation/Installation.html"}]}
+ - {name: "Управление",class: "manage",link: [{title: "Руководство администратора",href: "/en/docs/20.03_LTS_SP1/docs/Administration/administration.html"}]}
+ - {name: "Разработка",class: "develop",link: [{title: "Руководство по разработке приложений",href: "/en/docs/20.03_LTS_SP1/docs/ApplicationDev/application-development.html"}]}
+ - {name: "Использование",class: "use",link: [{title: "HA User Guide",href: "/en/docs/20.03_LTS_SP1/docs/desktop/HAuserguide.html"},{title: "Руководство пользователя A-Tune",href: "/en/docs/20.03_LTS_SP1/docs/A-Tune/A-Tune.html"},{title: "Container User Guide",href: "/en/docs/20.03_LTS_SP1/docs/Container/container.html"},{title: "Desktop Environment User Guide",href: "/en/docs/20.03_LTS_SP1/docs/desktop/desktop.html"},{title: "Руководство пользователя платформы виртуализации",href: "/en/docs/20.03_LTS_SP1/docs/Virtualization/virtualization.html"},{title: "Руководство по усилению мер безопасности",href: "/en/docs/20.03_LTS_SP1/docs/SecHarden/secHarden.html"}]}
+ - {name: "Перенос",class: "migrate",link: [{title: "Guide to Porting Kubernetes to openEuler",href: "/en/docs/20.03_LTS_SP1/docs/thirdparty_migration/k8sinstall.html"},{title: "Guide to Porting OpenStack-Train to openEuler",href: "/en/docs/20.03_LTS_SP1/docs/thirdparty_migration/openstack-train.html"},{title: "Guide to Porting Spring Framework to openEuler",href: "/en/docs/20.03_LTS_SP1/docs/thirdparty_migration/springframework.html"}]}
\ No newline at end of file
diff --git a/data/docsversion/97.yaml b/data/docsversion/97.yaml
new file mode 100644
index 0000000..da19ff2
--- /dev/null
+++ b/data/docsversion/97.yaml
@@ -0,0 +1,15 @@
+version : "20.09"
+index: "97"
+display: 'none'
+zhmodule:
+ - {name: "了解",class: "know",link: [{title: "法律声明",href: "/zh/docs/20.09/docs/Releasenotes/法律声明.html"},{title: "发行说明",href: "/zh/docs/20.09/docs/Releasenotes/release_notes.html"}]}
+ - {name: "安装",class: "install",link: [{title: "快速入门",href: "/zh/docs/20.09/docs/Quickstart/quick-start.html"},{title: "安装指南",href: "/zh/docs/20.09/docs/Installation/installation.html"}]}
+ - {name: "管理",class: "manage",link: [{title: "管理员指南",href: "/zh/docs/20.09/docs/Administration/administration.html"}]}
+ - {name: "开发",class: "develop",link: [{title: "应用开发指南",href: "/zh/docs/20.09/docs/ApplicationDev/application-development.html"},{title: "工具集用户指南",href: "/zh/docs/20.09/docs/userguide/overview.html"}]}
+ - {name: "使用",class: "use",link: [{title: "安全加固指南",href: "/zh/docs/20.09/docs/SecHarden/secHarden.html"},{title: "虚拟化用户指南",href: "/zh/docs/20.09/docs/Virtualization/virtualization.html"},{title: "容器用户指南",href: "/zh/docs/20.09/docs/Container/container.html"},{title: "A-Tune用户指南",href: "/zh/docs/20.09/docs/A-Tune/A-Tune.html"},{title: "StratoVirt用户指南",href: "/zh/docs/20.09/docs/StratoVirt/StratoVirtGuide.html"}]}
+enmodule:
+ - {name: "About",class: "know",link: [{title: "Terms of Use",href: "/en/docs/20.09/docs/Releasenotes/terms-of-use.html"},{title: "Release Notes",href: "/en/docs/20.09/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Install",class: "install",link: [{title: "Quick Start",href: "/en/docs/20.09/docs/Quickstart/quick-start.html"},{title: "Installation Guide",href: "/en/docs/20.09/docs/Installation/Installation.html"}]}
+ - {name: "Mgmt",class: "manage",link: [{title: "Administrator Guide",href: "/en/docs/20.09/docs/Administration/administration.html"}]}
+ - {name: "Dev",class: "develop",link: [{title: "Application Development Guide",href: "/en/docs/20.09/docs/ApplicationDev/application-development.html"},{title: "openEuler Toolset User Guide",href: "/en/docs/20.09/docs/userguide/overview.html"}]}
+ - {name: "Use",class: "use",link: [{title: "Security Hardening Guide",href: "/en/docs/20.09/docs/SecHarden/secHarden.html"},{title: "Virtualization User Guide",href: "/en/docs/20.09/docs/Virtualization/virtualization.html"},{title: "Container User Guide",href: "/en/docs/20.09/docs/Container/container.html"},{title: "A-Tune User Guide",href: "/en/docs/20.09/docs/A-Tune/A-Tune.html"},{title: "StratoVirt User Guide",href: "/en/docs/20.09/docs/StratoVirt/StratoVrit_guidence.html"}]}
\ No newline at end of file
diff --git a/data/docsversion/98.yaml b/data/docsversion/98.yaml
new file mode 100644
index 0000000..9a766e9
--- /dev/null
+++ b/data/docsversion/98.yaml
@@ -0,0 +1,21 @@
+version : "20.03 LTS"
+index: "98"
+display: 'none'
+zhmodule:
+ - {name: "了解",class: "know",link: [{title: "法律声明",href: "/zh/docs/20.03_LTS/docs/Releasenotes/法律声明.html"},{title: "发行说明",href: "/zh/docs/20.03_LTS/docs/Releasenotes/release_notes.html"}]}
+ - {name: "安装",class: "install",link: [{title: "快速入门",href: "/zh/docs/20.03_LTS/docs/Quickstart/quick-start.html"},{title: "安装指南",href: "/zh/docs/20.03_LTS/docs/Installation/installation.html"}]}
+ - {name: "管理",class: "manage",link: [{title: "管理员指南",href: "/zh/docs/20.03_LTS/docs/Administration/administration.html"}]}
+ - {name: "开发",class: "develop",link: [{title: "应用开发指南",href: "/zh/docs/20.03_LTS/docs/ApplicationDev/application-development.html"}]}
+ - {name: "使用",class: "use",link: [{title: "安全加固指南",href: "/zh/docs/20.03_LTS/docs/SecHarden/secHarden.html"},{title: "虚拟化用户指南",href: "/zh/docs/20.03_LTS/docs/Virtualization/virtualization.html"},{title: "容器用户指南",href: "/zh/docs/20.03_LTS/docs/Container/container.html"},{title: "A-Tune用户指南",href: "/zh/docs/20.03_LTS/docs/A-Tune/A-Tune.html"}]}
+enmodule:
+ - {name: "About",class: "know",link: [{title: "Terms of Use",href: "/en/docs/20.03_LTS/docs/Releasenotes/terms-of-use.html"},{title: "Release Notes",href: "/en/docs/20.03_LTS/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Install",class: "install",link: [{title: "Quick Start",href: "/en/docs/20.03_LTS/docs/Quickstart/quick-start.html"},{title: "Installation Guide",href: "/en/docs/20.03_LTS/docs/Installation/Installation.html"}]}
+ - {name: "Mgmt",class: "manage",link: [{title: "Administrator Guide",href: "/en/docs/20.03_LTS/docs/Administration/administration.html"}]}
+ - {name: "Dev",class: "develop",link: [{title: "Application Development Guide",href: "/en/docs/20.03_LTS/docs/ApplicationDev/application-development.html"}]}
+ - {name: "Use",class: "use",link: [{title: "Security Hardening Guide",href: "/en/docs/20.03_LTS/docs/SecHarden/secHarden.html"},{title: "Virtualization User Guide",href: "/en/docs/20.03_LTS/docs/Virtualization/virtualization.html"},{title: "Container User Guide",href: "/en/docs/20.03_LTS/docs/Container/container.html"},{title: "A-Tune User Guide",href: "/en/docs/20.03_LTS/docs/A-Tune/A-Tune.html"}]}
+rumodule:
+ - {name: "О версии",class: "know",link: [{title: "Условия использования",href: "/en/docs/20.03_LTS/docs/Releasenotes/terms-of-use.html"},{title: "Примечания к релизу",href: "/en/docs/20.03_LTS/docs/Releasenotes/release_notes.html"}]}
+ - {name: "Установка",class: "install",link: [{title: "Быстрый запуск",href: "/en/docs/20.03_LTS/docs/Quickstart/quick-start.html"},{title: "Руководство по установке",href: "/en/docs/20.03_LTS/docs/Installation/Installation.html"}]}
+ - {name: "Управление",class: "manage",link: [{title: "Руководство администратора",href: "/en/docs/20.03_LTS/docs/Administration/administration.html"}]}
+ - {name: "Разработка",class: "develop",link: [{title: "Руководство по разработке приложений",href: "/en/docs/20.03_LTS/docs/ApplicationDev/application-development.html"}]}
+ - {name: "Использование",class: "use",link: [{title: "Руководство по усилению мер безопасности",href: "/en/docs/20.03_LTS/docs/SecHarden/secHarden.html"},{title: "Руководство пользователя платформы виртуализации",href: "/en/docs/20.03_LTS/docs/Virtualization/virtualization.html"},{title: "Container User Guide",href: "/en/docs/20.03_LTS/docs/Container/container.html"},{title: "Руководство пользователя A-Tune",href: "/en/docs/20.03_LTS/docs/A-Tune/A-Tune.html"}]}
\ No newline at end of file
diff --git a/deploy/docs-builder.sh b/deploy/docs-builder.sh
new file mode 100644
index 0000000..4412280
--- /dev/null
+++ b/deploy/docs-builder.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+if [ -d "./docs" ]; then
+ rm -rf ./docs
+fi
+if [ -d "./website" ]; then
+ rm -rf ./website
+fi
+mkdir website
+
+git clone https://gitee.com/openeuler/docs-centralized
+cd ./docs
+git checkout -b website origin/website
+cp -r * ../website
+
+for r in $(git branch -r --list "origin/stable2-*")
+do
+ b=${r##*origin/stable2-}
+ git checkout -b $b $r
+
+ mkdir -p ../website/content/zh/docs/$b
+ cp -r ./docs/zh/* ../website/content/zh/docs/$b/
+
+ mkdir -p ../website/content/en/docs/$b
+ cp -r ./docs/en/* ../website/content/en/docs/$b/
+
+ if [ -d "./docs/ru" ]; then
+ mkdir -p ../website/content/ru/docs/$b
+ cp -r ./docs/ru/* ../website/content/ru/docs/$b/
+ fi
+
+ cd ..
+ cd ./docs
+done
+cd ..
+pwd
+
diff --git a/deploy/entrypoint.sh b/deploy/entrypoint.sh
new file mode 100644
index 0000000..c0ccd9e
--- /dev/null
+++ b/deploy/entrypoint.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+
+# 使用 ifconfig 获取主机的 IP 地址(假设是 eth0 接口)
+LOCAL_IP=$(ifconfig eth0 | grep inet | awk '{ print $2 }' | head -n 1)
+
+# 使用 awk 替换 nginx.conf.template 中的环境变量
+echo "Replacing LOCAL_IP in nginx.conf"
+awk -v ip="$LOCAL_IP" '{gsub(/\${LOCAL_IP}/, ip); print}' /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf
+bash /etc/nginx/monitor.sh $DET_URL $DST_PATH &
+/usr/share/nginx/sbin/nginx -g 'daemon off;'
\ No newline at end of file
diff --git a/deploy/monitor.sh b/deploy/monitor.sh
new file mode 100644
index 0000000..d84c1bc
--- /dev/null
+++ b/deploy/monitor.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+# this script is for website monitoring,
+# when website is up, delete all cert file.
+
+HOST=$1
+DST_PATH=$2
+
+delete_file() {
+ if [ -d $DST_PATH ]; then
+ echo "found $DST_PATH" > /dev/stdout
+ rm -rf $DST_PATH/*
+ else
+ echo "$DST_PATH not found" > /dev/stdout
+ fi
+}
+
+while true;
+do
+ sleep 20
+ RET=$(curl -k -s -w "%{http_code}\n" -o /dev/null $HOST)
+ if [ $RET == "200" ]; then
+ echo "website is up!!!" > /dev/stdout
+ delete_file
+ if [ $? -eq 0 ]; then
+ echo "successful delete file, exit" > /dev/stdout
+ break
+ else
+ echo "failed to delete file" > /dev/stdout
+ fi
+ else
+ echo "waiting for website up, http_status: $RET" > /dev/stdout
+ fi
+done
\ No newline at end of file
diff --git a/deploy/nginx.conf b/deploy/nginx.conf
new file mode 100644
index 0000000..5e3044d
--- /dev/null
+++ b/deploy/nginx.conf
@@ -0,0 +1,124 @@
+user $NGINX_USER;
+error_log /dev/stdout info;
+pid /var/run/nginx.pid;
+worker_processes auto;
+worker_rlimit_nofile 65535;
+events {
+ use epoll;
+ worker_connections 65535;
+}
+
+
+http {
+ include /etc/nginx/mime.types;
+
+ log_format main '[$time_local] remote_addr: $http_x_real_ip, request: "$request", '
+ 'status: $status, body_bytes_sent: $body_bytes_sent, http_referer: "$http_referer", '
+ 'http_user_agent: "$http_user_agent"';
+
+ access_log /dev/stdout main;
+
+ server_tokens off;
+ autoindex off;
+
+ port_in_redirect off;
+ absolute_redirect off;
+
+ client_header_buffer_size 1k;
+ large_client_header_buffers 4 8k;
+ client_body_buffer_size 16k;
+ client_max_body_size 50m;
+
+ client_header_timeout 10;
+ client_body_timeout 10;
+ client_body_in_file_only off;
+ keepalive_timeout 10 30;
+ send_timeout 10;
+
+ proxy_hide_header X-Powered-By;
+
+
+ limit_conn_zone $http_x_real_ip zone=limitperip:10m;
+ limit_req_zone $http_x_real_ip zone=frontendratelimit:10m rate=2000r/s;
+ limit_req_zone $http_x_real_ip zone=ratelimit:10m rate=200r/s;
+ underscores_in_headers on;
+
+ gzip on;
+ gzip_min_length 1k;
+ gzip_buffers 4 16k;
+ gzip_comp_level 5;
+ gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/javascript application/x-httpd-php application/json;
+ gzip_vary on;
+
+ server {
+ listen ${LOCAL_IP}:8080 ssl;
+ server_name localhost;
+ charset utf-8;
+ limit_conn limitperip 10;
+ ssl_session_tickets off;
+ ssl_session_timeout 10s;
+ ssl_session_cache shared:SSL:10m;
+
+ ssl_certificate "cert/server.crt";
+ ssl_certificate_key "cert/server.key";
+ ssl_password_file "cert/abc.txt";
+ ssl_dhparam "cert/dhparam.pem";
+ ssl_ecdh_curve auto;
+ ssl_protocols TLSv1.2;
+ ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384";
+ ssl_prefer_server_ciphers on;
+ ssl_stapling on;
+ ssl_stapling_verify on;
+
+ resolver 8.8.8.8 8.8.4.4 valid=60s;
+ resolver_timeout 5s;
+
+ if ($request_method !~ ^(GET|HEAD|POST)$) {
+ return 444;
+ }
+
+ location ~ /\. {
+ deny all;
+ return 404;
+ }
+ location / {
+ proxy_set_header X-Forwarded-For $http_x_real_ip;
+ proxy_set_header Host $host;
+
+ add_header X-XSS-Protection "1; mode=block";
+ add_header X-Frame-Options DENY;
+ add_header X-Content-Type-Options nosniff;
+ add_header Content-Security-Policy "script-src 'self' 'unsafe-inline' 'unsafe-eval' https://hm.baidu.com https://unpkg.com/@opensig/; object-src 'none'; frame-src 'none'";
+ add_header Cache-Control "no-cache,no-store,must-revalidate";
+ add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
+ add_header Pragma no-cache;
+ add_header Expires 0;
+
+ # 静态资源缓存
+ location ~* ^/(css|js|img)(/|$) {
+ add_header X-XSS-Protection "1; mode=block";
+ add_header X-Frame-Options DENY;
+ add_header X-Content-Type-Options nosniff;
+ add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
+ add_header Content-Security-Policy "script-src 'self'; object-src 'none'; frame-src 'none'";
+ add_header Cache-Control "public,max-age=1209600";
+ expires 14d;
+ }
+
+ root /usr/share/nginx/www;
+ index index.html index.htm;
+ }
+
+ error_page 401 402 403 405 406 407 413 414 /error.html;
+ error_page 500 501 502 503 504 505 /error.html;
+ error_page 404 /404.html;
+
+ location = /error.html {
+ root /usr/share/nginx/www;
+ }
+
+ location = /404.html {
+ root /usr/share/nginx/www;
+ }
+ }
+}
diff --git a/i18n/en/en.toml b/i18n/en/en.toml
new file mode 100644
index 0000000..989612b
--- /dev/null
+++ b/i18n/en/en.toml
@@ -0,0 +1,388 @@
+#list page
+[lts_version]
+other = "Long-Term Supported Versions"
+
+[innovation_version]
+other = "Innovation Versions"
+
+[archive_version]
+other = "Archived Versions (No Longer Maintained)"
+
+[document_home]
+other = "Documentation"
+
+[hot_document]
+other = "Hot documents"
+
+[login_text]
+other = "Login"
+
+[logout_text]
+other = "Logout"
+
+[zone_text]
+other = "User Center"
+
+[container_header]
+other = "Installation Guide"
+
+[container_link]
+other = "/en/docs/22.03_LTS_SP2/docs/Installation/Installation.html"
+
+[secGear_header]
+other = "Administrator Guide"
+
+[secGear_link]
+other = "/en/docs/22.03_LTS_SP2/docs/Administration/administration.html"
+
+[StratoVirt_header]
+other = "Container User Guide"
+
+[StratoVirt_link]
+other = "/en/docs/22.03_LTS_SP2/docs/Container/container.html"
+
+[A-Tune_header]
+other = "A-Tune User Guide"
+
+[A-Tune_link]
+other = "/en/docs/22.03_LTS_SP2/docs/A-Tune/A-Tune.html"
+
+[A-Ops_header]
+other = "A-Ops User Guide"
+
+[A-Ops_link]
+other = "/en/docs/22.03_LTS_SP2/docs/A-Ops/overview.html"
+
+[Security_header]
+other = "Security Hardening Guide"
+
+[Security_link]
+other = "/en/docs/22.03_LTS_SP2/docs/SecHarden/secHarden.html"
+
+
+[document]
+other = "Document"
+
+[version_selection]
+other = "Version selection"
+
+[version_text]
+other = "Version"
+
+[current_lang]
+other = "English"
+
+[search]
+other = "search"
+
+[search_placeholder]
+other = "Input content"
+
+[search_no_data_tip]
+other = "No content found."
+
+[quick_links]
+other = "Quick links"
+
+[kunpeng_community]
+other = "Kunpeng community"
+
+[document_link]
+other = "Documentation"
+
+[openeuler_document]
+other = "openEuler Documentation"
+
+[catalog_text]
+other = "Content"
+
+[other_text]
+other = "Reference Links"
+
+[know_88_1]
+other = "/en/docs/23.03/docs/Releasenotes/terms-of-use.html"
+[know_89_1]
+other = "/en/docs/22.03_LTS_SP1/docs/Releasenotes/terms-of-use.html"
+[know_90_1]
+other = "/en/docs/22.09/docs/Releasenotes/terms-of-use.html"
+[know_91_1]
+other = "/en/docs/22.03_LTS/docs/Releasenotes/terms-of-use.html"
+[know_92_1]
+other = "/en/docs/20.03_LTS_SP3/docs/Releasenotes/terms-of-use.html"
+[know_93_1]
+other = "/en/docs/21.09/docs/Releasenotes/terms-of-use.html"
+[know_94_1]
+other = "/en/docs/20.03_LTS_SP2/docs/Releasenotes/terms-of-use.html"
+[know_95_1]
+other = "/en/docs/21.03/docs/Releasenotes/terms-of-use.html"
+[know_96_1]
+other = "/en/docs/20.03_LTS_SP1/docs/Releasenotes/terms-of-use.html"
+[know_97_1]
+other = "/en/docs/20.09/docs/Releasenotes/terms-of-use.html"
+[know_98_1]
+other = "/en/docs/20.03_LTS/docs/Releasenotes/terms-of-use.html"
+[version_88]
+other = "23.03"
+[version_89]
+other = "22.03 LTS SP1"
+[version_90]
+other = "22.09"
+[version_91]
+other = "22.03 LTS"
+[version_92]
+other = "20.03 LTS SP3"
+[version_93]
+other = "21.09"
+[version_94]
+other= "20.03 LTS SP2"
+[version_95]
+other = "21.03"
+[version_96]
+other = "20.03 LTS SP1"
+[version_97]
+other= "20.09"
+[version_98]
+other = "20.03 LTS"
+[atom]
+other = "openEuler is an open source project incubated and operated by the OpenAtom Foundation."
+
+[copy_right]
+other = "Copyright © 2025 openEuler. All rights reserved."
+
+[attention]
+other = "WeChat Subscription"
+
+[source_code]
+other = "View source on Gitee"
+
+[feedbook]
+other = "Feedback"
+
+[previous]
+other = "Previous"
+
+[next]
+other = "Next"
+
+[evaluate]
+other = "Rating"
+
+#bug start
+
+[issue_detail]
+other = "View Details"
+
+[issue_1]
+other = "Specifications and Common Mistakes"
+
+[issue_1_1]
+other = "Misspellings or punctuation mistakes;"
+
+[issue_1_2]
+other = "Incorrect links, empty cells, or wrong formats;"
+
+[issue_1_3]
+other = "Chinese characters in English context;"
+
+[issue_1_4]
+other = "Minor inconsistencies between the UI and descriptions;"
+
+[issue_1_5]
+other = "Low writing fluency that does not affect understanding;"
+
+[issue_1_6]
+other = "Incorrect version numbers, including software package names and version numbers on the UI."
+
+[issue_2]
+other = "Usability"
+
+[issue_2_1]
+other = "Incorrect or missing key steps;"
+
+[issue_2_2]
+other = "Missing prerequisites or precautions;"
+
+[issue_2_3]
+other = "Ambiguous figures, tables, or texts;"
+
+[issue_2_4]
+other = "Unclear logic, such as missing classifications, items, and steps."
+
+[issue_3]
+other = "Correctness"
+
+[issue_3_1]
+other = "Technical principles, function descriptions, or specifications inconsistent with those of the software;"
+
+[issue_3_2]
+other = "Incorrect schematic or architecture diagrams;"
+
+[issue_3_3]
+other = "Incorrect commands or command parameters;"
+
+[issue_3_4]
+other = "Incorrect code;"
+
+[issue_3_5]
+other = "Commands inconsistent with the functions;"
+
+[issue_3_6]
+other = "Wrong screenshots."
+
+[issue_4]
+other = "Risk Warnings"
+
+[issue_4_1]
+other = "Lack of risk warnings for operations that may damage the system or important data."
+
+[issue_5]
+other = "Content Compliance"
+
+[issue_5_1]
+other = "Contents that may violate applicable laws and regulations or geo-cultural context-sensitive words and expressions;"
+
+[issue_5_2]
+other = "Copyright infringement."
+
+[issue_title]
+other = "Bug Catching"
+
+[issue_participantion]
+other = "Click to submit bugs"
+
+[issue_part]
+other = "Buggy Content"
+
+[issue_part_placeholder]
+other = "Copy and paste the buggy document content here."
+
+[issue_reason]
+other = "Bug Description"
+
+[issue_reason_placeholder]
+other = "Describe the bug so that we can quickly locate the problem."
+
+[issue_submit_type]
+other = "Submit As"
+
+[issue_submit_type1]
+other = "Issue"
+
+[issue_submit_type2]
+other = "PR"
+
+[issue_tip1]
+other = "It's a little complicated...."
+
+[issue_tip2]
+other = "I'd like to ask someone."
+
+[PR_tip1]
+other = "Just a small problem."
+
+[PR_tip2]
+other = "I can fix it online!"
+
+[issue_type]
+other = "Bug Type"
+
+[satisfaction]
+other = "How satisfied are you with this document"
+
+[low_score]
+other = "Not satisfied at all"
+
+[high_score]
+other = "Very satisfied"
+
+[join_reason]
+other = "请问是什么原因让您参与到这个问题中"
+
+[own_job]
+other = "本职工作"
+
+[job_wanted]
+other = "求职"
+
+[technology]
+other = "技术兴趣"
+
+[study]
+other = "学习"
+
+[email]
+other = "Your email address"
+
+[text_email]
+other = "We may contact you through email in regard to the bug fixing solution. You will also be notified through email if you win any prize during the activity."
+
+[email_placeholder]
+other = "Your email address"
+
+[login_tip]
+other = "Error 500 reported.Log in to Gitee first."
+
+[submit_tip]
+other = "Click to create an issue. An issue template will be automatically generated based on your feedback."
+
+[privacy_text]
+other = "By submitting the contents, you fully understand and agree to the terms of the openEuler "
+
+[privacy_link]
+other = "Privacy Policy."
+
+[btn_submit]
+other = "Submit"
+
+[licensed_1]
+other = "Licensed under"
+
+[licensed_2]
+other = "the MulanPSL2"
+
+[back]
+other = "Back to Top"
+
+[questionnaire]
+other = "Bug Catching"
+
+#bug end
+
+#search page
+
+[result_1]
+other = " "
+
+[result_2]
+other = " search results about "
+
+[result_3]
+other = " are found"
+
+[hot_docs_version]
+other = "20.03 LTS"
+
+[cancel]
+other = "cancel"
+
+[atom-text]
+other = "openEuler is an open source project incubated and operated by the OpenAtom Foundation."
+[brand]
+other = "Trademark"
+[privacy]
+other = "Privacy Policy"
+[legal]
+other = "Legal Notice"
+[cookies]
+other = "About Cookies"
+[lang]
+other = "en"
+[openEuler]
+other = "https://www.openeuler.org/en/"
+[version_tip]
+other = "Documents vary with versions, Select one as required."
+
+[approval1]
+other = "J. ICP B. No. 2020036654-1"
+[approval2]
+other = "J.G.W.A.B. No. 11030102011597"
\ No newline at end of file
diff --git a/i18n/zh/zh.toml b/i18n/zh/zh.toml
new file mode 100644
index 0000000..f8e896f
--- /dev/null
+++ b/i18n/zh/zh.toml
@@ -0,0 +1,400 @@
+#list page
+[lts_version]
+other = "长期支持版本"
+
+[innovation_version]
+other = "社区创新版本"
+
+[archive_version]
+other = "归档版本(停止维护)"
+
+[document_home]
+other = "文档首页"
+
+[version_text]
+other = "版本"
+
+[current_lang]
+other = "中文"
+
+[search]
+other = "搜索"
+
+[search_placeholder]
+other = "请输入搜索内容"
+
+[search_no_data_tip]
+other = "未搜索到内容"
+
+[document_link]
+other = "Documentation"
+
+[openeuler_document]
+other = "openEuler Documentation"
+
+[login_text]
+other = "登录"
+
+[logout_text]
+other = "退出登录"
+
+[zone_text]
+other = "个人中心"
+
+[catalog_text]
+other = "目录"
+
+
+[other_text]
+other = "友好社区"
+
+[know_88_1]
+other = "/zh/docs/23.03/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_89_1]
+other = "/zh/docs/22.03_LTS_SP1/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_90_1]
+other = "/zh/docs/22.09/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_91_1]
+other = "/zh/docs/22.03_LTS/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_92_1]
+other = "/zh/docs/20.03_LTS_SP3/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_93_1]
+other = "/zh/docs/21.09/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_94_1]
+other = "/zh/docs/20.03_LTS_SP2/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_95_1]
+other = "/zh/docs/21.03/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_96_1]
+other = "/zh/docs/20.03_LTS_SP1/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_97_1]
+other = "/zh/docs/20.09/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[know_98_1]
+other = "/zh/docs/20.03_LTS/docs/Releasenotes/%E6%B3%95%E5%BE%8B%E5%A3%B0%E6%98%8E.html"
+[version_88]
+other = "23.03"
+[version_89]
+other = "22.03 LTS SP1"
+[version_90]
+other = "22.09"
+[version_91]
+other = "22.03 LTS"
+[version_92]
+other = "20.03 LTS SP3"
+[version_93]
+other = "21.09"
+[version_94]
+other= "20.03 LTS SP2"
+[version_95]
+other = "21.03"
+[version_96]
+other = "20.03 LTS SP1"
+[version_97]
+other= "20.09"
+[version_98]
+other = "20.03 LTS"
+
+
+[hot_document]
+other = "热门文档"
+
+[container_header]
+other = "安装指南"
+
+[container_link]
+other = "/zh/docs/22.03_LTS_SP2/docs/Installation/installation.html"
+
+[secGear_header]
+other = "管理员指南"
+
+[secGear_link]
+other = "/zh/docs/22.03_LTS_SP2/docs/Administration/administration.html"
+
+[StratoVirt_header]
+other = "容器用户指南"
+
+[StratoVirt_link]
+other = "/zh/docs/22.03_LTS_SP2/docs/Container/container.html"
+
+[A-Tune_header]
+other = "A-Tune 用户指南"
+
+[A-Tune_link]
+other = "/zh/docs/22.03_LTS_SP2/docs/A-Tune/A-Tune.html"
+
+[A-Ops_header]
+other = "A-Ops 用户指南"
+
+[A-Ops_link]
+other = "/zh/docs/22.03_LTS_SP2/docs/A-Ops/overview.html"
+
+[Security_header]
+other = "安全加固指南"
+
+[Security_link]
+other = "/zh/docs/22.03_LTS_SP2/docs/SecHarden/secHarden.html"
+
+
+[document]
+other = "文档"
+
+[version_selection]
+other = "版本选择"
+
+[quick_links]
+other = "快速链接"
+
+[kunpeng_community]
+other = "鲲鹏社区"
+
+[atom]
+other = "openEuler 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目"
+
+[copy_right]
+other = "版权所有 © 2025 openEuler 保留一切权利"
+
+[licensed_1]
+other = "遵循"
+
+[licensed_2]
+other = "木兰宽松许可证第2版(MulanPSL2)"
+
+[attention]
+other = "扫码关注公众号"
+
+[source_code]
+other = "在Gitee上查看源文件"
+
+[feedbook]
+other = "反馈问题"
+
+[previous]
+other = "上一篇"
+
+[next]
+other = "下一篇"
+
+[evaluate]
+other = "评价"
+
+#bug start
+
+[issue_detail]
+other = "查看详情"
+
+[issue_1]
+other = "规范和低错类"
+
+[issue_1_1]
+other = "错别字或拼写错误;标点符号使用错误;"
+
+[issue_1_2]
+other = "链接错误、空单元格、格式错误;"
+
+[issue_1_3]
+other = "英文中包含中文字符;"
+
+[issue_1_4]
+other = "界面和描述不一致,但不影响操作;"
+
+[issue_1_5]
+other = "表述不通顺,但不影响理解;"
+
+[issue_1_6]
+other = "版本号不匹配:如软件包名称、界面版本号;"
+
+[issue_2]
+other = "易用性"
+
+[issue_2_1]
+other = "关键步骤错误或缺失,无法指导用户完成任务;"
+
+[issue_2_2]
+other = "缺少必要的前提条件、注意事项等;"
+
+[issue_2_3]
+other = "图形、表格、文字等晦涩难懂;"
+
+[issue_2_4]
+other = "逻辑不清晰,该分类、分项、分步骤的没有给出;"
+
+[issue_3]
+other = "正确性"
+
+[issue_3_1]
+other = "技术原理、功能、规格等描述和软件不一致,存在错误;"
+
+[issue_3_2]
+other = "原理图、架构图等存在错误;"
+
+[issue_3_3]
+other = "命令、命令参数等错误;"
+
+[issue_3_4]
+other = "代码片段错误;"
+
+[issue_3_5]
+other = "命令无法完成对应功能;"
+
+[issue_3_6]
+other = "界面错误,无法指导操作;"
+
+[issue_4]
+other = "风险提示"
+
+[issue_4_1]
+other = "对重要数据或系统存在风险的操作,缺少安全提示;"
+
+[issue_5]
+other = "内容合规"
+
+[issue_5_1]
+other = "违反法律法规,涉及政治、领土主权等敏感词;"
+
+[issue_5_2]
+other = "内容侵权;"
+
+[issue_title]
+other = "文档捉虫"
+
+[issue_participantion]
+other = "点击参与文档捉虫"
+
+[issue_part]
+other = "“有虫”文档片段"
+
+[issue_part_placeholder]
+other = "点击输入将“有虫”文档复制,粘贴到此处。"
+
+[issue_reason]
+other = "问题描述"
+
+[issue_reason_placeholder]
+other = "点击输入详细问题描述,以帮助我们快速定位问题。"
+
+[issue_submit_type]
+other = "提交类型"
+
+[issue_submit_type1]
+other = "issue"
+
+[issue_submit_type2]
+other = "PR"
+
+[issue_tip1]
+other = "有点复杂..."
+
+[issue_tip2]
+other = "找人问问吧。"
+
+[PR_tip1]
+other = "小问题,全程线上修改..."
+
+[PR_tip2]
+other = "一键搞定!"
+
+[issue_type]
+other = "问题类型"
+
+[satisfaction]
+other = "您对文档的总体满意度"
+
+[low_score]
+other = "非常不满意"
+
+[high_score]
+other = "非常满意"
+
+[join_reason]
+other = "请问是什么原因让您参与到这个问题中"
+
+[own_job]
+other = "本职工作"
+
+[job_wanted]
+other = "求职"
+
+[technology]
+other = "技术兴趣"
+
+[study]
+other = "学习"
+
+[email]
+other = "您的邮箱"
+
+[text_email]
+other = "我们可能针对您提出的问题,向您发送邮件反馈进行方案。如有获奖信息,也会通过此方式通知您。"
+
+[email_placeholder]
+other = "点击输入您的邮箱"
+
+[login_tip]
+other = "封印500报错,需保持gitee在登录状态"
+
+[submit_tip]
+other = "根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。"
+
+[privacy_text]
+other = "您理解并同意,您填写并提交的内容,即视为您已充分阅读并同意openEuler的"
+
+[privacy_link]
+other = "《隐私政策》"
+
+[btn_submit]
+other = "提交"
+
+[back]
+other = "返回顶部"
+
+[questionnaire]
+other = "文档捉虫"
+
+#bug end
+
+#search page
+
+[result_1]
+other = "一共有"
+
+[result_2]
+other = "个关于"
+
+[result_3]
+other = "的结果"
+
+[hot_docs_version]
+other = "20.03 LTS"
+
+[relative]
+other = "关于openEuler"
+
+[website]
+other = "openEuler官网"
+
+[other_link]
+other = "友情链接"
+
+[cancel]
+other = "取消"
+
+[atom-text]
+other = "openEuler 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目"
+[brand]
+other = "品牌"
+[privacy]
+other = "隐私政策"
+[legal]
+other = "法律声明"
+[cookies]
+other = "关于cookies"
+[lang]
+other = "zh"
+[openEuler]
+other = "https://www.openeuler.org/zh/"
+[version_tip]
+other = "不同版本内容存在差异,请选择对应版本文档。"
+
+[approval1]
+other = "京ICP备2020036654号-1"
+[approval2]
+other = "京公网安备 11030102011597 号"
\ No newline at end of file
diff --git a/layouts/404.html b/layouts/404.html
new file mode 100644
index 0000000..c7c1a7d
--- /dev/null
+++ b/layouts/404.html
@@ -0,0 +1,17 @@
+
+
+
+{{ partial "head.html" . }}
+
+
+
+
+
+
+
{{ .Site.Params.notFound }}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/docs/baseof.html b/layouts/docs/baseof.html
new file mode 100644
index 0000000..ea6b337
--- /dev/null
+++ b/layouts/docs/baseof.html
@@ -0,0 +1,151 @@
+
+
+ {{ partial "head.html" . }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ $versionArr := split $.File.Path "docs\\" }}
+ {{ $version := index $versionArr 1}}
+ {{ $version := split $version "\\" }}
+ {{ $version := index $version 0}}
+ {{ $lang := .Site.LanguageCode}}
+
+ {{ partial "nav.html" . }}
+ {{ partial "version.html" . }}
+
+
+
+
+
+ {{ template "main" . }}
+ {{ partial "inside-nav.html"}}
+ {{ partial "turn.html"}}
+
+
+
+ {{ partial "pcfooter.html" . }}
+
+
+
+
+
+
+
+
+
{{ i18n "cancel" }}
+
+
+
+
+
+
+
{{ i18n "search_no_data_tip" }}
+
+
+
+
+
+
+
+
+ {{ partial "scripts.html" . }}
+
+
+
+
+
+
diff --git a/layouts/docs/list.html b/layouts/docs/list.html
new file mode 100644
index 0000000..2d49b3b
--- /dev/null
+++ b/layouts/docs/list.html
@@ -0,0 +1,5 @@
+{{ define "main" }}
+
+ {{- .Content -}}
+
+{{ end }}
\ No newline at end of file
diff --git a/layouts/docs/single.html b/layouts/docs/single.html
new file mode 100644
index 0000000..5abc364
--- /dev/null
+++ b/layouts/docs/single.html
@@ -0,0 +1,10 @@
+{{ define "main" }}
+
+ {{ $pt := replaceRE "href=\"([^http].*\\.md)\"" "href=\"${1}.html\"" .Content }}
+ {{ $pt1 := (replace $pt ".md.html" ".html") }}
+ {{ $pt2 := (replace $pt1 ".md#" ".html#") }}
+ {{ $st := (replace $pt2 "‘" "'") }}
+ {{ $ot := (replace $st "’" "'") }}
+ {{- $ot | safeHTML -}}
+
+{{ end }}
\ No newline at end of file
diff --git a/layouts/index.html b/layouts/index.html
new file mode 100644
index 0000000..98e2d62
--- /dev/null
+++ b/layouts/index.html
@@ -0,0 +1,258 @@
+
+
+
+{{ partial "head.html" . }}
+
+
+
+
+
+
+
+
+
+
+
+ {{i18n "lts_version"}}
+
+
+
+
+ {{ if .Site.Params.showInnovation }}
+
+
+ {{i18n "innovation_version"}}
+
+
+
+
+ {{ end }}
+
+
+ {{i18n "archive_version"}}
+
+
+
+
+
+
+
+
+
+ {{ partial "doc_hot.html" . }}
+ {{ if eq .Site.LanguageCode "zh"}}
+ {{ partial "doc_map.html" . }}
+ {{ end }}
+ {{ if eq .Site.LanguageCode "en"}}
+ {{ partial "doc_map_22.03_LTS_SP1_en.html" . }}
+ {{ end }}
+
+ {{ partial "pcfooter.html" . }}
+
+
+
+
+
+
+
+
+
+
+
+
{{ i18n "cancel" }}
+
+
+
+
+
+
{{ i18n "search_no_data_tip" }}
+
+
+
+
+
+
+
+
LEARNING
+
{{i18n "document"}}
+
+
+
+
+
{{ i18n "version_text" }}
+
+
+ {{ partial "doc_hot.html" . }}
+ {{ if eq .Site.LanguageCode "zh"}}
+ {{ partial "doc_map.html" . }}
+ {{ end }}
+ {{ if eq .Site.LanguageCode "en"}}
+ {{ partial "doc_map_22.03_LTS_SP1_en.html" . }}
+ {{ end }}
+
+ {{ partial "float-mobile.html" . }}
+ {{ partial "pcfooter.html" . }}
+
+
+
{{ partial "svg/icon-tip.html" . }}
+
+ {{ partial "svg/icon-done-solid.html" . }}
+
+
+
+ {{ partial "inside-nav.html" . }}
+ {{ partial "scripts.html" . }}
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/doc_hot.html b/layouts/partials/doc_hot.html
new file mode 100644
index 0000000..9507a2e
--- /dev/null
+++ b/layouts/partials/doc_hot.html
@@ -0,0 +1,28 @@
+
+
+
+
HOT
+
{{i18n "container_header"}}
+
+
+
HOT
+
{{i18n "secGear_header"}}
+
+
+
HOT
+
{{i18n "StratoVirt_header"}}
+
+
+
HOT
+
{{i18n "A-Tune_header"}}
+
+
+
HOT
+
{{i18n "A-Ops_header"}}
+
+
+
HOT
+
{{i18n "Security_header"}}
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/doc_map.html b/layouts/partials/doc_map.html
new file mode 100644
index 0000000..46205d6
--- /dev/null
+++ b/layouts/partials/doc_map.html
@@ -0,0 +1,202 @@
+
+
+
流程与规范
+
+
学习
+
+
+
+
+
+
+
+
+
diff --git a/layouts/partials/doc_map_22.03_LTS_SP1_en.html b/layouts/partials/doc_map_22.03_LTS_SP1_en.html
new file mode 100644
index 0000000..c534e8c
--- /dev/null
+++ b/layouts/partials/doc_map_22.03_LTS_SP1_en.html
@@ -0,0 +1,239 @@
+
+
+
+ Getting Started
+
+
+
+ Server
+
+
+
+ Installation
+
+
+
+ System Management
+
+
+
+ Network
+
+
+
+ Maintenance
+
+
+
+ Security
+
+
+
+ Performance
+
+
+
+ Toolchain
+
+
+
+
+ Service
+
+
+
+ Desktop
+
+
+
+ Embedded
+
+
+
+ Cloud Computing
+
+
+
+ Virtualization
+
+
+
+ Cloud Native
+
+
+
+ Edge Computing
+
+
+
+
+
+
+ Package Management
+
+
+
+
+
+
+
+ Integration Test
+
+
+
+
+
+ OS Upgrade and Porting
+
+
+
+
+
+ Image Tailoring
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/docs/docsVersion.html b/layouts/partials/docs/docsVersion.html
new file mode 100644
index 0000000..c632e3a
--- /dev/null
+++ b/layouts/partials/docs/docsVersion.html
@@ -0,0 +1,60 @@
+
+{{ $version := "1.0.0"}}
+{{ $versionArr := split $.File.Path "docs/" }}
+{{ $version := index $versionArr 1}}
+{{ $version := split $version "/" }}
+{{ $version := index $version 0}}
+{{ $lang := .Site.LanguageCode}}
+
+
+
+
{{ i18n "doc_version"}}
+
+
+ {{ range .Site.Data.docsVersion }}
+ {{ if eq $lang "zh-cn" }}
+ {{.version}}
+ {{ else }}
+ {{.version}}
+ {{ end }}
+ {{ end }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/docs/menu-bundle.html b/layouts/partials/docs/menu-bundle.html
new file mode 100644
index 0000000..1e4365b
--- /dev/null
+++ b/layouts/partials/docs/menu-bundle.html
@@ -0,0 +1,24 @@
+{{ template "hrefhack" . }}
+{{ $version := .File.Dir }}
+{{ $versionArr := split $version "docs" }}
+{{ $versionArr := index $versionArr 1 }}
+{{ $versionArr := split $versionArr "/" }}
+{{ $versionArr := index $versionArr 1 }}
+{{ $versionArr := string $versionArr }}
+{{ $versionArr := delimit (slice "docs" $versionArr) "/"}}
+{{ $versionArr := delimit (slice $versionArr "menu" ) "/"}}
+{{ $versionArr := string $versionArr}}
+{{ with .Site.GetPage $versionArr}}
+ {{- .Content -}}
+{{ end }}
+
+
+{{ define "hrefhack" }}
+ {{ $attrEq := "$=" }}
+ {{ $attrVal := .RelPermalink }}
+ {{ if eq .RelPermalink "/" }}
+ {{ $attrEq = "=" }}
+ {{ $attrVal = .Permalink }}
+ {{ end }}
+{{ end }}
+
diff --git a/layouts/partials/docs/menu-filetree.html b/layouts/partials/docs/menu-filetree.html
new file mode 100644
index 0000000..abc6fd9
--- /dev/null
+++ b/layouts/partials/docs/menu-filetree.html
@@ -0,0 +1,59 @@
+{{ $bookSection := default "docs" .Site.Params.BookSection }}
+{{ if eq $bookSection "*" }}
+ {{ .Scratch.Set "BookSections" .Site.Sections }}
+{{ else }}
+ {{ $bookSections := where .Site.Sections "Section" $bookSection }}
+ {{ .Scratch.Set "BookSections" $bookSections }}
+{{ end }}
+
+
+{{ $sections := .Scratch.Get "BookSections" }}
+{{/* If there is only one section to render then render its children, else render all sections */}}
+{{ if eq (len $sections) 1 }}
+ {{ with index $sections 0 }}
+ {{ template "book-section-children" (dict "Section" . "CurrentPage" $.Permalink) }}
+ {{ end }}
+{{ else }}
+
+ {{ range where $sections "Params.bookhidden" "!=" true }}
+ {{ template "book-section" (dict "Section" . "CurrentPage" $.Permalink) }}
+ {{ end }}
+
+{{ end }}
+
+{{ define "book-section" }}
+{{ with .Section }}
+
+ {{ if .Content }}
+ {{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
+ {{ else }}
+ {{ partial "docs/title" . }}
+ {{ end }}
+
+ {{ template "book-section-children" (dict "Section" . "CurrentPage" $.CurrentPage) }}
+
+{{ end }}
+{{ end }}
+
+{{ define "book-section-children" }}
+{{ with .Section }}
+
+ {{ range where .Sections "Params.bookhidden" "!=" true }}
+ {{ template "book-section" (dict "Section" . "CurrentPage" $.CurrentPage) }}
+ {{ end }}
+ {{ range where .Pages "Params.bookhidden" "!=" true }}
+
+ {{ template "book-page-link" (dict "Page" . "CurrentPage" $.CurrentPage) }}
+
+ {{ end }}
+
+{{ end }}
+{{ end }}
+
+{{ define "book-page-link" }}
+{{ with .Page }}
+
+ {{ partial "docs/title" . }}
+
+{{ end }}
+{{ end }}
diff --git a/layouts/partials/docs/menu.html b/layouts/partials/docs/menu.html
new file mode 100644
index 0000000..75481a8
--- /dev/null
+++ b/layouts/partials/docs/menu.html
@@ -0,0 +1,21 @@
+
+
+
+
diff --git a/layouts/partials/docs/search.html b/layouts/partials/docs/search.html
new file mode 100644
index 0000000..cab6c15
--- /dev/null
+++ b/layouts/partials/docs/search.html
@@ -0,0 +1,7 @@
+{{ if default true .Site.Params.BookSearch }}
+
+{{ end }}
diff --git a/layouts/partials/docs/title.html b/layouts/partials/docs/title.html
new file mode 100644
index 0000000..1272306
--- /dev/null
+++ b/layouts/partials/docs/title.html
@@ -0,0 +1,11 @@
+{{ $title := "" }}
+
+{{ if .Title }}
+ {{ $title = .Title }}
+{{ else if and .IsSection .File }}
+ {{ $sections := split (trim .File.Dir "/") "/" }}
+ {{ $title = index ($sections | last 1) 0 | humanize | title }}
+{{ else if and .IsPage .File }}
+ {{ $title = .File.BaseFileName | humanize | title }}
+{{ end }}
+
diff --git a/layouts/partials/float-mobile.html b/layouts/partials/float-mobile.html
new file mode 100644
index 0000000..99813d5
--- /dev/null
+++ b/layouts/partials/float-mobile.html
@@ -0,0 +1,19 @@
+
+
+
+
+ {{ partial "svg/icon-smile-mobile.html" . }}
+
+
+ 您对
+ openEuler文档
+ 的整体满意度如何?
+
+
+
{{ partial "svg/icon-cancel.html" . }}
+
+
+
+ {{ partial "float-popup.html" . }}
+
+
diff --git a/layouts/partials/float-popup.html b/layouts/partials/float-popup.html
new file mode 100644
index 0000000..d0d8fa3
--- /dev/null
+++ b/layouts/partials/float-popup.html
@@ -0,0 +1,42 @@
+
diff --git a/layouts/partials/float.html b/layouts/partials/float.html
new file mode 100644
index 0000000..80520f3
--- /dev/null
+++ b/layouts/partials/float.html
@@ -0,0 +1,55 @@
+
+
+
{{i18n "issue_title"}}
+
{{ partial "svg/icon-close.html" . }}
+
+
+
+
+
+ {{ partial "svg/icon-headset.html" . }}
+
+
+
+
+
+
+
{{ partial "svg/icon-top.html" . }}
+
+
diff --git a/layouts/partials/footer.html b/layouts/partials/footer.html
new file mode 100644
index 0000000..80aaecc
--- /dev/null
+++ b/layouts/partials/footer.html
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/layouts/partials/h5_footer.html b/layouts/partials/h5_footer.html
new file mode 100644
index 0000000..2095031
--- /dev/null
+++ b/layouts/partials/h5_footer.html
@@ -0,0 +1,15 @@
+
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
new file mode 100644
index 0000000..b9eb2e9
--- /dev/null
+++ b/layouts/partials/head.html
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+ {{ $versionArr := split $.File.Path "docs/" }}
+ {{ $version := index $versionArr 1}}
+ {{ $version := split $version "/" }}
+ {{ $version := index $version 0}}
+ {{ $title := "" }}
+ {{ if .Title }}
+ {{ $title = .Title }}
+ {{ else if and .IsSection .File }}
+ {{ $sections := split (trim .File.Dir "/") "/" }}
+ {{ $title = index ($sections | last 1) 0 | title }}
+ {{ else if and .IsPage .File }}
+ {{ $title = .File.BaseFileName }}
+ {{ end }}
+ {{ $path := "" }}
+ {{ with .File }}
+ {{ $path = .Path }}
+ {{ else }}
+ {{ $path = .Path }}
+ {{ end }}
+ {{ $suffix := "" }}
+ {{ if $path }}
+ {{ $suffix = site.Params.suffix }}
+ {{ else }}
+ {{ $suffix = site.Params.rootSuffix }}
+ {{ end }}
+ {{ if $version}}
+ {{ $title }} | {{ $suffix }} | v{{ $version }}
+ {{ else }}
+ {{ $title }} | {{ $suffix }}
+ {{ end }}
+ {{ if default .Summary .Description }}
+
+ {{ else if .Site.Params.DefaultDescription }}
+
+ {{ end }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ if ne .Site.LanguageCode "ru"}}
+
+ {{ end }}
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/inside-nav.html b/layouts/partials/inside-nav.html
new file mode 100644
index 0000000..51cc524
--- /dev/null
+++ b/layouts/partials/inside-nav.html
@@ -0,0 +1,90 @@
+
+
+ {{ partial "float.html" . }}
+
\ No newline at end of file
diff --git a/layouts/partials/link.html b/layouts/partials/link.html
new file mode 100644
index 0000000..6422c2b
--- /dev/null
+++ b/layouts/partials/link.html
@@ -0,0 +1,38 @@
+
\ No newline at end of file
diff --git a/layouts/partials/nav.html b/layouts/partials/nav.html
new file mode 100644
index 0000000..34d01d9
--- /dev/null
+++ b/layouts/partials/nav.html
@@ -0,0 +1,100 @@
+
+
+
+
diff --git a/layouts/partials/pcfooter.html b/layouts/partials/pcfooter.html
new file mode 100644
index 0000000..08b91fb
--- /dev/null
+++ b/layouts/partials/pcfooter.html
@@ -0,0 +1,62 @@
+
\ No newline at end of file
diff --git a/layouts/partials/scripts.html b/layouts/partials/scripts.html
new file mode 100644
index 0000000..7d40414
--- /dev/null
+++ b/layouts/partials/scripts.html
@@ -0,0 +1,233 @@
+{{ template "_internal/google_analytics.html" . }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/search.html b/layouts/partials/search.html
new file mode 100644
index 0000000..3ebbe8f
--- /dev/null
+++ b/layouts/partials/search.html
@@ -0,0 +1,9 @@
+
+
+
{{ i18n "openeuler_document" }}
+
+
+
+
+
+
diff --git a/layouts/partials/slider.html b/layouts/partials/slider.html
new file mode 100644
index 0000000..4f5f6d2
--- /dev/null
+++ b/layouts/partials/slider.html
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/layouts/partials/svg/icon-cancel.html b/layouts/partials/svg/icon-cancel.html
new file mode 100644
index 0000000..c501507
--- /dev/null
+++ b/layouts/partials/svg/icon-cancel.html
@@ -0,0 +1,3 @@
+
+
+
diff --git a/layouts/partials/svg/icon-chat.html b/layouts/partials/svg/icon-chat.html
new file mode 100644
index 0000000..256cae7
--- /dev/null
+++ b/layouts/partials/svg/icon-chat.html
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-close.html b/layouts/partials/svg/icon-close.html
new file mode 100644
index 0000000..11b02ea
--- /dev/null
+++ b/layouts/partials/svg/icon-close.html
@@ -0,0 +1,13 @@
+
+ 编组 3备份
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-done-solid.html b/layouts/partials/svg/icon-done-solid.html
new file mode 100644
index 0000000..3e3c805
--- /dev/null
+++ b/layouts/partials/svg/icon-done-solid.html
@@ -0,0 +1,3 @@
+
+
+
diff --git a/layouts/partials/svg/icon-down.html b/layouts/partials/svg/icon-down.html
new file mode 100644
index 0000000..d6dae06
--- /dev/null
+++ b/layouts/partials/svg/icon-down.html
@@ -0,0 +1,4 @@
+
+ chevron-down
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-headset.html b/layouts/partials/svg/icon-headset.html
new file mode 100644
index 0000000..3b7014c
--- /dev/null
+++ b/layouts/partials/svg/icon-headset.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-quickissue_dark.html b/layouts/partials/svg/icon-quickissue_dark.html
new file mode 100644
index 0000000..4d30420
--- /dev/null
+++ b/layouts/partials/svg/icon-quickissue_dark.html
@@ -0,0 +1,22 @@
+
+ quickissue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-quickissue_light.html b/layouts/partials/svg/icon-quickissue_light.html
new file mode 100644
index 0000000..5ba964d
--- /dev/null
+++ b/layouts/partials/svg/icon-quickissue_light.html
@@ -0,0 +1,17 @@
+
+ quickissue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-right.html b/layouts/partials/svg/icon-right.html
new file mode 100644
index 0000000..9efa730
--- /dev/null
+++ b/layouts/partials/svg/icon-right.html
@@ -0,0 +1,6 @@
+
+ arrow-right
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-robot.html b/layouts/partials/svg/icon-robot.html
new file mode 100644
index 0000000..f28e7ad
--- /dev/null
+++ b/layouts/partials/svg/icon-robot.html
@@ -0,0 +1,22 @@
+
+ icon/robot
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-robot_dark.html b/layouts/partials/svg/icon-robot_dark.html
new file mode 100644
index 0000000..8a627d8
--- /dev/null
+++ b/layouts/partials/svg/icon-robot_dark.html
@@ -0,0 +1,29 @@
+
+ icon/robot
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-smile-mobile.html b/layouts/partials/svg/icon-smile-mobile.html
new file mode 100644
index 0000000..af950c8
--- /dev/null
+++ b/layouts/partials/svg/icon-smile-mobile.html
@@ -0,0 +1,19 @@
+
+ 编组 7
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-smile.html b/layouts/partials/svg/icon-smile.html
new file mode 100644
index 0000000..40599af
--- /dev/null
+++ b/layouts/partials/svg/icon-smile.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-tip.html b/layouts/partials/svg/icon-tip.html
new file mode 100644
index 0000000..0ed03dd
--- /dev/null
+++ b/layouts/partials/svg/icon-tip.html
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/layouts/partials/svg/icon-top.html b/layouts/partials/svg/icon-top.html
new file mode 100644
index 0000000..c571f63
--- /dev/null
+++ b/layouts/partials/svg/icon-top.html
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/layouts/partials/turn.html b/layouts/partials/turn.html
new file mode 100644
index 0000000..7a030e0
--- /dev/null
+++ b/layouts/partials/turn.html
@@ -0,0 +1,9 @@
+
diff --git a/layouts/partials/version.html b/layouts/partials/version.html
new file mode 100644
index 0000000..c2fb295
--- /dev/null
+++ b/layouts/partials/version.html
@@ -0,0 +1,12 @@
+
+
+
{{i18n "lts_version"}}
+
+
+ {{ if .Site.Params.showInnovation }}
+
+
{{i18n "innovation_version"}}
+
+
+ {{ end }}
+
\ No newline at end of file
diff --git a/static/404.html b/static/404.html
new file mode 100644
index 0000000..a95dda0
--- /dev/null
+++ b/static/404.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+ openEuler
+
+
+
+
+
+
+
404 Page Not Found
+
+
+
+
\ No newline at end of file
diff --git a/static/baidu_verify_codeva-tt9d17tf7q.html b/static/baidu_verify_codeva-tt9d17tf7q.html
new file mode 100644
index 0000000..933f535
--- /dev/null
+++ b/static/baidu_verify_codeva-tt9d17tf7q.html
@@ -0,0 +1 @@
+cf91c6ab8434dfe93b419f38e63eef6d
\ No newline at end of file
diff --git a/static/css/common.css b/static/css/common.css
new file mode 100644
index 0000000..55d5bc9
--- /dev/null
+++ b/static/css/common.css
@@ -0,0 +1,689 @@
+html,
+body {
+ background-color: var(--e-color-bg1);
+ font-family: 'PingFang SC', 'Microsoft YaHei', 'Helvetica', 'Arial', sans-serif;
+}
+
+code,
+pre {
+ font-family: 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', monospace;
+}
+#content {
+ min-height: calc(100vh - 260px);
+}
+
+i {
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: center center;
+}
+
+.hide {
+ display: none;
+}
+
+.show {
+ display: block;
+}
+
+/* 404 */
+
+.not-found {
+ position: relative;
+ margin-top: 180px !important;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+.not-found img {
+ width: 400px;
+ height: 400px;
+ display: block;
+}
+
+.not-found span {
+ font-size: 48px;
+ line-height: 48px;
+ color: #000;
+ font-weight: 400;
+}
+
+/* 导航栏 */
+.nav-box {
+ width: calc(100% - 300px);
+ height: 60px;
+ position: fixed;
+ top: 0;
+ left: 300px;
+ z-index: 1001;
+ background-color: var(--e-color-bg1);
+}
+@media screen and (max-width: 1100px) {
+ .nav-box {
+ width: 100vw;
+ left: 0;
+ background-color: var(--e-color-bg2);
+ }
+}
+.nav-box::after {
+ content: "";
+ display: block;
+ width: calc(100% - 128px);
+ height: 1px;
+ margin: 0 auto;
+ background-color: var(--e-color-division1);
+}
+@media screen and (max-width: 1100px) {
+ .nav-box::after {
+ display: none;
+ }
+}
+
+.nav-box .nav-menu {
+ display: flex;
+ width: 100%;
+ align-items: center;
+ padding: 0 64px;
+ max-width: 1620px;
+}
+@media screen and (min-width: 1958px) {
+ .nav-box .nav-menu {
+ max-width: none;
+ }
+}
+.nav-box .nav-menu .docs-a .home-bread{
+ cursor: pointer;
+}
+.nav-box .nav-menu .left {
+ width: 300px;
+ padding: 0 40px 0;
+ background-color: var(--e-color-kleinblue5);
+ min-width: 300px;
+}
+.nav-box .nav-menu .left img {
+ width: 139px;
+ height: 32px;
+ position: relative;
+ top: 53px;
+}
+.nav-box .nav-menu .left .nav-box .nav-menu .nav-menu .h5-right {
+ display: none;
+}
+#version-option {
+ background-color: var(--e-color-bg1);
+ position: fixed;
+ width: calc(100% - 300px);
+ padding: 0 64px;
+ top: 60px;
+ left: 300px;
+ z-index: 9;
+ display: flex;
+ box-shadow: var(--e-shadow-l2);
+ max-height: 0;
+ overflow: hidden;
+ transition: max-height 0.5s;
+ box-sizing: border-box;
+}
+#version-option.show{
+ max-height: 240px;
+}
+@media screen and (max-width: 1100px) {
+ #version-option{
+ display: none;
+ }
+}
+#version-option p{
+ font-size: 14px;
+ color: var(--e-color-text1);
+}
+#version-option .long-time,
+#version-option .innovate {
+ margin-right: 120px;
+}
+#version-option >div{
+ padding:40px 0;
+}
+#version-option .version-list{
+ display: grid;
+ grid-template-columns: repeat(2,1fr);
+ column-gap: 60px;
+}
+#version-option .innovate .version-list{
+ width: 150px;
+}
+#version-option .version-list li{
+ padding-top: 16px;
+ white-space: nowrap;
+}
+
+.nav-menu a img {
+ display: block;
+ height: 60px;
+}
+
+.nav-menu .left a img {
+ display: block;
+ width: 300px;
+ height: 60px;
+}
+
+.h5_nav_left #img {
+ display: block;
+ width: 154px;
+ height: auto;
+}
+
+.nav-menu > div .home {
+ color: var(--e-color-text1);
+ line-height: 16px;
+ font-size: 16px;
+ display: inline-block;
+ margin-left: 20px;
+ cursor: pointer;
+}
+
+#nav-search {
+ display: flex;
+ flex-direction: row;
+ align-items: center;
+}
+
+.search-active {
+ box-shadow: var(--e-shadow-l2);
+ border-radius: 6px;
+ height: 32px;
+ padding: 0 12px;
+ border: 1px solid var(--e-color-brand1);
+}
+
+#nav-search input {
+ width: 0;
+ font-size: 14px;
+ line-height: 16px;
+ border: 0;
+}
+
+#nav-search input:focus {
+ outline: 0;
+}
+
+#nav-search > div {
+ position: relative;
+}
+
+#nav-search > div ul {
+ position: absolute;
+ top: 24px;
+ left: 0;
+ width: 100%;
+ z-index: 200;
+ background: #ffffff;
+}
+.nav-menu .search-box {
+ display: flex;
+ align-items: center;
+}
+#nav-search .icon-search,
+.nav-menu .search-box .icon-search {
+ display: block;
+ width: 24px;
+ height: 24px;
+ cursor: pointer;
+ position: relative;
+}
+.light .icon-search {
+ background: url(../img/search/search.svg) no-repeat 100%/100%;
+}
+.dark .icon-search {
+ background: url(../img/search/search-dark.svg) no-repeat 100%/100%;
+}
+
+.white_search {
+ display: block;
+ width: 24px;
+ height: 24px;
+ background-image: url("../img/search/search.svg");
+ cursor: pointer;
+}
+.dark .white_search {
+ background-image: url("../img/search/search-dark.svg");
+}
+
+.icon-earth {
+ display: inline-block;
+ width: 24px;
+ height: 24px;
+ background-image: url("../img/common/earth.svg");
+ cursor: pointer;
+ margin-right: 12px;
+ vertical-align: bottom;
+}
+
+.icon-tick {
+ display: inline-block;
+ width: 24px;
+ height: 24px;
+ background-image: url("../img/common/tick.svg");
+ cursor: pointer;
+ margin-right: 16px;
+ vertical-align: bottom;
+}
+.icon-down {
+ display: block;
+ width: 12px;
+ height: 12px;
+}
+.light .icon-down {
+ background-image: url("../img/common/icon-down-light.svg");
+}
+.dark .icon-down {
+ background-image: url("../img/common/icon-down-dark.svg");
+}
+
+.web-lang {
+ margin-left: 20px;
+}
+
+.nav-menu > div #lang {
+ width: 113px;
+ height: 60px;
+ position: absolute;
+ font-size: 16px;
+ font-weight: 400;
+ color: var(--e-color-text1);
+ line-height: 16px;
+ margin-left: 80px;
+ padding: 8px 15px 8px 12px;
+ display: flex;
+ justify-content: space-around;
+ box-sizing: border-box;
+ align-items: center;
+ right: 147px;
+}
+.nav-menu > div #lang .active {
+ color: var(--e-color-brand1);
+}
+.nav-menu > div #lang {
+ width: auto;
+ position: relative;
+ padding-left: 0;
+ padding-right: 0;
+ top: 0;
+ right: 0;
+ margin-left: 32px;
+}
+.nav-menu > div #lang span {
+ margin-right: 8px;
+ white-space: nowrap;
+}
+
+.nav-menu > div .option,
+
+.nav-menu > div .option {
+ width: 134px;
+}
+
+.nav-menu > div .angle {
+ position: absolute;
+ top: -6px;
+ left: 50%;
+ width: 10px;
+ height: 10px;
+ border-top: 1px solid rgba(0, 47, 167, 0.5);
+ border-left: 1px solid rgba(0, 47, 167, 0.5);
+ background: var(--e-color-bg2);
+ margin: 0 0 0 -5px;
+ transform: rotate(45deg);
+ z-index: 2;
+}
+
+/* 搜索部分 */
+
+.search-docs {
+ width: 100%;
+ height: 400px;
+ background: var(--e-color-brand1);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ margin-top: 60px;
+}
+
+.search-docs > div {
+ display: flex;
+ flex-direction: column;
+}
+
+.search-docs > div img {
+ display: block;
+ width: 319px;
+ height: 144px;
+ margin: 0 auto;
+}
+
+.search-docs > div h1 {
+ font-size: 36px;
+ color: #ffffff;
+ line-height: 40px;
+ margin: 20px auto 30px auto;
+}
+
+.search-docs > div .input {
+ position: relative;
+}
+
+.search-docs > div .input input {
+ width: 800px;
+ height: 60px;
+ background: var(--e-color-bg2);
+ border-radius: 8px;
+ padding: 20px 54px 20px 24px;
+ font-size: 20px;
+ color: rgba(0, 0, 0, 0.7);
+ line-height: 20px;
+ border: 0;
+}
+
+.search-docs > div .input input:focus {
+ outline: 0;
+}
+
+.search-docs > div .icon-search {
+ position: absolute;
+ width: 28px;
+ height: 28px;
+ right: 26px;
+ top: 16px;
+}
+
+.h5 {
+ display: none;
+}
+
+.nav-box .nav-menu .h5_nav_left {
+ display: none;
+}
+
+#result-container {
+ display: none;
+}
+
+#result-container {
+ display: none;
+ position: fixed;
+ top: 0px;
+ right: 0px;
+ background: var(--e-color-bg2);
+ width: 37.5%;
+ min-height: 100vh;
+ z-index: 9999;
+ padding: 30px 60px 110px 60px;
+}
+
+#result-container > .search-header {
+ width: 100%;
+ display: flex;
+ position: relative;
+}
+
+#result-container > hr {
+ width: 100%;
+ height: 1px;
+ border: 1px solid rgba(0, 0, 0, 0.5);
+}
+
+.baseof_mask {
+ display: none;
+ position: fixed;
+ background: #000000;
+ opacity: 0.1;
+ width: 100%;
+ height: 100vh;
+ text-align: center;
+ line-height: 100vh;
+ top: 0;
+ left: 0;
+ z-index: 9;
+}
+.baseof_mask img {
+ display: none;
+ box-sizing: content-box;
+ width: 100px;
+ background-color: #000;
+}
+
+#result-container > .search-header > input {
+ width: 100%;
+ height: 40px;
+ padding-left: 40px;
+ background: var(--e-color-bg-secondary);
+ border: 1px solid transparent;
+ color: var(--e-color-text1);
+}
+#result-container > .search-header > input:focus {
+ outline: none;
+}
+#result-container > .search-header > i {
+ width: 21px;
+ height: 21px;
+ position: absolute;
+ display: inline-block;
+ top: 10px;
+ left: 10px;
+}
+
+.result-style {
+ height: 90vh !important;
+ overflow-y: auto !important;
+ width: 100% !important;
+}
+
+.nav-menu > div .mobile {
+ display: none;
+}
+
+@media screen and (max-width: 1100px) {
+ #result-container {
+ display: none;
+ }
+ .nav-box .nav-menu {
+ height: 100%;
+ }
+
+ .nav-box .nav-menu .h5_nav_left {
+ display: flex;
+ align-items: center;
+ }
+
+ .nav-box .nav-menu .left {
+ display: none;
+ }
+
+ #app {
+ display: block !important;
+ background-color: var(--e-color-bg1);
+ }
+ .h5 {
+ display: block;
+ }
+ .not-found {
+ margin-top: 40px !important;
+ }
+ .not-found img {
+ width: 265px;
+ height: 272px;
+ margin: 30px auto 0 auto;
+ }
+
+ .not-found span {
+ font-size: 24px;
+ line-height: 34px;
+ text-align: center;
+ }
+ /* 搜索框 */
+ .h5-search {
+ display: flex !important;
+ flex-direction: row;
+ justify-content: space-between;
+ }
+ .h5-search input {
+ flex-grow: 2;
+ height: 24px;
+ margin-right: 16px;
+ background: var(--e-color-bg1);
+ padding: 3px 32px;
+ font-size: 12px;
+ font-weight: 400;
+ color: var(--e-color-text1);
+ line-height: 14px;
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ }
+
+ .h5-search input:focus {
+ outline: 0;
+ }
+
+ .h5-search .search-btn {
+ width: 44px;
+ height: 32px;
+ border-radius: 4px;
+ font-size: 12px;
+ color: #ffffff;
+ line-height: 32px;
+ text-align: center;
+ }
+
+ #result-container .no-data {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin-top: 60px;
+ font-size: 16px;
+ line-height: 24px;
+ }
+
+ #result-container .no-data .empty-img {
+ width: 200px;
+ }
+
+ #result-container .no-data .empty-tip {
+ margin-top: 16px;
+ font-size: 16px;
+ line-height: 24px;
+ color: var(--o-color-text1);
+ }
+
+ /* 导航栏 */
+ .nav-menu > .right,
+ .nav-menu > div .home {
+ display: none;
+ }
+
+ .nav-box {
+ padding: 0 16px;
+ height: 48px;
+ }
+
+ .nav-menu .h5-right {
+ display: flex;
+ flex-direction: row;
+ margin-right: 10px;
+ }
+
+ .nav-menu .h5-right i {
+ display: block;
+ width: 21px;
+ height: 21px;
+ }
+
+ .nav-menu .h5-right .icon-lang {
+ display: none;
+ background-image: url("../img/common/lang.png");
+ position: relative;
+ }
+
+ .nav-menu .h5-right .icon-home {
+ background-image: url("../img/common/icon-home.svg");
+ margin: 0 7px 0 32px;
+ }
+
+ .nav-menu > div .option {
+ width: 90px;
+ box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.1);
+ left: -34px;
+ top: 28px;
+ padding: 18px 0 20px 0;
+ }
+
+ /* 搜索 */
+ .search-docs {
+ height: 300px;
+ margin-top: 70px;
+ }
+ .search-docs > div {
+ flex-direction: column-reverse;
+ }
+ .search-docs > div img {
+ width: 266px;
+ height: 120px;
+ }
+ .search-docs > div h1 {
+ width: 166px;
+ height: 80px;
+ font-size: 24px;
+ font-weight: bold;
+ margin: 0 auto 20px auto;
+ text-align: center;
+ }
+ .search-docs > div .input {
+ display: none;
+ }
+
+ /* 底部 */
+ .footer-wrapper .footer-content {
+ flex-direction: column;
+ height: 270px;
+ justify-content: center;
+ }
+
+ .footer-content .footer-left p {
+ font-size: 14px;
+ margin-top: 10px;
+ }
+
+ .footer-content .footer-left {
+ margin-bottom: 20px;
+ }
+
+ .footer-content .footer-left p:last-of-type {
+ display: none;
+ }
+
+ .footer-content .footer-right p {
+ text-align: center;
+ }
+
+ .footer-content .footer-right p:last-of-type {
+ display: block;
+ margin-top: 20px;
+ }
+
+ .nav-menu > div .mobile {
+ display: inline;
+ margin-left: -29px;
+ }
+}
+
+.search-result {
+ overflow-y: auto;
+ max-height: 98vh;
+ background-color: var(--e-color-bg2);
+}
+#result-container .search-result ul {
+ padding-top: 40px;
+}
+
+i {
+ font-style: normal;
+}
diff --git a/static/css/cookie.css b/static/css/cookie.css
new file mode 100644
index 0000000..a87aa2e
--- /dev/null
+++ b/static/css/cookie.css
@@ -0,0 +1,340 @@
+/* cookie管理 */
+.cookie-notice {
+ position: fixed;
+ bottom: 0;
+ z-index: 10000;
+ width: 100%;
+}
+.cookie-notice-content {
+ background-color: rgba(var(--o-mixedgray-1), 0.9);
+ backdrop-filter: blur(5px);
+ box-shadow: var(--o-shadow-1);
+}
+.content-wrapper {
+ --header-nav-height: 80px;
+ --header-menu-height: 60px;
+ --header-mobile-nav: 48px;
+ --header-height: calc(var(--header-nav-height) + var(--header-menu-height));
+ --footer-height: 96px;
+ --header-padding: 64px;
+ --content-padding: 12px;
+ --content-max-width: 1440px;
+ --nav-side: 428px;
+ padding-left: var(--content-padding);
+ padding-right: var(--content-padding);
+ margin: 0 auto;
+ max-width: var(--content-max-width);
+}
+.cookie-notice-wrap {
+ padding-top: 24px;
+ padding-bottom: 24px;
+ display: flex;
+ justify-content: space-between;
+ position: relative;
+ align-items: center;
+}
+.cookie-notice-left {
+ width: 60%;
+}
+.cookie-title {
+ font-size: 16px;
+ line-height: 24px;
+ color: var(--o-color-info1);
+ font-weight: 500;
+}
+.cookie-desc {
+ font-size: 12px;
+ line-height: 18px;
+ color: var(--o-color-info2);
+ margin-top: 8px;
+}
+.cookie-notice-right {
+ display: flex;
+ align-items: center;
+ margin-top: 12px;
+}
+.o-button {
+ border: 1px solid var(--o-color-primary1);
+ color: var(--o-color-primary1);
+ line-height: 30px;
+ padding: 0 16px;
+ display: inline-block;
+ background: none;
+ font-size: 14px;
+ border-radius: 32px;
+ cursor: pointer;
+ transition: all var(--o-duration-s) var(--o-easing-standard);
+}
+.o-button:hover {
+ color: var(--o-color-white);
+ background-color: var(--o-color-primary1);
+}
+.o-button:active {
+ color: var(--o-color-white);
+ border: 1px solid var(--o-color-primary3);
+ background-color: var(--o-color-primary3);
+}
+.o-button + button {
+ margin-left: 16px;
+}
+
+.o-layer-dialog {
+ position: fixed;
+ inset: 0;
+ z-index: 1011;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.o-dialog {
+ z-index: 1011;
+}
+.o-layer-mask {
+ position: absolute;
+ inset: 0;
+ background-color: var(--o-color-mask1);
+ z-index: -1;
+}
+.o-dlg-main {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ padding: 24px;
+ background-color: var(--o-color-fill2);
+ width: 930px;
+ min-height: 424px;
+ max-height: 730px;
+ border-radius: 16px;
+ box-shadow: var(--o-shadow-1);
+}
+
+.o-dlg-header {
+ font-size: 32px;
+ color: var(--o-color-info1);
+ line-height: 44px;
+ text-align: center;
+ margin-bottom: 12px;
+}
+.o-dialog-closed,
+.cookie-close {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ height: 24px;
+ width: 24px;
+ cursor: pointer;
+ mask-image: url(../img/common/icon-close-light.svg);
+ -webkit-mask-image: url(../img/common/icon-close-light.svg);
+ mask-size: cover;
+ -webkit-mask-size: cover;
+ background-color: var(--o-color-info2);
+ transition: all 0.25s cubic-bezier(0, 0, 0, 1);
+}
+.o-dialog-closed:hover,
+.cookie-close:hover,
+.evaluate-close:hover {
+ transform: rotate(180deg);
+ background-color: var(--o-color-primary1);
+}
+
+@media screen and (max-width: 840px) {
+ .cookie-notice-wrap {
+ flex-direction: column;
+ align-items: center;
+ padding: 16px;
+ }
+ .cookie-notice-left {
+ width: 100%;
+ }
+ .cookie-title {
+ font-size: 16px;
+ line-height: 24px;
+ text-align: center;
+ }
+ .cookie-notice-right button {
+ width: 100%;
+ display: block;
+ margin: 12px 0 0 !important;
+ line-height: 26px;
+ }
+ .cookie-notice-right {
+ flex-direction: column;
+ align-items: center;
+ width: 100%;
+ margin: 0;
+ }
+}
+
+.o-layer-dialog {
+ position: fixed;
+ inset: 0;
+ z-index: 1011;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+}
+.o-dialog {
+ z-index: 1011;
+}
+.o-layer-mask {
+ position: absolute;
+ inset: 0;
+ background-color: var(--o-color-mask1);
+ z-index: -1;
+}
+.o-dlg-main {
+ position: relative;
+ display: flex;
+ flex-direction: column;
+ padding: 24px;
+ background-color: var(--o-color-fill2);
+ width: 930px;
+ min-height: 424px;
+ max-height: 730px;
+ border-radius: 16px;
+ box-shadow: var(--o-shadow-1);
+}
+.o-dlg-header {
+ font-size: 32px;
+ color: var(--o-color-info1);
+ line-height: 44px;
+ text-align: center;
+ margin-bottom: 12px;
+}
+.o-dialog-closed,
+.cookie-close {
+ position: absolute;
+ top: 8px;
+ right: 8px;
+ height: 24px;
+ width: 24px;
+ cursor: pointer;
+ mask-image: url(../img/common/icon-close-light.svg);
+ -webkit-mask-image: url(../img/common/icon-close-light.svg);
+ mask-size: cover;
+ -webkit-mask-size: cover;
+ background-color: var(--o-color-info2);
+ transition: all 0.25s cubic-bezier(0, 0, 0, 1);
+}
+.o-dialog-closed:hover,
+.cookie-close:hover,
+.evaluate-close:hover {
+ transform: rotate(180deg);
+ background-color: var(--o-color-primary1);
+}
+
+@media screen and (min-width: 1200px) {
+ .o-dialog-small .o-dlg-main {
+ width: 450px;
+ min-height: auto;
+ }
+
+ .o-dialog-small .o-dlg-header {
+ font-size: 24px;
+ line-height: 32px;
+ font-weight: 500;
+ }
+
+ .o-dialog-small .o-dlg-main {
+ padding: 32px;
+ }
+ .privacy-content .o-button {
+ line-height: 38px;
+ font-size: 16px;
+ }
+ .privacy-detail {
+ font-size: 16px;
+ line-height: 24px;
+ color: var(--o-color-info1);
+ }
+}
+
+.o-scroller-container {
+ overflow-y: auto;
+ max-height: 400px;
+}
+.manage-content {
+ padding: 12px 0;
+}
+.manage-item .item-header {
+ display: flex;
+ align-items: center;
+}
+.manage-item .item-header .item-title {
+ font-size: 20px;
+ line-height: 28px;
+ color: var(--o-color-info1);
+ font-weight: 500;
+}
+.manage-item .item-extra {
+ font-size: 14px;
+ line-height: 22px;
+ color: var(--o-color-info3);
+ margin-left: 24px;
+ display: flex;
+ align-items: center;
+}
+.manage-item .item-detail {
+ margin-top: 16px;
+ font-size: 16px;
+ line-height: 24px;
+ color: var(--o-color-info2);
+}
+.manage-item + .manage-item {
+ margin-top: 24px;
+}
+.manage-action {
+ margin-top: 24px;
+ text-align: center;
+}
+
+input[is="o-switch"] {
+ padding: 0;
+ -webkit-appearance: none;
+ display: inline-flex;
+ outline: none !important;
+ outline-offset: 0 !important;
+ box-sizing: border-box;
+ background-clip: content-box;
+ width: 42px;
+ height: 20px;
+ border: 2px solid var(--o-color-info4);
+ border-radius: 26px;
+ color: var(--o-color-info4);
+ background-color: var(--o-color-info4);
+ font-size: 0;
+ transition: all 0.2s;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-tap-highlight-color: transparent;
+}
+input[is="o-switch"]:checked {
+ color: var(--o-color-primary1);
+ border-color: var(--o-color-primary1);
+ background-color: var(--o-color-primary1);
+}
+input[is="o-switch"]::before {
+ content: "";
+ flex: 0;
+ transition: flex 0.2s;
+}
+
+input[is="o-switch"]::after {
+ content: "";
+ width: 16px;
+ height: 16px;
+ border-radius: 100%;
+ background-color: #fff;
+ opacity: 1;
+ visibility: visible;
+}
+
+input[is="o-switch"]:active {
+ box-shadow: inset 1px 1px 1px rgba(0, 0, 0, 0.1);
+}
+
+input[is="o-switch"]:checked::before {
+ flex: 1;
+}
diff --git a/static/css/doc_map.css b/static/css/doc_map.css
new file mode 100644
index 0000000..b87e32a
--- /dev/null
+++ b/static/css/doc_map.css
@@ -0,0 +1,141 @@
+.doc-map {
+ padding: 0 120px;
+ padding-bottom: 64px;
+ margin-top: 32px;
+}
+.line-title {
+ margin-top: 24px;
+ padding: 16px 24px;
+ font-size: 24px;
+ line-height: 36px;
+ font-weight: 500;
+ color: var(--e-color-white);
+ background-size: 100% 100%;
+}
+.line-title:nth-of-type(1) {
+ margin-top: 0;
+}
+
+.secondary-title {
+ margin: 12px 0 16px;
+ color: var(--e-color-text1);
+ line-height: 28px;
+ font-size: 20px;
+}
+.secondary-title:first-child {
+ margin-top: 0;
+}
+.bg-1 {
+ background-image: url(../img/doc-map/bg-1.png);
+}
+.line-main {
+ margin-top: 16px;
+ padding: 24px;
+ background-color: var(--e-color-bg2);
+}
+.link-list {
+ display: flex;
+ flex-wrap: wrap;
+ gap: 12px 80px;
+ font-size: 18px;
+ padding-bottom: 16px;
+ border-bottom: 1px solid var(--e-color-border2);
+}
+.no-border {
+ padding-bottom: 0;
+ border: none;
+}
+.tool-left {
+ display: flex;
+ align-items: center;
+}
+.tool-item {
+ display: flex;
+ justify-content: space-between;
+ padding: 28px 0;
+ border-top: 1px solid var(--e-color-border2);
+ font-size: 16px;
+ color: var(--e-color-text4);
+ border-bottom: none;
+}
+.tool-item:last-child {
+ padding-bottom: 0;
+}
+.tool-item .tool-right {
+ display: flex;
+ gap: 24px;
+}
+.download-btn {
+ cursor: pointer;
+ display: flex;
+ align-items: center;
+ padding: 4px 16px;
+ border: 1px solid var(--e-color-border3);
+ font-size: 14px;
+ color: var(--e-color-brand1);
+}
+
+.download-btn svg {
+ transition: all 0.3s;
+ margin-left: 8px;
+ width: 12px;
+}
+.hover-transform:hover svg {
+ transform: translateX(4px);
+}
+.software-download svg {
+ transform: rotate(90deg);
+}
+@media screen and (max-width: 1620px) {
+ .doc-map {
+ margin-right: 0;
+ }
+}
+
+@media screen and (max-width: 1100px) {
+ .doc-map {
+ margin-top: 40px;
+ padding: 0 16px;
+ transform: none;
+ }
+ .map-title {
+ font-size: 16px;
+ text-align: center;
+ line-height: normal;
+ }
+ .line-title {
+ margin-top: 16px;
+ padding: 12px;
+ font-size: 14px;
+ line-height: normal;
+ }
+ .line-title:first-child {
+ margin-top: 24px;
+ }
+ .line-main {
+ margin-top: 8px;
+ padding: 12px;
+ }
+ .line-main .link-list {
+ font-size: 12px;
+ gap: 8px 16px;
+ }
+ .secondary-title {
+ margin-bottom: 8px;
+ font-size: 12px;
+ line-height: normal;
+ }
+ .download-btn {
+ padding: 4px 8px;
+ font-size: 12px;
+ }
+ .download-btn:hover svg {
+ transform: none;
+ }
+ .line-main .tool-item {
+ padding: 8px 0;
+ }
+ .line-main .tool-item:last-child {
+ padding-bottom: 0;
+ }
+}
diff --git a/static/css/docdetail.css b/static/css/docdetail.css
new file mode 100644
index 0000000..7f1b5e1
--- /dev/null
+++ b/static/css/docdetail.css
@@ -0,0 +1,876 @@
+/* 详情页面样式 */
+/* 版本选择 */
+
+#app .left {
+ background-color: var(--e-color-kleinblue5);
+ position: fixed;
+ left: 0;
+ top: 0;
+ height: 100vh;
+ z-index: 10;
+}
+@media screen and (max-width: 1100px) {
+ #app .left {
+ width: 60vw;
+ position: fixed;
+ left: 0;
+ top: 0;
+ z-index: 9999;
+ background-color: var(--e-color-bg2);
+ transform: translateX(-100%);
+ transition: all 0.5s;
+ }
+ #app .left::-webkit-scrollbar {
+ width: 0px;
+ }
+ #app .show-left {
+ transform: translateX(0);
+ }
+}
+#menu-box {
+ width: 300px;
+ height: calc(100vh - 60px);
+}
+#menu-box .pc-logo {
+ width: 260px;
+ padding-left: 40px;
+ padding-top: 16px;
+ padding-bottom: 12px;
+}
+#menu-box .pc-logo img {
+ height: 32px;
+ cursor: pointer;
+}
+@media screen and (max-width: 1100px) {
+ #menu-box {
+ top: 0;
+ z-index: 9999;
+ padding-top: 0;
+ }
+ #menu-box::-webkit-scrollbar {
+ width: 0;
+ }
+ #menu-box .pc-logo {
+ display: none;
+ }
+}
+
+#right-style .right-nav {
+ display: flex;
+ align-items: center;
+ margin-left: 32px;
+}
+#version-select {
+ height: 40px;
+ font-size: 18px;
+ line-height: 40px;
+ color: var(--e-color-brand1);
+ box-sizing: border-box;
+ cursor: pointer;
+ position: relative;
+}
+#version-select .version-menu {
+ width: 24px;
+ height: 24px;
+ background-image: url(../img/common/more-version.svg);
+}
+#version-select .option {
+ width: 220px;
+ position: absolute;
+ left: -1px;
+ top: 39px;
+ z-index: 99;
+ overflow: hidden;
+ background-color: var(--e-color-kleinblue7);
+ height: 0;
+ transition: all 0.2s;
+}
+#version-select .option-active {
+ height: 168px;
+ overflow-y: scroll;
+}
+#version-select .option-active::-webkit-scrollbar {
+ width: 4px;
+ height: 8px;
+ position: relative;
+ right: 4px;
+ background-color: var(--e-color-kleinblue7);
+}
+#version-select .option-active::-webkit-scrollbar-button {
+ width: 0;
+ height: 0;
+}
+#version-select .option-active::-webkit-scrollbar-thumb {
+ width: 4px;
+ height: 4px;
+ border-radius: 2px;
+ background-color: #406fe7;
+}
+
+#version-select .option li {
+ font-size: 16px;
+ display: block;
+ cursor: pointer;
+ color: #ffffff;
+ line-height: 24px;
+ box-sizing: border-box;
+ position: relative;
+ z-index: 3;
+}
+#version-select .option li a {
+ display: block;
+ padding-left: 8px;
+ padding-top: 8px;
+ color: #ffffff;
+}
+#version-select .option .active a {
+ color: #feb32a;
+}
+#version-select .option li:nth-last-of-type(1) {
+ padding-bottom: 8px;
+}
+
+#version-select .option li:hover a {
+ color: #feb32a;
+}
+
+#version-select .angle {
+ position: absolute;
+ top: -6px;
+ left: 50%;
+ width: 10px;
+ height: 10px;
+ border-top: 1px solid rgba(0, 47, 167, 0.5);
+ border-left: 1px solid rgba(0, 47, 167, 0.5);
+ background: var(--e-color-bg2);
+ margin: 0 0 0 -5px;
+ transform: rotate(45deg);
+ z-index: 2;
+}
+
+/* 左侧导航栏 */
+
+#docstreeview {
+ height: calc(100vh - 240px);
+ overflow-x: hidden;
+ overflow-y: scroll;
+}
+@media screen and (max-width: 1100px) {
+ #docstreeview {
+ height: calc(100vh - 164px);
+ color: var(--e-color-text1);
+ }
+ #docstreeview a {
+ color: var(--e-color-text1);
+ }
+}
+
+.jstree-open .jstree-ocl,
+.jstree-closed .jstree-ocl {
+ display: inline-block;
+ font-size: 12px;
+ z-index: 88;
+ cursor: pointer;
+ transition: all 0.2s;
+}
+
+#menu-box .jstree-node > .jstree-anchor {
+ display: inline-block;
+}
+
+#menu-box .jstree-node[aria-level="1"] > .jstree-anchor {
+ max-width: 200px;
+}
+#menu-box .jstree-node[aria-level="2"] > .jstree-anchor {
+ max-width: 200px;
+}
+
+#menu-box .jstree-node[aria-level="3"] > .jstree-anchor {
+ max-width: 200px;
+}
+
+#menu-box .jstree-node[aria-level="4"] > .jstree-anchor {
+ max-width: 200px;
+}
+
+#menu-box .jstree-node[aria-level="5"] > .jstree-anchor {
+ max-width: 200px;
+}
+
+#menu-box .jstree-node > .jstree-anchor,
+#menu-box .jstree-node > .jstree-anchor p a {
+ font-size: var(--o-font-size-h8);
+ color: var(--e-color-white);
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+#menu-box .jstree-node > .jstree-anchor > p > a {
+ display: inline-block;
+ max-width: 200px;
+ margin-left: 0;
+ overflow: hidden;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+}
+#docstreeview > ul > li > ul > li a {
+ font-size: var(--o-font-size-text) !important;
+}
+#menu-box .jstree-node > .jstree-anchor:focus,
+#menu-box .jstree-node > .jstree-anchor p {
+ outline: 0;
+}
+
+.jstree-node .jstree-children {
+ padding: 20px 0 0 0;
+}
+@media screen and (max-width: 1100px) {
+ .jstree-node .jstree-children {
+ padding: 0;
+ }
+ .jstree-open .jstree-ocl,
+ .jstree-closed .jstree-ocl {
+ margin-right: 0;
+ }
+}
+
+#menu-box .jstree-open > .jstree-anchor,
+#menu-box .jstree-node > .jstree-anchor.jstree-clicked {
+ color: #feb32a !important;
+}
+@media screen and (max-width: 1100px) {
+ #menu-box .jstree-open > .jstree-anchor,
+ #menu-box .jstree-node > .jstree-anchor.jstree-clicked {
+ color: var(--e-color-brand1) !important;
+ }
+}
+
+#docstreeview::-webkit-scrollbar-track {
+ border-radius: 8px;
+ background-color: #caeaff;
+ width: 0;
+}
+#docstreeview::-webkit-scrollbar {
+ border-radius: 8px;
+ width: 0;
+ background-color: #f5f5f5;
+}
+#docstreeview::-webkit-scrollbar-thumb {
+ border-radius: 4px;
+ background: rgba(0, 47, 167, 0.1);
+}
+
+/* 头部链接 */
+.top-link {
+ flex-grow: 2;
+ height: 60px;
+}
+.top-link .link-container {
+ display: flex;
+ flex-direction: row-reverse;
+ align-items: center;
+ justify-content: space-between;
+}
+
+#version-select {
+ font-size: 16px;
+}
+.docs-a a,
+.docs-a span {
+ font-size: 12px;
+ color: var(--e-color-text1);
+ line-height: 16px;
+}
+.docs-a a {
+ color: var(--e-color-text4);
+}
+.docs-a a:nth-last-of-type(1) {
+ color: var(--e-color-text1);
+}
+@media screen and (max-width: 1100px) {
+ .docs-a a,
+ .docs-a span {
+ font-size: 12px;
+ }
+ .docs-a > i {
+ width: 16px !important;
+ }
+}
+
+.docs-a > i {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ background-image: url("../img/common/icon-chevron-right-gray.svg");
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: center center;
+}
+.docs-a > i:nth-last-of-type(1) {
+ background-image: url("../img/common/icon-chevron-right.svg");
+}
+.dark .docs-a > i {
+ background-image: url("../img/common/icon-chevron-dark-gray.svg");
+}
+.dark .docs-a > i:nth-last-of-type(1) {
+ background-image: url("../img/common/icon-chevron-right-dark.svg");
+}
+#prev a,
+#next a,
+#toc-list a {
+ color: var(--e-color-text1);
+}
+.prev-next {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ grid-template-areas: "A B C";
+ width: 100%;
+ max-width: 1174px;
+}
+.prev-next #prev,
+#h5-menu ul .h5-prev {
+ grid-area: A;
+}
+.prev-next #next,
+#h5-menu ul .h5-next {
+ grid-area: C;
+ width: 100%;
+ justify-content: end;
+}
+.prev-next .disabled {
+ display: none;
+}
+@media (max-width: 1100px) {
+ .prev-next {
+ display: none;
+ }
+}
+.prev-next::-webkit-scrollbar {
+ width: 0;
+}
+.prev-next > div {
+ display: flex;
+ justify-content: space-between;
+}
+#prev a,
+#next a {
+ display: flex;
+ align-items: center;
+}
+#prev a span,
+#next a span {
+ line-height: 22px;
+}
+#source,
+#feedbook,
+#prev,
+#next {
+ cursor: pointer;
+}
+.icon-prev,
+.icon-next {
+ height: 100%;
+ display: flex;
+ align-items: center;
+ color: var(--e-color-brand1);
+}
+.icon-prev {
+ width: 16px;
+ transform: rotateZ(180deg);
+ margin-right: 8px;
+}
+.icon-next {
+ width: 16px;
+ margin-left: 8px;
+}
+
+.link-container .top-right {
+ display: flex;
+ flex-direction: row;
+ height: 100%;
+}
+
+.top-link .prev-next .icon-prev,
+.top-link .prev-next .icon-next,
+.top-link .other-link .source-code,
+.top-link .other-link .feedbook {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ margin-bottom: -3px;
+ margin-right: 6px;
+}
+.top-link .other-link .source-code,
+.top-link .other-link .feedbook {
+ margin-bottom: 0;
+}
+.top-link .other-link a span {
+ color: var(--e-color-text1);
+}
+.top-link .other-link a:hover span {
+ color: var(--e-color-brand1);
+}
+
+.top-link .prev-next .icon-next {
+ margin-right: 0;
+ margin-left: 6px;
+}
+#prev:hover a,
+#next:hover a {
+ color: var(--e-color-brand1);
+}
+
+.top-link .prev-next span,
+.top-link .other-link span {
+ font-size: 16px;
+ color: var(--e-color-brand1);
+ line-height: 16px;
+ white-space: nowrap;
+}
+.top-link .other-link a {
+ display: flex;
+ align-items: center;
+}
+
+.top-link .prev-next .icon-prev {
+ background-image: url("../img/detail/icon-prev.svg");
+}
+
+.top-link .prev-next .icon-next {
+ background-image: url("../img/detail/icon-next.svg");
+}
+
+.top-link .other-link {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+}
+
+.light .top-link .other-link .source-code {
+ background-image: url("../img/detail/source-code-light.svg");
+}
+.dark .top-link .other-link .source-code {
+ background-image: url("../img/detail/source-code-dark.svg");
+}
+
+.light .top-link .other-link .feedbook {
+ background-image: url("../img/detail/feedback-light.svg");
+}
+.dark .top-link .other-link .feedbook {
+ background-image: url("../img/detail/feedback-dark.svg");
+}
+
+/* 中间文档 */
+
+#docsMenu {
+ animation: fadeIn 0.8s linear;
+ -webkit-animation: fadeIn 0.8s linear;
+}
+@keyframes fadeIn {
+ 0% {
+ opacity: 0;
+ }
+ 50% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ display: block;
+ }
+}
+
+#page {
+ font-size: 14px;
+ color: #36383d;
+ line-height: 24px;
+ margin-top: 60px;
+ padding-top: 40px;
+ max-width: 1460px;
+ padding: 40px 64px 64px;
+ min-height: calc(100vh - 320px);
+}
+
+@media screen and (max-width: 1100px) {
+ #page {
+ padding: 98px 0 0px 0;
+ }
+}
+
+@media screen and (max-width: 1950px) {
+ #page {
+ margin-right: 340px;
+ }
+}
+
+#h5-menu ul {
+ display: none;
+}
+
+#h5-menu-top {
+ display: none;
+}
+
+@media screen and (max-width: 1100px) {
+ .top-link,
+ #title-evaluate {
+ display: none;
+ }
+ #menu-box {
+ transition: all 0.2s;
+ }
+ #h5-menu-top {
+ display: block;
+ }
+
+ #h5-menu {
+ position: fixed;
+ width: 100vw;
+ top: 48px;
+ z-index: 99;
+ }
+
+ #page {
+ margin: 90px auto 0;
+ padding: 0 16px;
+ padding-top: 16px;
+ width: 100%;
+ box-sizing: border-box;
+ }
+
+ #h5-menu ul {
+ width: 100%;
+ height: 44px;
+ background: var(--e-color-bg2);
+ box-shadow: 0px 1px 3px 0px rgba(0, 0, 0, 0.1);
+ padding: 12px 16px;
+ display: grid;
+ grid-template-columns: repeat(3,1fr);
+ grid-template-areas: "A B C";
+ font-size: 14px;
+ color: var(--e-color-brand1);
+ line-height: 24px;
+ }
+ #h5-menu ul .h5-sersion{
+ grid-area: B;
+ white-space:nowrap
+ }
+
+ #h5-menu a span {
+ color: var(--e-color-brand1);
+ }
+ #h5-menu a i {
+ width: 14px;
+ height: 14px;
+ }
+ #h5-menu a span {
+ color: var(--e-color-text1);
+ font-size: 12px;
+ }
+ #h5-menu a .icon-next {
+ margin-left: 8px;
+ }
+
+ #h5-menu a .icon-prev {
+ margin-right: 8px;
+ }
+
+ #h5-menu-top .container {
+ width: 100%;
+ }
+ #page {
+ width: 100%;
+ box-sizing: border-box;
+ }
+ .docscontainer {
+ height: auto !important;
+ }
+
+ #menu-box {
+ background: var(--e-color-bg2);
+ width: 100%;
+ height: 100vh;
+ }
+
+ #version-select {
+ display: none;
+ }
+
+ #h5-menu-top p {
+ font-size: 14px;
+ color: var(--e-color-text1);
+ line-height: 24px;
+ text-align: center;
+ position: relative;
+ }
+
+ #h5-menu-top p .icon-close {
+ display: block;
+ background-image: url("../img/menu/icon-close-h5.svg");
+ position: absolute;
+ width: 12px;
+ height: 12px;
+ right: 20px;
+ top: 6px;
+ }
+ .menu-select-box .select-box .icon-down {
+ background-image: url(../img/menu/icon-down-h5.svg) !important;
+ margin-left: 0;
+ }
+ #menu-box .jstree-node > .jstree-anchor,
+ #menu-box .jstree-node > .jstree-anchor p a {
+ color: var(--e-color-text1);
+ }
+ #docstreeview {
+ margin-top: 0;
+ }
+}
+
+.menu-select-box {
+ height: 60px;
+}
+@media screen and (max-width: 1100px) {
+ .menu-select-box {
+ height: 38px;
+ }
+ #h5-menu-top .menu-select-box {
+ height: auto;
+ margin-top: 0;
+ padding-top: 30px;
+ }
+}
+
+.menu-select-box .select-box .option {
+ top: 46px !important;
+}
+
+.menu-select-box .select-box .icon-down {
+ margin-right: -19px !important;
+}
+
+@media screen and (max-width: 1100px) {
+ .searcher {
+ display: none;
+ z-index: 2000;
+ position: fixed;
+ overflow: scroll;
+ background-color: var(--e-color-bg2);
+ top: 48px;
+ max-height: 80vh;
+ width: 100%;
+ }
+
+ .h5_search_container {
+ display: flex;
+ margin-top: 80px;
+ width: 315px;
+ flex-direction: row;
+ justify-content: space-between;
+ }
+ .h5_search_container input {
+ width: 256px;
+ height: 32px;
+ background: var(--e-color-bg2);
+ border-radius: 4px;
+ padding: 9px 12px;
+ font-size: 12px;
+ font-weight: 400;
+ color: var(--e-color-text1);
+ line-height: 14px;
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ }
+ .h5_search_container input:focus {
+ outline: 0;
+ }
+
+ .h5_search_container .h5_search_btn {
+ width: 44px;
+ height: 32px;
+ background: var(--e-color-brand1);
+ border-radius: 4px;
+ font-size: 12px;
+ color: #ffffff;
+ line-height: 32px;
+ text-align: center;
+ }
+
+ .h5_left span {
+ position: relative;
+ left: -30px;
+ font-size: 16px;
+ }
+
+ .h5_left a img {
+ width: 154px;
+ height: auto;
+ }
+
+ .h5-right .icon-lang {
+ margin-right: 33px;
+ }
+
+ .app-mobile > img {
+ margin-top: 90px;
+ }
+
+ .h5_versions {
+ padding-left: 30px;
+ padding-right: 30px;
+ margin-top: 40px;
+ }
+
+ .h5_versions > span {
+ font-size: 16px;
+ }
+
+ #h5_versions {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-around;
+ flex-wrap: wrap;
+ margin-top: 20px;
+ }
+
+ #h5_versions div {
+ width: 40%;
+ height: 40px;
+ background: var(--e-color-bg2);
+ box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+ font-size: 14px;
+ font-weight: normal;
+ color: var(--e-color-brand1);
+ text-align: center;
+ }
+
+ .hot_documentation {
+ display: flex;
+ flex-direction: column;
+ margin-top: 20px;
+ margin-left: 30px;
+ }
+
+ .hot_documentation div {
+ width: 315px;
+ height: auto;
+ padding: 30px;
+ text-align: left;
+ margin-top: 30px;
+ background: var(--e-color-bg2);
+ box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+ }
+
+ .hot_documentation div a {
+ font-size: 16px;
+ font-weight: normal;
+ color: var(--e-color-brand1);
+ line-height: 26px;
+ }
+
+ .hot_documentation div span {
+ font-size: 14px;
+ font-weight: normal;
+ color: #00000080;
+ line-height: 24px;
+ margin-top: 20px;
+ }
+
+ .h5_community {
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ margin-left: 30px;
+ margin-right: 30px;
+ margin-top: 20px;
+ }
+
+ .h5_community div {
+ width: 145px;
+ height: 40px;
+ text-align: center;
+ background: var(--e-color-bg2);
+ box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+ padding-top: 8px;
+ }
+
+ .h5_community div a {
+ font-size: 14px;
+ font-weight: normal;
+ color: var(--e-color-brand1);
+ line-height: 24px;
+ }
+
+ .search-result {
+ margin-left: 16px;
+ margin-right: 16px;
+ }
+
+ .h5_content {
+ margin-top: 60px;
+ }
+
+ .mask-mobile {
+ background-color: rgba(0, 0, 0, 0.4);
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: 1000;
+ height: calc(100vh);
+ display: none;
+ }
+ .h5-searcher {
+ display: block;
+ }
+}
+
+.h5-searcher {
+ display: none;
+}
+
+pre {
+ position: relative;
+}
+
+.btn_pre_copy {
+ cursor: pointer;
+ width: 24px;
+ height: 24px;
+ position: absolute;
+ top: 10px;
+ right: 10px;
+ background-image: url(/img/common/copy.png);
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+}
+
+.btn_pre_copy:hover {
+ background-image: url(/img/common/copied.png);
+ background-repeat: no-repeat;
+}
+
+code {
+ padding: 0 4px;
+}
+
+code[class*="language-"] {
+ display: block;
+ overflow-x: auto;
+ padding: 30px;
+}
+code.hljs {
+ padding: 30px;
+}
+
+#right-style {
+ display: flex;
+ flex-grow: 1;
+ justify-content: space-between;
+ align-items: center;
+}
+@media screen and (min-width: 1980px) {
+ #h5-menu-top .select-box {
+ right: 190px !important;
+ }
+}
diff --git a/static/css/docsearch.css b/static/css/docsearch.css
new file mode 100644
index 0000000..452c901
--- /dev/null
+++ b/static/css/docsearch.css
@@ -0,0 +1,220 @@
+/* 搜索页面样式 */
+
+.h5-search {
+ display: none;
+}
+
+.search-result {
+ min-height: calc(100vh - 460px);
+ padding-bottom: 200px;
+ margin-top: var(--o-spacing-h2);
+ border-top: 1px solid var(--e-color-division1);
+ scrollbar-width: none;
+ -ms-overflow-style: none
+}
+
+.search-result .no-data {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin-top: 60px;
+ font-size: 16px;
+ line-height: 24px;
+}
+
+.search-result .no-data .empty-img {
+ width: 180px;
+}
+
+.search-result .no-data .empty-tip {
+ margin-top: 16px;
+ font-size: 16px;
+ line-height: 24px;
+ color: var(--o-color-text1);
+}
+
+.search-result::-webkit-scrollbar{
+ display: none;
+}
+@media screen and (max-width: 1100px){
+ .search-result{
+ margin-top: 0;
+ border-top:none;
+ padding-bottom: 40px;
+ }
+}
+.h5-search-result{
+ display: none;
+}
+.search-result::-webkit-scrollbar-track {
+ border-radius:10px;
+ background-color:#CAEAFF;
+}
+
+.search-result::-webkit-scrollbar {
+ width:6px;
+ background-color:#F5F5F5;
+}
+
+.search-result::-webkit-scrollbar-thumb {
+ border-radius:4px;
+ background: rgba(0, 47, 167, 0.1);
+}
+
+.search-result .main-text,
+.search-result .res-title span,
+.search-result .res-desc span {
+ color: var(--e-color-brand1);
+}
+
+
+.search-result>ul>li {
+ margin-bottom: 40px;
+}
+
+.search-result .title,.search-result ul li .res-title {
+ font-size: 20px;
+ color: var(--e-color-text1);line-height: 28px;
+}
+.search-result ul li .res-title {
+ cursor: pointer;
+}
+
+.search-result ul li .res-desc {
+ font-size: 14px;
+ color: var(--e-color-text4);
+ line-height: 22px;
+ margin: 16px 0 8px 0;
+}
+.right-nav .search-result ul li .res-desc{
+ margin: 16px 0;
+}
+
+.search-result ul li .res-vers {
+ font-size: 12px;
+ color: var(--e-color-text4);
+ line-height: 18px;
+}
+
+.search-result ul li .res-vers span {
+ color: var(--e-color-text4);
+}
+
+#pagination ._pages ._home,
+#pagination ._pages ._last {
+ display: none;
+}
+
+#baseof-pagination ._pages ._home,
+#baseof-pagination ._pages ._last {
+ display: none;
+}
+
+#web-pagination ._pages ._home,
+#web-pagination ._pages ._last {
+ display: none;
+}
+
+#pagination ._pages ._next_,
+#pagination ._pages ._prev_,
+#pagination ._pages ._pages_li_1{
+ background-color: var(--o-pagination-bg-color);
+ margin: 0 5px;
+}
+
+#baseof-pagination ._pages ._next_,
+#baseof-pagination ._pages ._prev_,
+#baseof-pagination ._pages ._pages_li_1{
+ background-color: var(--o-pagination-bg-color);
+ margin: 0 5px;
+}
+
+#web-pagination ._pages ._next_,
+#web-pagination ._pages ._prev_,
+#web-pagination ._pages ._pages_li_1{
+ background-color:var(--o-pagination-bg-color);
+ margin: 0 5px;
+}
+
+#pagination ._page_container ._pages {
+ margin-left: 10px;
+}
+
+#baseof-pagination ._page_container ._pages {
+ margin-left: 10px;
+}
+
+#web-pagination ._page_container ._pages {
+ margin-left: 10px;
+}
+
+
+@media screen and (max-width: 1100px) {
+
+
+ .body_content .h5-search {
+ position: relative;
+ margin-top: 40px;
+ }
+
+ .search-page div>input {
+ border: 1px solid var(--e-color-brand1);
+ }
+
+ .search-result .title,.search-result ul li .res-title {
+ font-size: 14px;
+ color: var(--e-color-text1); line-height: 22px;
+ }
+
+ .search-result ul li .res-vers {
+ font-size: 14px;
+ line-height: 24px;
+ }
+
+ .search-result .title {
+ padding: 17px 0 9px 0;
+ border-bottom: 1px solid var(--e-color-text1);
+ }
+
+ .search-result ul li .res-desc {
+ margin: 8px 0;
+ font-size: 12px;
+ line-height: 18px;
+ }
+
+ .search-result>ul>li {
+ margin-bottom: 16px;
+ padding-top: 16px;
+ }
+ .search-result>ul>li~li{
+ border-top: 1px solid var(--e-color-division1);
+ }
+
+ .search-result {
+ display: none;
+ }
+}
+.right-nav #result-container .search-result ul {
+ padding-top: 40px;
+}
+.h5-search-result::-webkit-scrollbar{
+ display: none !important;
+}
+
+.h5-search-result .no-data-mobile {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin-top: 16px;
+}
+
+.h5-search-result .no-data-mobile .empty-img-mobile {
+ width: 160px;
+}
+
+.h5-search-result .no-data-mobile .empty-tip-mobile {
+ margin-top: 8px;
+ font-size: 14px;
+ line-height: 24px;
+ color: var(--o-color-text1);
+}
\ No newline at end of file
diff --git a/static/css/float.css b/static/css/float.css
new file mode 100644
index 0000000..cb0f323
--- /dev/null
+++ b/static/css/float.css
@@ -0,0 +1,1354 @@
+.float-wrap {
+ position: fixed;
+ right: 40px;
+ bottom: 200px;
+ width: 48px;
+}
+[lang="en"] .float-wrap {
+ width: 68px;
+}
+.float-wrap .bug-box {
+ display: none;
+ width: 100%;
+ background-image: url(../img/float/bug-bg.png);
+ background-size: 100%;
+ margin-bottom: 12px;
+ box-shadow: var(--e-shadow-l2);
+ position: relative;
+ user-select: none;
+ border-radius: 4px;
+}
+.float-wrap .bug-box.is-close {
+ display: none !important;
+}
+.float-wrap .bug-box .bug-text {
+ width: 100%;
+ height: 100%;
+ font-size: 14px;
+ line-height: 16px;
+ color: white;
+ padding: 20px 17px;
+ cursor: pointer;
+}
+[lang="en"] .float-wrap .bug-box .bug-text {
+ text-align: center;
+ padding: 20px 4px;
+ line-height: 18px;
+}
+.float-wrap .bug-box .icon-close {
+ position: absolute;
+ right: 0;
+ top: 0;
+ transform: translate(50%, -50%);
+ display: none;
+ cursor: pointer;
+}
+.float-wrap .bug-box:hover .icon-close {
+ /* display: block; */
+}
+.float-wrap .bug-box:hover {
+ background-image: url(../img/float/bug-bg-hover.png);
+}
+[lang="en"] .float-wrap .nav-box1 {
+ display: none;
+}
+#content .float-wrap .nav-box1 .item-nav:nth-of-type(1) {
+ display: none;
+}
+.float-wrap #slider-box {
+ position: absolute;
+ border-radius: 3px;
+ height: 6px;
+}
+.float-wrap #slider-box .input {
+ border-radius: 2px;
+ overflow: hidden;
+}
+.slider-container {
+ width: 80%;
+ margin: 50px auto;
+ text-align: center;
+ position: relative;
+}
+
+.slider-track {
+ width: 100%;
+ height: 8px;
+ background-color: var(--e-color-bg-secondary);
+ border-radius: 4px;
+ position: relative;
+ cursor: pointer;
+}
+@media screen and (max-width: 1100px) {
+ .slider-track {
+ margin-top: 10px;
+ height: 14px;
+ border-radius: 7px;
+ }
+}
+.slider-track .mark {
+ width: 0;
+ height: 100%;
+ border-radius: 4px;
+ background-image: linear-gradient(90deg, #62b2f6 0%, #002fa7 100%);
+ overflow: hidden;
+ position: absolute;
+ left: 0;
+ top: 50%;
+ transform: translateY(-50%);
+ z-index: 8;
+}
+.slider-track .mark .item-box {
+ display: grid;
+ align-items: center;
+ grid-template-columns: repeat(10, 1fr);
+ height: 100%;
+}
+.slider-track .mark-item:nth-of-type(1) {
+ transform: translateX(2px);
+}
+.slider-track .mark-item:nth-last-of-type(1) {
+ transform: translateX(-2px);
+ position: absolute;
+ right: 3px;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.slider-track .mark .item-box .mark-item {
+ background-color: white;
+ width: 2px;
+ height: 2px;
+}
+.slider-track .pre-mark {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ left: 0;
+ top: 50%;
+ z-index: 7;
+ transform: translateY(-50%);
+ display: grid;
+ grid-template-columns: repeat(10, 1fr);
+ align-items: center;
+}
+.slider-track .pre-mark .mark-item {
+ background-color: var(--e-color-bg6);
+ width: 2px;
+ height: 2px;
+ border-radius: 1px;
+}
+
+.slider-handle {
+ width: 20px;
+ height: 20px;
+ background-color: #007bff;
+ border-radius: 50%;
+ position: absolute;
+ top: 50%;
+ left: 0%;
+ transform: translate(-50%, -50%);
+ cursor: pointer;
+ background: linear-gradient(90deg, #62b2f6 0%, #002fa7 100%);
+ border: 6px solid var(--e-color-bg2);
+ box-shadow: var(--e-shadow-l2);
+ z-index: 9;
+ transition: scale 0.3s;
+}
+.slider-handle:hover {
+ transform: translate(-50%, -50%) scale(1.2);
+}
+/* huakuai */
+
+.float-wrap .item-nav {
+ width: 48px;
+ height: 48px;
+ padding: 12px;
+ position: relative;
+ cursor: pointer;
+ user-select: none;
+}
+.float-wrap .item-nav .icon-box {
+ width: 24px;
+ height: 24px;
+ color: var(--e-color-text1);
+}
+.float-wrap .nav-box1 .item-nav .icon-box:hover {
+ color: var(--e-color-brand1);
+}
+.float-wrap .nav-box1 {
+ background-color: var(--e-color-bg2);
+ box-shadow: var(--e-shadow-l2);
+ border-radius: 4px;
+}
+.float-wrap .nav-box1 .item-nav:nth-of-type(1) + .item-nav::before {
+ display: block;
+ content: "";
+ height: 1px;
+ width: 16px;
+ background-color: var(--e-color-bg4);
+ position: absolute;
+ left: 50%;
+ top: 0;
+ transform: translate(-50%);
+}
+[lang="en"] .float-wrap .nav-box2 {
+ width: 100%;
+ height: 68px;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+.float-wrap .nav-box2.item-nav {
+ margin-top: 12px;
+ background-color: var(--e-color-bg2);
+ box-shadow: var(--e-shadow-l2);
+ border-radius: 4px;
+}
+.float-wrap .nav-box2 .icon-box {
+ width: 24px;
+ height: 24px;
+ color: var(--e-color-text1);
+}
+.float-wrap .nav-box2 .icon-box:hover {
+ color: var(--e-color-brand1);
+}
+
+.o-popup1 {
+ position: absolute;
+ width: 360px;
+ top: 0;
+ right: 64px;
+ background-color: var(--e-color-bg2);
+ padding: 16px 30px;
+ transition: all 0.5s;
+ transform: scale(0);
+ transform-origin: 100% 50%;
+ box-shadow: var(--e-shadow-l2);
+ cursor: default;
+ border-radius: 4px;
+}
+.float-wrap .nav-box1 .item-nav .o-popup1.active {
+ transform: scale(1);
+}
+.o-popup1.show {
+ transform: scale(1);
+}
+.o-popup1 .icon-cancel {
+ position: absolute;
+ top: 5px;
+ right: 10px;
+ cursor: pointer;
+ color: var(--e-color-text1);
+}
+.o-popup1 .icon-cancel svg {
+ width: 24px;
+ height: 24px;
+}
+.o-popup1 .slider .slider-title {
+ font-size: 14px;
+ line-height: 20px;
+ color: var(--e-color-text1);
+ text-align: center;
+}
+.o-popup1 .slider .slider-title .title-name {
+ font-weight: 600;
+}
+.o-popup1 .slider .slider-body {
+ margin-top: 30px;
+ position: relative;
+}
+@media screen and (max-width: 1100px) {
+ .o-popup1 .slider .slider-body {
+ margin-top: 18px;
+ }
+}
+.o-popup1 .slider .slider-body .slider-tip {
+ position: absolute;
+ width: 28px;
+ height: 20px;
+ line-height: 20px;
+ text-align: center;
+ color: var(--e-color-text1);
+ font-size: 12px;
+ left: 0px;
+ top: -32px;
+ box-shadow: var(--e-shadow-l2);
+ transform: translateX(-50%);
+ display: none;
+}
+@media screen and (max-width: 1100px) {
+ .o-popup1 .slider .slider-body .slider-tip {
+ display: none !important;
+ }
+}
+.o-popup1 .slider .slider-body .slider-tip .slide-btn-tip {
+ width: 28px;
+ height: 20px;
+ line-height: 20px;
+ text-align: center;
+ font-size: 12px;
+ color: var(--e-color-text1);
+ background-color: var(--e-color-bg2);
+ box-shadow: var(--e-shadow-l2);
+ position: absolute;
+ top: -30px;
+ transform: translateX(-50%);
+ left: v-bind(scorePosition);
+}
+.o-popup1 .slider .slider-body .slider-tip::after {
+ border-color: var(--e-color-bg2) transparent transparent;
+ border-style: solid;
+ border-width: 8px 8px 0;
+ bottom: -5px;
+ content: "";
+ display: block;
+ height: 0;
+ position: absolute;
+ right: 6px;
+ width: 0;
+}
+
+.o-popup1 .slider .grade-info {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ font-size: 12px;
+ color: var(--e-color-text4);
+ margin-top: 14px;
+}
+@media screen and (max-width: 1100px) {
+ .o-popup1 .slider .grade-info span {
+ scale: 0.84;
+ }
+}
+.o-popup1 .reason {
+ margin-top: 16px;
+ display: none;
+}
+.o-popup1 .reason .input-area {
+ border: 1px solid var(--e-color-border2);
+ padding: 8px 16px;
+ height: 88px;
+ font-size: 12px;
+ line-height: 18px;
+ position: relative;
+ border-radius: 4px;
+}
+@media screen and (max-width: 1100px) {
+ .o-popup1 .reason .input-area {
+ font-size: 14px;
+ }
+}
+.o-popup1 .reason .input-area:hover {
+ border: 1px solid var(--e-color-brand1);
+}
+.o-popup1 .reason .input-area.is-focus {
+ border: 1px solid var(--e-color-brand1);
+}
+.o-popup1 .reason .input-area textarea {
+ width: 100%;
+ height: 100%;
+ border: none;
+ outline: none;
+ resize: none;
+ background-color: var(--e-color-bg2);
+ color: var(--e-color-text1);
+ border-radius: 4px;
+}
+.o-popup1 .reason .input-area p {
+ text-align: right;
+ color: var(--e-color-text4);
+ position: absolute;
+ right: 6px;
+ bottom: 6px;
+}
+.o-popup1 .reason .more-info {
+ margin-top: 8px;
+ color: var(--e-color-text4);
+ font-size: 12px;
+ line-height: 18px;
+ text-align: center;
+}
+.o-popup1 .reason .submit-btn {
+ margin-top: 16px;
+ text-align: center;
+}
+@media screen and (max-width: 1100px) {
+ .o-popup1 .reason .submit-btn {
+ display: none;
+ }
+}
+
+.o-popup1 .reason .submit-btn button {
+ padding: 6px 26px;
+ border: 1px solid var(--e-color-border1);
+ border-color: var(--e-color-border1);
+ color: var(--e-color-text1);
+ background-color: transparent;
+ cursor: pointer;
+ border-radius: 16px;
+}
+.o-popup1 .reason .submit-btn button:hover {
+ background-color: var(--e-color-brand1);
+ color: white;
+}
+
+.float-wrap .o-popup2 {
+ position: absolute;
+ top: 0;
+ right: 64px;
+ width: 240px;
+ padding: 24px;
+ background-color: var(--e-color-bg2);
+ transition: all 0.5s;
+ transform: scale(0);
+ transform-origin: 100% 50%;
+ box-shadow: var(--e-shadow-l2);
+ cursor: default;
+ border-radius: 4px;
+}
+.float-wrap .nav-box1 .item-nav:nth-of-type(2):hover .o-popup2 {
+ transform: scale(1);
+}
+.float-wrap .o-popup2 .pop-item {
+ display: flex;
+ color: var(--e-color-text1);
+}
+.float-wrap .o-popup2 .pop-item .icon-dark {
+ display: none;
+}
+.dark .float-wrap .o-popup2 .pop-item .icon-dark {
+ display: block;
+}
+.dark .float-wrap .o-popup2 .pop-item .icon-light {
+ display: none;
+}
+.float-wrap .o-popup2 .pop-item ~ .pop-item {
+ margin-top: 18px;
+}
+.float-wrap .o-popup2 .pop-item .o-icon svg {
+ width: 32px;
+ height: 32px;
+}
+.float-wrap .o-popup2 .pop-item .text {
+ margin-left: 12px;
+ text-align: left;
+}
+.float-wrap .o-popup2 .pop-item .text .text-name {
+ font-size: 14px;
+ line-height: 32px;
+ font-weight: 600;
+}
+.float-wrap .o-popup2 .pop-item .text .text-name a {
+ color: var(--e-color-text1);
+}
+.float-wrap .o-popup2 .pop-item .text .text-name a:hover {
+ color: var(--e-color-brand1);
+}
+.float-wrap.o-popup2 .pop-item .text .text-tip {
+ font-size: 12px;
+ line-height: 18px;
+ color: var(--e-color-text3);
+}
+#float-tip {
+ position: fixed;
+ width: 400px;
+ font-size: 20px;
+ text-align: center;
+ top: -100px;
+ left: 50vw;
+ transform: translateX(-50%);
+ padding: 24px;
+ background-color: var(--e-color-bg2);
+ box-shadow: var(--e-shadow-l2);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ gap: 6px;
+ transition: top 0.5s;
+}
+@media screen and (max-width: 1100px) {
+ #float-tip {
+ width: 260px;
+ }
+}
+#float-tip.show {
+ top: 80px;
+}
+#float-tip .tip-icon {
+ display: flex;
+ align-items: center;
+}
+#float-tip .success-icon {
+ color: #6dc335;
+}
+#float-tip .error-icon {
+ color: red;
+ display: flex;
+ align-items: center;
+ width: 24px;
+ margin-right: 6px;
+}
+#float-tip .tip-text {
+ color: var(--e-color-text1);
+}
+#float-tip.success-tip .error-icon {
+ display: none;
+}
+#float-tip.error-tip .success-icon {
+ display: none;
+}
+
+/* 捉虫样式 */
+#title-evaluate {
+ position: relative;
+ z-index: 1002;
+}
+@media screen and (max-width: 1100px) {
+ #title-evaluate {
+ display: none;
+ }
+}
+.bug-hide {
+ display: none;
+}
+
+#title-evaluate .text-email,
+#title-evaluate .privacy-box .checkbox-item {
+ color: var(--e-color-text4);
+ position: relative;
+}
+
+#title-evaluate .evaluate {
+ width: 170px;
+ height: 60px;
+ text-align: center;
+ line-height: 60px;
+ background-size: 100% 100%;
+ background-image: url("../img/detail/border.png");
+}
+
+.alert {
+ position: fixed;
+ padding: 40px 64px;
+ display: none;
+ left: 50%;
+ top: 50%;
+ max-height: 90vh;
+ width: 1000px;
+ overflow-x: visible;
+ overflow-y: auto;
+ font-size: 14px;
+ transform: translate(-50%, -50%);
+ background-color: var(--e-color-bg2);
+ box-shadow: var(--e-shadow-l5);
+ z-index: 1;
+}
+
+.alert::-webkit-scrollbar-track {
+ border-radius: 8px;
+ background-color: #caeaff;
+}
+
+.alert::-webkit-scrollbar {
+ display: none;
+ border-radius: 8px;
+ width: 6px;
+ background-color: #f5f5f5;
+}
+
+.alert::-webkit-scrollbar-thumb {
+ border-radius: 4px;
+ background: rgba(0, 47, 167, 0.1);
+}
+
+.alert .title-h2 {
+ font-size: 22px;
+ text-align: center;
+ color: var(--e-color-text1);
+}
+.alert .title-h2 {
+ width: 100%;
+ display: flex;
+ justify-content: center;
+}
+
+.alert .title-h2 .help-icon {
+ width: 16px;
+ height: 16px;
+ position: relative;
+ top: -4px;
+ left: 8px;
+ background-image: url("/img/common/help.png");
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+}
+
+.alert .title-h3 {
+ position: relative;
+ display: inline-block;
+ font-size: 18px;
+ color: var(--e-color-text1);
+ margin-top: 24px;
+}
+.alert .tip-box {
+ position: absolute;
+ top: 0;
+ right: 0;
+ display: none;
+ padding: 5px 10px;
+ width: max-content;
+ transform: translateX(110%);
+ font-size: 18px;
+ background-color: rgba(218, 35, 25, 1);
+ color: rgba(255, 255, 255, 1);
+ z-index: 2;
+}
+.alert .tip-box.email-en {
+ top: 24px;
+ left: -88px;
+}
+.alert .text-email {
+ display: inline-block;
+}
+
+.alert .evaluates {
+ display: flex;
+ align-items: center;
+ margin-top: 12px;
+}
+.alert .email {
+ margin-top: 24px;
+}
+.alert .evaluates .issue {
+ position: relative;
+ margin-right: 10px;
+ cursor: pointer;
+ padding: 3px 15px;
+ font-size: 14px;
+ border: 1px solid transparent;
+ box-sizing: border-box;
+ color: var(--e-color-text4);
+}
+
+.alert .evaluates.en .issue {
+ padding: 3px 8px;
+}
+
+.alert .evaluates .active-border {
+ border: 1px solid var(--e-color-brand1);
+ color: var(--e-color-brand1);
+}
+
+.btn-submit {
+ position: relative;
+}
+.textarea-box p {
+ color: var(--e-color-text4);
+ text-align: right;
+}
+.alert .issue .issue-detail,
+.btn-submit .submit-tip {
+ position: absolute;
+ top: -20px;
+ left: -16px;
+ padding: 8px 10px;
+ width: 260px;
+ color: #777777;
+ text-align: left;
+ font-size: 12px;
+ background-color: var(--e-color-bg2);
+ transform: translateY(-100%) scale(0);
+ border: 1px solid var(--e-color-brand1);
+ z-index: 1;
+ transition: all 0.5s;
+ display: block;
+}
+.btn-submit .pr-submit-tip {
+ width: 392px !important;
+ height: 234px !important;
+ background-image: url(../img/detail/pr-tip.gif);
+ background-size: 100% 100%;
+}
+.btn-submit .tip-show {
+ transform: translateY(-100%) scale(1);
+}
+.alert .issue:hover .issue-detail {
+ transform: translateY(-100%) scale(1);
+}
+.alert .submit-type {
+ display: flex;
+ width: 100%;
+ margin-top: 16px;
+ padding-bottom: 12px;
+ border-bottom: 1px solid var(--e-color-division1);
+}
+.alert .submit-type .active-submit {
+ border: 1px solid var(--e-color-brand1);
+ color: var(--e-color-brand1);
+}
+.alert .submit-type .type-issue {
+ margin-right: 20px;
+ position: relative;
+}
+.alert .submit-type .type-issue .issue-tip,
+.alert .submit-type .type-PR .PR-tip {
+ padding: 8px 10px;
+ background-color: var(--e-color-bg2);
+ border: 1px solid var(--e-color-brand1);
+ color: var(--e-color-text4);
+ position: absolute;
+ bottom: 46px;
+ left: -30px;
+ display: block;
+ transform: scale(0);
+ transition: all 0.5s;
+}
+.alert .submit-type .type-issue .issue-tip p,
+.alert .submit-type .type-PR .PR-tip p {
+ white-space: nowrap;
+}
+.alert .submit-type .type-issue:hover .issue-tip,
+.alert .submit-type .type-PR:hover .PR-tip {
+ transform: scale(1);
+}
+.alert .submit-type .type-issue .issue-tip::before,
+.alert .submit-type .type-PR .PR-tip::before {
+ content: " ";
+ border-top: 12px solid var(--e-color-brand1);
+ border-left: 12px solid transparent;
+ border-right: 12px solid transparent;
+ position: absolute;
+ bottom: -12px;
+ left: 40px;
+}
+.alert .submit-type .type-issue .issue-tip::after,
+.alert .submit-type .type-PR .PR-tip::after {
+ content: " ";
+ border-top: 12px solid var(--e-color-bg2);
+ border-left: 12px solid transparent;
+ border-right: 12px solid transparent;
+ position: absolute;
+ bottom: -11px;
+ left: 40px;
+}
+.alert .submit-type .type-title,
+.alert .evaluates .issue-title {
+ color: var(--e-color-text1);
+ margin-right: 24px;
+ display: block;
+ padding: 3px 0;
+}
+.alert .submit-type > span + span {
+ color: var(--e-color-text4);
+ display: block;
+ padding: 3px 15px;
+ cursor: pointer;
+ border: 1px solid transparent;
+ position: relative;
+}
+.alert .submit-type span .tip {
+ position: absolute;
+ bottom: 30px;
+ background-color: var(--e-color-bg2);
+}
+
+.btn-submit .submit-tip {
+ padding: 10px 15px;
+ line-height: 25px;
+ width: 280px;
+}
+
+@keyframes rainbowSlide {
+ 100% {
+ background-position: -400% 0;
+ }
+}
+
+.main-tip {
+ flex: 1;
+ display: flex;
+ padding-left: 10px;
+ font-size: 16px;
+ color: var(--e-color-text1);
+ text-align: center;
+ position: relative;
+ height: 30px;
+ line-height: 30px;
+ background-color: black;
+ color: white;
+}
+
+.issue-detail::before,
+.issue-detail::after,
+.score-detail::after,
+.score-detail::before,
+.submit-tip::after,
+.submit-tip::before {
+ content: " ";
+ border-top: 12px solid var(--e-color-brand1);
+ border-left: 12px solid transparent;
+ border-right: 12px solid transparent;
+ position: absolute;
+ bottom: -12px;
+ left: 40px;
+}
+
+.issue-detail::after,
+.submit-tip::after {
+ border-top: 12px solid var(--e-color-bg2);
+ bottom: -11px;
+}
+
+.score-detail::after,
+.score-detail::before {
+ border-top: 4px solid var(--e-color-brand1);
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ left: 10px;
+ bottom: -4px;
+}
+
+.score-detail::after {
+ border-top: 4px solid var(--e-color-bg2);
+ bottom: -3px;
+}
+.issue-detail p {
+ position: relative;
+ margin-bottom: 8px;
+ padding-left: 10px;
+}
+
+.alert .satisfaction {
+ display: flex;
+ justify-items: start;
+ align-items: center;
+ color: #8f9091;
+ margin-top: 16px;
+}
+.alert .privacy-box {
+ margin-top: 24px;
+ display: flex;
+ justify-content: center;
+}
+.alert .satisfaction .score-box {
+ display: flex;
+ align-items: center;
+}
+
+.satisfaction .score-box .score {
+ position: relative;
+ cursor: pointer;
+ margin-left: 10px;
+ width: 30px;
+ height: 30px;
+ text-align: center;
+ transition: all 0.3s;
+ color: var(--e-color-text4);
+ line-height: 30px;
+ background-color: var(--e-color-bg4);
+}
+.satisfaction .score-box .score:hover {
+ color: var(--e-color-brand1);
+ background-color: var(--e-color-kleinblue10);
+}
+
+.score:hover .score-detail {
+ transform: translateY(-100%) scale(1);
+}
+
+.score .score-detail {
+ position: absolute;
+ display: block;
+ padding: 0 5px;
+ width: max-content;
+ top: -7px;
+ color: var(--e-color-text1);
+ background-color: var(--e-color-bg2);
+ border: 1px solid var(--e-color-brand1);
+ transform: translateY(-100%) scale(0);
+ transition: all 0.5s;
+}
+
+.score-box .score:last-child {
+ margin-right: 10px;
+}
+
+.satisfaction .score-box .active {
+ color: var(--e-color-brand1);
+ background-color: var(--e-color-kleinblue10);
+}
+.alert .textarea-box {
+ margin-top: 16px;
+ min-height: 100px;
+}
+.alert .main-input {
+ width: 100%;
+ outline: none;
+ min-height: 100px;
+ padding: 8px 10px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ border: 1px solid #cbd5de;
+ overflow: auto;
+ resize: none;
+ -webkit-transition: all 0.2s;
+ transition: all 0.2s;
+ background-color: var(--e-color-bg1);
+ color: var(--e-color-text1);
+}
+::-moz-placeholder {
+ color: var(--e-color-text4);
+}
+:-ms-input-placeholder {
+ color: var(--e-color-text4);
+}
+::-webkit-input-placeholder {
+ color: var(--e-color-text4);
+}
+
+.alert .main-input:focus {
+ border-color: var(--e-color-brand1);
+}
+
+.checkbox-list {
+ display: flex;
+}
+
+/* .checkbox-item input[type="radio"] {
+ cursor: pointer;
+ width: 16px;
+ display: none;
+ margin-right: 10px;
+ outline: none;
+} */
+
+.checkbox-item {
+ cursor: pointer;
+ position: relative;
+ display: flex;
+ align-items: center;
+ margin-left: 50px;
+}
+
+.checkbox-item:first-child {
+ margin-left: 0;
+}
+
+.privacy-item .checkbox-item {
+ margin: 0;
+ text-align: center;
+}
+
+.privacy-box a {
+ color: var(--e-color-brand1);
+ font-size: inherit;
+ text-decoration: none;
+}
+
+.label {
+ cursor: pointer;
+ padding-left: 25px;
+ font-size: 16px;
+}
+
+/* 设置未选中样式 */
+input[type="checkbox"] {
+ position: relative;
+ width: 16px;
+ height: 16px;
+ border: 1px solid var(--e-color-division1);
+ /* 取消默认样式 */
+ -webkit-appearance: none;
+}
+/* 设置选中样式 */
+input:not([is=o-switch])[type="checkbox"]:checked {
+ background-color: var(--e-color-brand1);
+}
+input:not([is=o-switch])[type="checkbox"]:checked::after {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 14px;
+ height: 14px;
+ border: none;
+ text-align: center;
+ background-position: center center;
+ background-repeat: no-repeat;
+ background-size: contain;
+ background-image: url(../img/common/icon-checkbox.svg);
+}
+
+.other-question {
+ margin: 0 6px;
+ border: 0;
+ width: 35px;
+ outline: none;
+ border-bottom: solid 1px;
+ background-color: transparent;
+ font-size: inherit;
+}
+
+.feedback {
+ cursor: pointer;
+ position: fixed;
+ display: none;
+ width: 32px;
+ border-radius: 5px;
+ z-index: 1;
+}
+.feedback img {
+ display: block;
+ width: 100%;
+}
+
+.evaluate-box {
+ opacity: 0;
+ position: absolute;
+ left: -180px;
+ top: 0;
+ padding-right: 12px;
+ transform: translateX(100px);
+ z-index: -1;
+ transition: all 0.5s;
+}
+
+.btn-submit {
+ position: relative;
+ display: block;
+ width: 150px;
+ height: 40px;
+ font-size: 18px;
+ line-height: 40px;
+ margin: 20px auto 0;
+ text-align: center;
+ background-color: var(--e-color-brand1);
+ color: #fff;
+}
+.btn-submit > span {
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ cursor: pointer;
+}
+.alert .icon-close {
+ position: absolute;
+ cursor: pointer;
+ display: block;
+ background-image: url("../img/detail/close.png");
+ width: 16px;
+ height: 16px;
+ right: 25px;
+ top: 25px;
+}
+.alert-mask {
+ width: 100vw;
+ height: 100vh;
+ background-color: rgba(0, 0, 0, 0.3);
+}
+
+#title-evaluate .right-nav {
+ position: fixed;
+ display: none;
+ width: 64px;
+ height: 192px;
+ bottom: 326px;
+ right: 10vw;
+ max-height: calc(100vh - 157px);
+ box-shadow: var(--e-shadow-l4);
+}
+
+.right-nav .nav-item {
+ cursor: pointer;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ padding: 12px;
+ width: 64px;
+ height: 64px;
+ text-align: center;
+ overflow: hidden;
+ transition: all 0.3s;
+ background-size: 100% 100%;
+ background-repeat: no-repeat;
+ background-color: var(--e-color-bg2);
+}
+
+.right-nav .nav-item:first-child {
+ cursor: move;
+}
+
+#title-evaluate .nav-item a {
+ font-size: 14px;
+ color: var(--e-color-text1);
+}
+.right-nav .nav-item:hover {
+ overflow: visible;
+ background-color: var(--e-color-brand1);
+ color: white !important;
+}
+.right-nav .nav-item:hover a {
+ color: white !important;
+}
+.right-nav .nav-item:nth-child(1) {
+ background: url("../img/common/编组 14.svg") no-repeat var(--e-color-brand1);
+ background-size: 40px 40px;
+ background-position: center;
+}
+.dark .right-nav .nav-item:nth-child(1) {
+ background: url("../img/common/编组 14.svg") no-repeat var(--e-color-bg2);
+ background-position: center;
+}
+
+.right-nav .nav-item:nth-child(2) {
+ background-image: url("../img/detail/inside2.png");
+}
+
+.right-nav .nav-item:nth-child(3) {
+ position: relative;
+ background-image: url("../img/detail/inside3.png");
+ color: var(--e-color-text1);
+}
+#title-evaluate .nav-item:nth-child(3):hover .evaluate-box {
+ transform: translateX(0);
+ opacity: 1;
+}
+.right-nav .nav-item:nth-child(4) {
+ background-image: url("../img/detail/inside4.png");
+}
+
+#title-evaluate .evaluate span {
+ font-size: 14px;
+ color: var(--e-color-text1);
+ line-height: 17px;
+}
+
+#title-evaluate .evaluate i {
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ background-image: url("../img/detail/icon-star.svg");
+ cursor: pointer;
+ margin-bottom: -2px;
+ position: relative;
+}
+
+#title-evaluate .evaluate i > div {
+ width: 60px;
+ height: 20px;
+ box-shadow: 0px 6px 20px 0px rgba(0, 0, 0, 0.1);
+ background-repeat: no-repeat;
+ background-size: cover;
+ background-position: center center;
+ position: absolute;
+ top: 22px;
+ left: -21px;
+ display: none;
+}
+
+#title-evaluate .evaluate i[key="1"] > div {
+ background-image: url("../img/detail/1-star.png");
+}
+
+#title-evaluate .evaluate i[key="2"] > div {
+ background-image: url("../img/detail/2-star.png");
+}
+
+#title-evaluate .evaluate i[key="3"] > div {
+ background-image: url("../img/detail/3-star.png");
+}
+
+#title-evaluate .evaluate i[key="4"] > div {
+ background-image: url("../img/detail/4-star.png");
+}
+
+#title-evaluate .evaluate i[key="5"] > div {
+ background-image: url("../img/detail/5-star.png");
+}
+
+#title-evaluate .evaluate .active {
+ background-image: url("../img/detail/active-star.svg");
+}
+.shake1 {
+ animation: shake1 0.1s linear infinite;
+}
+
+.shake {
+ animation: shake 1.5s linear infinite;
+}
+@keyframes shake {
+ 0%,
+ 100% {
+ transform: translateX(110%);
+ }
+ 10% {
+ transform: translateX(110%);
+ }
+ 15%,
+ 25%,
+ 35% {
+ transform: translateX(110%);
+ }
+ 20%,
+ 30%,
+ 40% {
+ transform: translateX(120%);
+ }
+ 45% {
+ transform: translateX(110%);
+ }
+ 50% {
+ transform: translateX(120%);
+ }
+ 55%,
+ 90% {
+ transform: translateX(110%);
+ }
+}
+
+@keyframes shake1 {
+ 0%,
+ 100% {
+ transform: translateX(5px);
+ }
+ 10% {
+ transform: translateX(5px);
+ }
+ 15%,
+ 25%,
+ 35% {
+ transform: translateX(-5px);
+ }
+ 20%,
+ 30%,
+ 40%,
+ 50% {
+ transform: translateX(-5px);
+ }
+ 55%,
+ 90% {
+ transform: translateX(5px);
+ }
+}
+/* 移动端nss评分 */
+.float-mobile {
+ position: sticky;
+ bottom: 16px;
+ width: 100%;
+ padding: 0 16px;
+ margin-bottom: 16px;
+ z-index: 9;
+ display: none;
+}
+.float-mobile .float-head {
+ height: 40px;
+ padding: 12px;
+ margin: 0 auto;
+ background: linear-gradient(90deg, #d7e8f7 0%, #c4cfe8 100%);
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ position: relative;
+}
+.float-mobile .float-head .head-title {
+ display: flex;
+ height: 100%;
+ align-items: center;
+ font-size: 12px;
+ line-height: 16px;
+ white-space: nowrap;
+}
+.float-mobile .float-head .head-title .icon-smile {
+ margin-right: 8px;
+}
+.float-mobile .float-head .head-title .title-name {
+ font-weight: 600;
+}
+.float-mobile .icon-box {
+ display: flex;
+}
+.float-mobile .float-head .icon-cancel {
+ position: absolute;
+ display: flex;
+ right: 12px;
+ top: 50%;
+ transform: translateY(-50%);
+}
+.float-mobile .float-head .icon-cancel svg {
+ width: 16px;
+ height: 16px;
+}
+.float-mobile .float-content {
+ position: fixed;
+ left: 0;
+ top: 0;
+ width: 100vw;
+ height: 100vh;
+ z-index: 9;
+ display: none;
+}
+.float-mobile .float-content .float-mask {
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ background-color: rgba(0, 0, 0, 0.4);
+}
+.float-mobile .float-content .o-popup1 {
+ position: absolute;
+ top: auto;
+ bottom: 0px;
+ left: 0;
+ border-radius: 8px 8px 0px 0px;
+ transform: scale(1);
+ width: 100%;
+}
+.float-mobile .float-content .o-popup1 .icon-cancel {
+ display: none;
+}
+.o-popup1 .slider-tip-mb {
+ display: none;
+}
+.float-mobile .float-content .o-popup1 .slider-tip-mb {
+ display: flex;
+ position: relative;
+ height: 18px;
+}
+.float-mobile .float-content .o-popup1 .slider-tip-mb .tip-item {
+ position: absolute;
+ font-size: 14px;
+ transform: translateX(-50%);
+ color: var(--e-color-text1);
+}
+.float-mobile .float-content .o-popup1 .slider-tip-mb .tip-item.active {
+ font-size: 16px;
+}
+.float-mobile .float-content .submit-btn-mb {
+ display: flex;
+ margin-top: 12px;
+}
+.float-mobile .float-content .submit-btn-mb .o-button {
+ flex-grow: 1;
+ border: none;
+ background-color: transparent;
+ font-size: 16px;
+ line-height: 24px;
+ position: relative;
+ color: var(--e-color-text1);
+}
+.float-mobile .float-content .submit-btn-mb .o-button.forbidden {
+ color: var(--e-color-text5);
+}
+.float-mobile .float-content .submit-btn-mb .o-button:nth-of-type(1):after {
+ display: block;
+ content: "";
+ width: 1px;
+ height: 100%;
+ background-color: var(--e-color-text5);
+ position: absolute;
+ right: 0;
+ top: 0;
+}
diff --git a/static/css/h5_footer.css b/static/css/h5_footer.css
new file mode 100644
index 0000000..9409a29
--- /dev/null
+++ b/static/css/h5_footer.css
@@ -0,0 +1,61 @@
+.h5_footer {
+ display: none;
+}
+
+@media screen and (max-width: 1100px) {
+ .h5_footer {
+ display: block;
+ text-align: center;
+ padding-top: 30px;
+ padding-bottom: 30px;
+ background: var(--e-color-bg2);
+ }
+ .h5_footer p{
+ color: var(--e-color-text1);
+ }
+ .h5_footer div:nth-child(1) {
+ margin-bottom: 10px;
+ }
+ .h5_footer>div:nth-child(2){
+ margin-top: 70px;
+ }
+ .h5_footer div:nth-child(1) p {
+ font-size: 12px;
+ margin: 0 50px 20px;
+ }
+
+ .h5_footer div:nth-child(1) img {
+ width: 189px;
+ height: 40px;
+ }
+
+ .h5_footer div:nth-child(2) p {
+ margin-top: 10px;
+ font-size: 14px;
+ color: var(--e-color-text1); line-height: 16px;
+
+ }
+
+ .h5_footer div:nth-child(3) {
+ margin-top: 20px;
+ }
+
+ .h5_footer div:nth-child(3) img {
+ width: 78px;
+ height: 78px;
+ }
+
+ .h5_footer div:nth-child(3) p:nth-child(2) {
+ margin-top: 10px;
+ font-size: 12px;
+ font-weight: normal;
+ color: var(--e-color-text1); line-height: 12px;
+ }
+
+ .h5_footer div:nth-child(3) p:nth-child(3) {
+ margin-top: 20px;
+ font-size: 12px;
+ font-weight: normal;
+ color: var(--e-color-text1); line-height: 12px;
+ }
+}
\ No newline at end of file
diff --git a/static/css/highlightjs-theme.css b/static/css/highlightjs-theme.css
new file mode 100644
index 0000000..ac82fe3
--- /dev/null
+++ b/static/css/highlightjs-theme.css
@@ -0,0 +1,203 @@
+pre,
+code {
+ font-family: 'SFMono-Regular', 'Menlo', 'Monaco', 'Consolas', 'Liberation Mono', monospace;
+}
+
+pre code.hljs {
+ display: block;
+ overflow-x: auto;
+ padding: 1em
+}
+
+code.hljs {
+ padding: 3px 5px
+}
+
+.hljs {
+ color: white;
+ background: #2b2b2f;
+}
+
+.dark .hljs {
+ background: #2b2b2f;
+}
+
+/*
+
+Atom One Light by Daniel Gamage
+Original One Light Syntax theme from https://github.com/atom/one-light-syntax
+
+base: #fafafa
+mono-1: #383a42
+mono-2: #686b77
+mono-3: #a0a1a7
+hue-1: #0184bb
+hue-2: #4078f2
+hue-3: #a626a4
+hue-4: #50a14f
+hue-5: #e45649
+hue-5-2: #c91243
+hue-6: #986801
+hue-6-2: #c18401
+
+*/
+
+.hljs-comment,
+.hljs-quote {
+ color: #a0a1a7;
+ font-style: italic
+}
+
+.hljs-doctag,
+.hljs-formula,
+.hljs-keyword {
+ color: #a626a4
+}
+
+.hljs-deletion,
+.hljs-name,
+.hljs-section,
+.hljs-selector-tag,
+.hljs-subst {
+ color: #e45649
+}
+
+.hljs-literal {
+ color: #0184bb
+}
+
+.hljs-addition,
+.hljs-attribute,
+.hljs-meta .hljs-string,
+.hljs-regexp,
+.hljs-string {
+ color: #50a14f
+}
+
+.hljs-attr,
+.hljs-number,
+.hljs-selector-attr,
+.hljs-selector-class,
+.hljs-selector-pseudo,
+.hljs-template-variable,
+.hljs-type,
+.hljs-variable {
+ color: #986801
+}
+
+.hljs-bullet,
+.hljs-link,
+.hljs-meta,
+.hljs-selector-id,
+.hljs-symbol,
+.hljs-title {
+ color: #4078f2
+}
+
+.hljs-built_in,
+.hljs-class .hljs-title,
+.hljs-title.class_ {
+ color: #c18401
+}
+
+.hljs-emphasis {
+ font-style: italic
+}
+
+.hljs-strong {
+ font-weight: 700
+}
+
+.hljs-link {
+ text-decoration: underline
+}
+
+/*
+
+Atom One Dark by Daniel Gamage
+Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax
+
+base: #282c34
+mono-1: #abb2bf
+mono-2: #818896
+mono-3: #5c6370
+hue-1: #56b6c2
+hue-2: #61aeee
+hue-3: #c678dd
+hue-4: #98c379
+hue-5: #e06c75
+hue-5-2: #be5046
+hue-6: #d19a66
+hue-6-2: #e6c07b
+
+*/
+
+.dark .hljs-comment,
+.dark .hljs-quote {
+ color: #5c6370;
+ font-style: italic
+}
+
+.dark .hljs-doctag,
+.dark .hljs-formula,
+.dark .hljs-keyword {
+ color: #c678dd
+}
+
+.dark .hljs-deletion,
+.dark .hljs-name,
+.dark .hljs-section,
+.dark .hljs-selector-tag,
+.dark .hljs-subst {
+ color: #e06c75
+}
+
+.dark .hljs-literal {
+ color: #56b6c2
+}
+
+.dark .hljs-addition,
+.dark .hljs-attribute,
+.dark .hljs-meta .hljs-string,
+.dark .hljs-regexp,
+.dark .hljs-string {
+ color: #98c379
+}
+
+.dark .hljs-attr,
+.dark .hljs-number,
+.dark .hljs-selector-attr,
+.dark .hljs-selector-class,
+.dark .hljs-selector-pseudo,
+.dark .hljs-template-variable,
+.dark .hljs-type,
+.dark .hljs-variable {
+ color: #d19a66
+}
+
+.dark .hljs-bullet,
+.dark .hljs-link,
+.dark .hljs-meta,
+.dark .hljs-selector-id,
+.dark .hljs-symbol,
+.dark .hljs-title {
+ color: #61aeee
+}
+
+.dark .hljs-built_in,
+.dark .hljs-class .hljs-title,
+.dark .hljs-title.class_ {
+ color: #e6c07b
+}
+
+.dark .hljs-emphasis {
+ font-style: italic
+}
+
+.dark .hljs-strong {
+ font-weight: 700
+}
+
+.dark .hljs-link {
+ text-decoration: underline
+}
\ No newline at end of file
diff --git a/static/css/index.css b/static/css/index.css
new file mode 100644
index 0000000..bd16cfd
--- /dev/null
+++ b/static/css/index.css
@@ -0,0 +1,761 @@
+#app {
+ width: 100vw;
+ height: 100vh;
+ display: flex;
+ flex-direction: row;
+ background-color: var(--e-color-bg1);
+}
+
+#app > #left {
+ position: sticky;
+ top: 0;
+ left: 0;
+ width: 300px;
+ min-width: 300px;
+ background-color: var(--e-color-kleinblue5);
+ overflow: auto;
+ height: 100vh;
+ min-height: 100vh;
+}
+#app > #left .left {
+ width: 100%;
+ padding-top: 16px;
+ padding-bottom: 12px;
+ padding-left: 40px;
+}
+
+#app > #left img {
+ height: 32px;
+}
+
+#app > #left > ul,
+#app > #left > .version-title {
+ margin-left: 40px;
+ margin-right: 40px;
+ margin-top: 24px;
+}
+#app > #left > .version-title {
+ margin-top: 53px;
+ font-size: 18px;
+ color: #fff;
+ display: flex;
+ align-items: center;
+}
+#app > #left .version-list {
+ padding-left: 12px;
+}
+#app > #left .version-list a {
+ color: #ffffff;
+ display: block;
+ width: 100%;
+ height: 100%;
+ font-size: 14px;
+}
+#app > #left .version-list li {
+ padding-bottom: 16px;
+}
+#app > #left .long-time {
+ margin-top: 40px;
+}
+#app > #left .select-version {
+ color: #fff;
+ padding: 0 40px;
+}
+#app > #left .select-version .select-version-title {
+ width: 100%;
+ display: flex;
+ padding: 16px 0;
+ align-items: center;
+ justify-content: space-between;
+ line-height: 24px;
+ cursor: pointer;
+}
+#app > #left .long-time .long-title {
+ padding-top: 0;
+}
+#app > #left .select-version .select-version-title .icon-down {
+ flex-shrink: 0;
+ background-image: url(../img/common/icon-down-dark.svg);
+ transition: all 0.5s;
+ cursor: pointer;
+}
+#app > #left .select-version .select-version-title .icon-down.show {
+ transform: rotate(180deg);
+}
+#app > #left .select-version .select-version-title::before {
+ display: none;
+}
+#app > #left .select-version .version-list {
+ max-height: 0;
+ transition: max-height 0.5s;
+ overflow: hidden;
+}
+#app > #left .select-version .version-list.show {
+ max-height: 400px;
+}
+
+#app > #right {
+ width: calc(100vw - 300px);
+ overflow-x: hidden;
+ background-color: var(--e-color-bg1);
+}
+
+#app > #right > header {
+ width: calc(100vw - 300px);
+ font-size: 18px;
+ height: 60px;
+ background-color: #fff;
+}
+
+#app > #right > header div #lang {
+ border: none;
+ cursor: pointer;
+}
+#app > #right > header div #lang:hover .option {
+ display: block;
+}
+#app > #right .index-content {
+ width: calc(100% - 260px);
+}
+@media screen and (max-width: 1480px) {
+ #app > #right .index-content {
+ width: 100%;
+ }
+}
+
+#search_header {
+ display: flex;
+ flex-direction: row;
+ background-color: var(--e-color-bg1);
+ justify-content: space-between;
+ align-items: center;
+ padding-left: 120px;
+ padding-right: 120px;
+}
+
+#search_header div:nth-child(1) {
+ width: 48%;
+}
+
+#search_header div:nth-child(1) span {
+ font-size: 36px;
+ line-height: 48px;
+ color: var(--e-color-text1);
+ font-weight: 300;
+}
+
+.search_right {
+ width: 48%;
+ margin-top: 85px;
+ margin-bottom: 85px;
+ display: flex;
+ justify-content: end;
+ align-items: center;
+}
+
+.search_right img {
+ width: 100%;
+}
+
+#search-input {
+ position: relative;
+}
+
+#search-input input {
+ width: 78%;
+ font-size: var(--o-font-size-text);
+ height: 48px;
+ background: var(--e-color-bg-secondary);
+ border: 1px solid transparent;
+ padding-left: 40px;
+ color: var(--e-color-text1);
+}
+#search-input input::-webkit-input-placeholder {
+ font-size: var(--o-font-size-text);
+ line-height: 48px;
+ font-weight: 300;
+}
+#search-input input:focus {
+ outline: 1px solid var(--e-color-brand1);
+}
+.index-result {
+ background-color: var(--e-color-bg1);
+}
+.index-result {
+ padding-top: 40px;
+}
+#search-input i {
+ position: absolute;
+ left: 8px;
+ top: 12px;
+ display: inline-block;
+ width: 24px;
+ height: 24px;
+ background: url(../img/search/search.svg) no-repeat 100%/100%;
+}
+.dark #search-input i {
+ background: url(../img/search/search-dark.svg) no-repeat 100%/100%;
+}
+
+#search_content {
+ padding-left: 120px;
+ padding-right: 140px;
+ background-color: var(--e-color-bg1);
+ display: none;
+}
+
+#search_content hr {
+ width: 99%;
+ height: 1px;
+ background-color: #80000000;
+}
+.hot-document {
+ padding-top: 40px;
+ padding-left: 120px;
+ padding-right: 120px;
+}
+@media screen and (max-width: 1100px) {
+ .hot-document {
+ margin-top: 40px;
+ padding: 0 16px;
+ }
+}
+h1 {
+ text-align: left;
+ color: var(--e-color-text1);
+ font-size: 36px;
+ line-height: 48px;
+ font-weight: 300;
+}
+
+#document_content {
+ width: 100%;
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ gap: 16px;
+}
+
+@media screen and (max-width: 1540px) {
+ #document_content {
+ grid-template-columns: repeat(2, 1fr);
+ }
+}
+@media screen and (max-width: 350px) {
+ #document_content {
+ grid-template-columns: repeat(1, 1fr);
+ }
+}
+
+#document_content > div {
+ width: 100%;
+ height: 100%;
+ padding: 24px 40px;
+ box-shadow: var(--e-shadow-l2);
+ background-color: var(--e-color-bg2);
+ cursor: pointer;
+ position: relative;
+}
+@media screen and (max-width: 1100px) {
+ #document_content > div {
+ padding: 24px;
+ }
+}
+#document_content > div .lable-hot {
+ position: absolute;
+ right: 8px;
+ top: 0;
+ color: #ffffff;
+ background: linear-gradient(135deg, #fb4953 0%, #c7000b 100%);
+ padding: 2px 5px;
+ font-size: var(--o-font-size-tip);
+ line-height: var(--o-font-size-tip);
+}
+#document_content > div .hot-name {
+ color: var(--e-color-brand1);
+ font-size: var(--o-font-size-h8);
+}
+@media screen and (max-width: 1100px) {
+ #document_content > div .hot-name {
+ font-size: 14px;
+ }
+ #document_content > div .lable-hot {
+ font-size: 12px;
+ line-height: 14px;
+ padding: 2px 5px;
+ }
+}
+#document_content > div:hover {
+ box-shadow: var(--e-shadow-l2_hover);
+}
+
+#document_content a {
+ color: var(--e-color-text1);
+ font-size: 18px;
+ line-height: 26px;
+}
+
+.app-mobile {
+ display: none;
+}
+
+.hot_version {
+ display: flex !important;
+ justify-content: space-between !important;
+ align-items: center;
+ width: 100% !important;
+ padding: 0px !important;
+ background-color: #1a000000 !important;
+ box-shadow: none !important;
+}
+
+#document_content .hot-docs-desc {
+ color: var(--e-color-text1);
+ margin-top: var(--o-spacing-h5);
+ font-size: var(--o-font-size-text);
+ line-height: var(--o-line-height-text);
+}
+
+.hot_version > span {
+ background: linear-gradient(225deg, #feb32a 0%, #f6d365 100%);
+ line-height: var(--o-line-height-text);
+ padding: 0 8px;
+ font-size: var(--o-font-size-tip);
+}
+.hot_version p {
+ color: var(--e-color-text1);
+ font-size: var(--o-font-size-h7);
+ line-height: var(--o-line-height-text);
+}
+.nav-menu {
+ box-shadow: var(--e-shadow-l1);
+}
+@media screen and (max-width: 1100px) {
+ .h5_footer {
+ display: block !important;
+ background-color: var(--e-color-bg2);
+ }
+ .h5-nav-menu {
+ width: 100vw;
+ height: 48px;
+ padding: 12px 16px;
+ position: fixed;
+ left: 0;
+ top: 0;
+ z-index: 9;
+ background-color: var(--e-color-bg2);
+ }
+ .app-mobile .h5_content {
+ background-color: var(--e-color-bg1);
+ padding-bottom: 40px;
+ }
+ .h5-nav-menu .h5-logo {
+ width: 137px;
+ height: 23px;
+ background: url(../img/common/logo-mobile.svg) no-repeat 100%/100%;
+ }
+ .dark .h5-nav-menu .h5-logo {
+ background: url(../img/common/logo-pc.png) no-repeat 100%/100%;
+ }
+ #app {
+ display: none !important;
+ }
+
+ .app-mobile {
+ display: block;
+ position: relative;
+ background-color: var(--e-color-bg1);
+ }
+
+ .searcher {
+ display: none;
+ z-index: 2000;
+ position: fixed;
+ overflow: scroll;
+ background-color: #fff;
+ top: 48px;
+ max-height: 80vh;
+ width: 100%;
+ }
+
+ .h5_search_container {
+ display: flex;
+ margin-top: 80px;
+ width: 315px;
+ flex-direction: row;
+ justify-content: space-between;
+ }
+ .h5_search_container input {
+ width: 256px;
+ height: 32px;
+ background: var(--e-color-bg2);
+ border-radius: 4px;
+ padding: 9px 12px;
+ font-size: 12px;
+ font-weight: 400;
+ color: var(--e-color-text1);
+ line-height: 14px;
+ border: 1px solid rgba(0, 0, 0, 0.3);
+ }
+
+ .h5_search_container input:focus {
+ outline: 0;
+ }
+
+ .h5_search_container .h5_search_btn {
+ width: 44px;
+ height: 32px;
+ background: var(--e-color-brand1);
+ border-radius: 4px;
+ font-size: 12px;
+ color: #ffffff;
+ line-height: 32px;
+ text-align: center;
+ }
+
+ .container {
+ height: 70px;
+ margin: 0 auto;
+ }
+
+ .h5_left span {
+ position: relative;
+ left: -30px;
+ font-size: 16px;
+ }
+
+ .h5_left a img {
+ width: 154px;
+ height: auto;
+ }
+
+ .h5-right .icon-lang {
+ margin-right: 33px;
+ }
+
+ .app-mobile > img {
+ margin-top: 90px;
+ }
+
+ .h5_versions {
+ padding-left: 16px;
+ padding-right: 16px;
+ margin-top: 40px;
+ text-align: center;
+ }
+
+ .h5_versions > span {
+ font-weight: 300;
+ font-size: 16px;
+ color: var(--e-color-text1);
+ }
+
+ #h5_versions {
+ margin-top: 24px;
+ display: grid;
+ grid-template-columns: repeat(2, 1fr);
+ grid-gap: 20px;
+ }
+
+ #h5_versions li {
+ width: 100%;
+ height: 28px;
+ box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.1);
+ font-size: 14px;
+ font-weight: normal;
+ background-color: var(--e-color-brand1);
+ line-height: 28px;
+ text-align: center;
+ }
+ #h5_versions li a {
+ display: inline-block;
+ width: 100%;
+ height: 100%;
+ color: #fff;
+ font-weight: 400;
+ }
+
+ h3 {
+ margin-top: 40px;
+ font-size: 16px;
+ font-weight: 300;
+ text-align: center;
+ color: var(--e-color-text1);
+ }
+
+ .hot_documentation {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ margin-top: 20px;
+ padding: 0 16px;
+ }
+
+ .hot_documentation div {
+ width: 100%;
+ height: auto;
+ padding: 12px;
+ text-align: left;
+ margin-top: 16px;
+ background: var(--e-color-bg2);
+ box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.1);
+ }
+ .hot_documentation div .hot_version {
+ margin-top: 0;
+ margin-bottom: 4px;
+ }
+ .hot_documentation div .hot_version p {
+ color: var(--e-color-text1);
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 22px;
+ line-height: var(--o-line-height-text);
+ }
+ .hot_documentation div .hot_version span {
+ margin-top: 0;
+ font-size: 12px;
+ font-weight: 400;
+ height: 14px;
+ line-height: 14px;
+ padding: 0 4px;
+ color: #000000;
+ }
+ .hot_documentation div a {
+ font-size: 16px;
+ font-weight: normal;
+ color: var(--e-color-brand1);
+ line-height: 26px;
+ }
+
+ .hot_documentation > div > span {
+ font-size: 12px;
+ font-weight: normal;
+ color: var(--e-color-text4);
+ line-height: 18px;
+ }
+
+ .h5_community {
+ display: flex;
+ flex-direction: column;
+ justify-content: space-between;
+ padding: 0 16px;
+ margin-top: 20px;
+ }
+
+ .h5_community div {
+ height: 40px;
+ text-align: center;
+ background: #fbfbfb;
+ box-shadow: 0px 3px 10px 0px rgba(0, 0, 0, 0.1);
+ border-radius: 8px;
+ padding-top: 8px;
+ margin-bottom: 30px;
+ }
+
+ .h5_community div a {
+ font-size: 14px;
+ font-weight: normal;
+ color: var(--e-color-brand1);
+ line-height: 24px;
+ }
+
+ .h5-search {
+ width: 100vw;
+ height: 48px;
+ padding: 12px 16px;
+ background: var(--e-color-bg2);
+ position: fixed;
+ left: 0;
+ top: 0;
+ font-size: 14px;
+ }
+
+ .h5-search .icon-search {
+ position: absolute;
+ left: 24px;
+ top: 16px;
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ background: url(../img/search/search.svg) no-repeat 100%/100%;
+ }
+ .h5-search .icon-clear {
+ position: absolute;
+ right: 72px;
+ top: 16px;
+ display: none;
+ width: 16px;
+ height: 16px;
+ background: url(../img/common/icon-close-light.svg) no-repeat 100%/100%;
+ }
+ .dark .h5-search .icon-clear {
+ background: url(../img/common/icon-close-dark.svg) no-repeat 100%/100%;
+ }
+
+ .dark .h5-search .icon-search {
+ background: url(../img/search/search-dark.svg) no-repeat 100%/100%;
+ }
+ .h5-search .cancel-btn {
+ color: var(--e-color-text1);
+ line-height: 24px;
+ }
+
+ .search-result {
+ padding: 0 16px;
+ padding-bottom: 16px;
+ }
+
+ .h5_content .h5_banner {
+ width: 100%;
+ height: 126px;
+ background-image: url("/img/common/banner-bg.png");
+ background-size: cover;
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 0 24px;
+ margin-top: 48px;
+ }
+ .h5_content .h5_banner .banner-text {
+ position: relative;
+ width: 103px;
+ height: 28px;
+ }
+ .h5_content .h5_banner .banner-text .title-bg {
+ color: #2e4fb0;
+ font-size: 20px;
+ position: absolute;
+ opacity: 0.8;
+ z-index: 1;
+ }
+ .h5_content .h5_banner .banner-text .title {
+ color: #fff;
+ font-size: 20px;
+ line-height: 28px;
+ position: absolute;
+ top: 8px;
+ z-index: 2;
+ }
+ .h5_content .h5_banner .banner-iii {
+ height: 94px;
+ }
+ .mask-mobile {
+ background-color: rgba(0, 0, 0, 0.4);
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ z-index: 1000;
+ }
+
+ .hot_documentation {
+ margin-top: 0;
+ }
+}
+
+.index-result {
+ max-height: unset !important;
+}
+.app-mobile .h5_nav {
+ position: fixed;
+ left: -61%;
+ top: 0;
+ width: 60%;
+ height: 100vh;
+ z-index: 99999;
+ background-color: var(--e-color-bg2);
+ transition: all 0.5s;
+}
+.app-mobile .h5_nav_show {
+ left: 0;
+}
+.h5_nav .option {
+ width: 100%;
+ background-color: var(--e-color-bg1);
+ transition: all 0.2s;
+ overflow: scroll;
+ max-height: 0;
+}
+.h5_nav .option-show {
+ max-height: 432px;
+}
+.h5_nav .option a {
+ display: block;
+ padding: 8px 16px;
+ font-size: 14px;
+ line-height: 22px;
+ color: var(--e-color-text1);
+}
+.h5_nav .option li:nth-of-type(1) a {
+ padding-top: 16px;
+}
+.h5_nav .option li:nth-last-of-type(1) a {
+ padding-bottom: 16px;
+}
+.h5_nav .h5-logo {
+ padding: 22px 0 0 16px;
+ display: flex;
+ justify-content: space-between;
+ width: 100%;
+}
+.h5_nav .h5-logo .logo-img {
+ width: 137px;
+ height: 23px;
+ background: url(../img/common/logo-mobile.svg) no-repeat 100%/100%;
+}
+.dark .h5_nav .h5-logo .logo-img {
+ background: url(../img/common/logo-pc.png) no-repeat 100%/100%;
+}
+.h5_nav .h5-logo .icon-close {
+ width: 24px;
+ height: 24px;
+ margin-right: 16px;
+ background: url(../img/common/icon-close-light.svg) no-repeat 100%/100%;
+ cursor: pointer;
+}
+.dark .h5_nav .h5-logo .icon-close {
+ background: url(../img/common/icon-close-dark.svg) no-repeat 100%/100%;
+}
+.h5_nav .icon-servision {
+ width: 16px;
+ height: 16px;
+ transform: rotateZ(0deg);
+ background: url(../img/common/icon-chevron-right.svg) no-repeat 100%/100%;
+ cursor: pointer;
+}
+.dark .h5_nav .icon-servision {
+ background: url(../img/common/icon-chevron-right-dark.svg) no-repeat 100%/100%;
+}
+.h5_nav .open {
+ transform: rotateZ(-90deg);
+}
+.h5_nav .container {
+ height: auto;
+ padding: 22px 16px 0 16px;
+}
+.h5_nav .container .select-version .select-version-title {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ color: var(--e-color-text1);
+ font-size: 14px;
+ padding: 12px 0;
+}
+.h5_nav .container .select-version .select-version-title::before {
+ display: none;
+}
+.h5_nav .container .select-version .version-list {
+ max-height: 0;
+ transition: all 0.5s;
+ overflow: hidden;
+}
+.h5_nav .container .select-version .version-list.show {
+ max-height: 200px;
+ overflow: scroll;
+}
+.h5_nav .container .select-version .version-list li {
+ padding-bottom: 12px;
+}
+.h5_nav .container .select-version .version-list li a {
+ font-size: 12px;
+ color: var(--e-color-text1);
+}
diff --git a/static/css/login.css b/static/css/login.css
new file mode 100644
index 0000000..0ddc586
--- /dev/null
+++ b/static/css/login.css
@@ -0,0 +1,106 @@
+#opt_user:hover .user-menu-list {
+ display: block;
+}
+#opt_user .user-menu-list {
+ display: none;
+}
+#opt_user .user-menu-list {
+ width: 112px;
+ position: absolute;
+ top: 40px;
+ background: var(--e-color-bg2);
+ padding: 0 var(--o-spacing-h5);
+ cursor: pointer;
+ z-index: 99;
+ border: none;
+}
+#opt_user .user-menu-list .user-item {
+ display: block;
+ line-height: var(--o-line-height-h3);
+ text-align: center;
+ font-size: var(--o-font-size-text);
+ color: var(--e-color-text1);
+ border-bottom: 1px solid var(--o-color-division);
+ height: 48px;
+ line-height: 48px;
+}
+#opt_user .user-menu-list .user-item:hover {
+ color: var(--e-color-brand1);
+}
+#opt_user .user-menu-list .user-item :last-child {
+ border-bottom: 0 none;
+}
+#opt_user .user-menu-list .user-item .active,
+#opt_user .user-menu-list .user-item :hover {
+ color: var(--e-color-brand1);
+}
+.h5-nav-menu .h5-right {
+ display: flex;
+ align-items: center;
+}
+#opt_user {
+ position: relative;
+ margin-left: 32px;
+}
+@media screen and (max-width:1100px) {
+ #opt_user {
+ margin-left: 16px;
+ }
+}
+.nav-menu #opt_user {
+ height: 60px;
+ display: flex;
+ align-items: center;
+}
+#opt_user .opt-info {
+ display: flex;
+ align-items: center;
+ width: 112px;
+ cursor: pointer;
+ position: relative;
+}
+#opt_user .opt-info .opt-img {
+ position: relative;
+}
+#opt_user .opt-info .opt-img .img {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ vertical-align: middle;
+ display: none;
+}
+#opt_user .opt-info .opt-img .empty-img {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ vertical-align: middle;
+}
+#opt_user .opt-info .opt-name {
+ margin-left: 8px;
+ white-space: nowrap;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ font-size: 14px;
+ color: var(--e-color-text1);
+}
+#opt_user .login {
+ text-align: center;
+ cursor: pointer;
+ font-size: 14px;
+ color: var(--e-color-text1);
+ display: none;
+}
+#opt_user .login .icon-user {
+ display: inline-block;
+ width: 24px;
+ height: 24px;
+ background-image: url("../img/common/icon-user.svg");
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+}
+.dark #opt_user .login .icon-user {
+ display: inline-block;
+ width: 24px;
+ height: 24px;
+ background-image: url("../img/common/icon-user-dark.svg");
+}
diff --git a/static/css/markdown.css b/static/css/markdown.css
new file mode 100644
index 0000000..f2bb819
--- /dev/null
+++ b/static/css/markdown.css
@@ -0,0 +1,305 @@
+@charset "UTF-8";
+.markdown {
+ max-width: 1174px;
+ padding: 0 0 40px 0;
+ margin: 0 auto;
+ --e-color-table: var(--e-color-border2);
+}
+#markdown blockquote {
+ border-radius: 6px;
+ background-color: rgba(203, 217, 255, 0.2);
+ border-left: 6px solid #002fa7;
+ padding: 20px;
+}
+#markdown blockquote img {
+ vertical-align: top;
+}
+.markdown > *:first-child {
+ margin-top: 0 !important;
+}
+@media (max-width: 1439px) {
+ .markdown {
+ width: calc(100% - 48px);
+ }
+}
+@media (max-width: 1100px) {
+ .markdown {
+ width: 100%;
+ }
+}
+@media (max-width: 768px) {
+ .markdown {
+ width: 100%;
+ padding: var(--o-spacing-h5);
+ margin-bottom: var(--o-spacing-h2);
+ background-color: var(--e-color-bg2);
+ box-shadow: var(--e-shadow-sl1);
+ margin-top: 16px;
+ }
+}
+.markdown ol,
+.markdown ul {
+ list-style: inherit;
+}
+#markdown ol {
+ list-style: decimal;
+}
+.markdown a {
+ word-break: break-all;
+}
+.markdown h1,
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+ color: var(--e-color-text1);
+ font-weight: normal;
+}
+.markdown h1 a,
+.markdown h2 a,
+.markdown h3 a,
+.markdown h4 a,
+.markdown h5 a,
+.markdown h6 a {
+ display: none;
+}
+.markdown hr {
+ margin: var(--o-spacing-h1) 0;
+ border: none;
+ height: 1px;
+ background-color: var(--e-color-division1);
+}
+@media screen and (max-width: 768px) {
+ .markdown hr {
+ margin: var(--o-spacing-h4) 0;
+ }
+}
+.markdown h1 {
+ margin-top: var(--o-spacing-h1);
+ margin-bottom: var(--o-spacing-h2);
+ font-size: var(--o-font-size-h3);
+ line-height: var(--o-line-height-h3);
+ font-weight: 300;
+}
+@media screen and (max-width: 768px) {
+ .markdown h1 {
+ margin: var(--o-spacing-h3) 0 var(--o-spacing-h4);
+ font-size: var(--o-font-size-h7);
+ line-height: var(--o-line-height-h7);
+ }
+}
+.markdown h2 {
+ margin-bottom: var(--o-spacing-h3);
+ font-size: var(--o-font-size-h5);
+ line-height: var(--o-line-height-h5);
+ padding-top: 0;
+}
+.markdown h1::before{
+ content: "";
+ display: block;
+ width: 100%;
+ height: 60px;
+ margin-top: -60px;
+ overflow: hidden;
+}
+.markdown h2::before,.markdown h3::before {
+ content: "";
+ display: block;
+ width: 100%;
+ height: 60px;
+ overflow: hidden;
+}
+.markdown h2::before{
+ margin-top: -40px;
+}
+.markdown h3::before{
+ margin-top: -28px;
+}
+@media screen and (max-width: 768px) {
+ .markdown h2 {
+ margin: 0 0 var(--o-spacing-h5);
+ font-size: var(--o-font-size-h8);
+ line-height: var(--o-line-height-h8);
+ padding-top: 0;
+ }
+ .markdown h1::before{
+ height: 92px;
+ margin-top: -92px;
+ }
+ .markdown h2::before{
+ height: 92px;
+ margin-top: -72px;
+ }
+ .markdown h3::before{
+ height: 92px;
+ margin-top: -76px;
+ }
+}
+.markdown h3 {
+ padding-top: 0;
+ font-size: var(--o-font-size-h7);
+ line-height: var(--o-line-height-h8);
+}
+@media screen and (max-width: 768px) {
+ .markdown h3 {
+ padding-top: 0;
+ font-size: var(--o-font-size-text);
+ line-height: var(--o-line-height-text);
+ }
+}
+.markdown h4 {
+ margin-top: var(--o-spacing-h4);
+ font-size: var(--o-font-size-h8);
+ line-height: var(--o-font-size-h8);
+}
+@media screen and (max-width: 768px) {
+ .markdown h4 {
+ margin-top: var(--o-spacing-h6);
+ font-size: var(--o-font-size-tip);
+ line-height: var(--o-line-height-tip);
+ }
+}
+.markdown h5 {
+ margin-top: var(--o-spacing-h5);
+ font-size: var(--o-font-size-text);
+ line-height: var(--o-font-size-text);
+}
+.markdown h6 {
+ margin-top: var(--o-spacing-h5);
+ font-size: var(--o-font-size-text);
+ line-height: var(--o-font-size-text);
+}
+.markdown p,
+.markdown ul,
+.markdown ol {
+ margin-top: var(--o-spacing-h8);
+ margin-bottom: var(--o-spacing-h8);
+ font-size: var(--o-font-size-text);
+ font-weight: normal;
+ color: var(--e-color-text4);
+ line-height: var(--o-line-height-text);
+ word-break: break-word;
+}
+@media screen and (max-width: 768px) {
+ .markdown p,
+ .markdown ul,
+ .markdown ol {
+ font-size: var(--o-font-size-tip);
+ overflow: scroll;
+ }
+ .markdown table p {
+ margin-top: 0;
+ margin-bottom: 0;
+ }
+ .markdown table tr td p,
+ .markdown table tr th p {
+ padding: 8px 0;
+ }
+}
+.markdown ul,
+.markdown ol {
+ padding-left: 1.5em;
+}
+.markdown ul li::marker,
+.markdown ol li::marker {
+ color: var(--e-color-text1);
+}
+
+.markdown table {
+ width: 100%;
+ font-size: var(--o-font-size-text);
+ table-layout: fixed;
+ word-break: break-word;
+ border-collapse: collapse;
+ padding: 0;
+ line-height: var(--o-line-height-text);
+}
+.markdown table tr {
+ height: 54px;
+ color: var(--e-color-text4);
+ border-bottom: 1px solid var(--e-color-table);
+}
+.markdown table tr th {
+ padding-left: var(--o-spacing-h3);
+ text-align: left;
+ font-weight: 500;
+ font-size: var(--o-font-size-h8);
+ line-height: var(--o-line-height-h8);
+ background-color: var(--e-color-bg4);
+ color: var(--e-color-text1);
+}
+@media screen and (max-width: 768px) {
+ .markdown table tr th {
+ font-size: var(--o-font-size-text);
+ padding-left: var(--o-spacing-h5);
+ }
+ .markdown table tr th:nth-of-type(1) {
+ width: 30vw !important;
+ }
+}
+.markdown table tr td {
+ padding-left: var(--o-spacing-h3);
+ line-height: var(--o-line-height-text);
+}
+.markdown table tr pre {
+ white-space: pre-wrap;
+}
+.markdown table tr pre .btn_pre_copy{
+ display: none;
+}
+.markdown table tr td p,
+.markdown table tr th p {
+ padding: 16px 0;
+ min-height: 54px;
+ line-height: 22px;
+}
+@media screen and (max-width: 768px) {
+ .markdown table tr td {
+ padding-left: var(--o-spacing-h6);
+ font-size: var(--o-font-size-tip);
+ }
+}
+.markdown strong {
+ font-weight: bold;
+}
+.markdown img {
+ max-width: 100%;
+}
+.markdown div[class*="language-"] {
+ position: relative;
+ margin: 8px 0;
+ background-color: var(--e-color-bg1);
+ box-shadow: var(--e-shadow-sl1);
+ overflow-x: auto;
+}
+.markdown [class*="language-"] code,
+.markdown [class*="language-"] pre {
+ text-align: left;
+ white-space: pre;
+ word-spacing: normal;
+ word-break: normal;
+ word-wrap: normal;
+ -moz-tab-size: 4;
+ -o-tab-size: 4;
+ tab-size: 4;
+ -webkit-hyphens: none;
+ -moz-hyphens: none;
+ -ms-hyphens: none;
+ hyphens: none;
+}
+.markdown [class*="language-"] pre {
+ position: relative;
+ z-index: 1;
+ margin: 0;
+ padding: 24px 64px;
+ background: 0 0;
+ overflow-x: auto;
+}
+.markdown [class*="language-"] code {
+ padding: 0;
+ line-height: var(--o-line-height-text);
+ font-size: var(--o-font-size-text);
+ color: #eee;
+}
+
diff --git a/static/css/o_theme_dark.css b/static/css/o_theme_dark.css
new file mode 100644
index 0000000..d6e3f8a
--- /dev/null
+++ b/static/css/o_theme_dark.css
@@ -0,0 +1 @@
+[class="dark"]{--o-white:255,255,255;--o-black:0,0,0;--o-kleinblue-1:14,26,69;--o-kleinblue-2:18,34,87;--o-kleinblue-3:29,51,119;--o-kleinblue-4:42,72,158;--o-kleinblue-5:57,97,202;--o-kleinblue-6:73,122,248;--o-kleinblue-7:110,148,243;--o-kleinblue-8:140,171,234;--o-kleinblue-9:176,199,241;--o-kleinblue-10:215,227,248;--o-yellow-1:81,46,9;--o-yellow-2:121,75,15;--o-yellow-3:161,107,22;--o-yellow-4:202,143,30;--o-yellow-5:242,183,38;--o-yellow-6:245,202,80;--o-yellow-7:247,219,122;--o-yellow-8:250,234,166;--o-yellow-9:252,246,210;--o-yellow-10:254,251,237;--o-orange-1:77,24,0;--o-orange-2:120,42,1;--o-orange-3:163,68,8;--o-orange-4:207,97,19;--o-orange-5:250,130,33;--o-orange-6:251,143,43;--o-orange-7:252,174,91;--o-orange-8:253,202,139;--o-orange-9:254,227,188;--o-orange-10:255,248,237;--o-red-1:77,0,17;--o-red-2:115,3,24;--o-red-3:153,9,31;--o-red-4:192,17,37;--o-red-5:230,28,43;--o-red-6:235,35,45;--o-red-7:240,82,85;--o-red-8:245,132,130;--o-red-9:250,183,180;--o-red-10:255,234,232;--o-green-1:0,77,42;--o-green-2:2,102,53;--o-green-3:10,127,66;--o-green-4:22,152,80;--o-green-5:36,177,95;--o-green-6:51,193,104;--o-green-7:90,208,131;--o-green-8:135,224,163;--o-green-9:185,239,200;--o-green-10:240,255,244;--o-amber-1:77,30,0;--o-amber-2:116,51,0;--o-amber-3:154,76,0;--o-amber-4:193,105,0;--o-amber-5:231,137,0;--o-amber-6:236,165,47;--o-amber-7:241,191,96;--o-amber-8:245,215,147;--o-amber-9:250,237,200;--o-amber-10:253,247,232;--o-lime-1:53,70,0;--o-lime-2:82,105,0;--o-lime-3:112,141,1;--o-lime-4:143,176,2;--o-lime-5:175,211,5;--o-lime-6:184,220,48;--o-lime-7:196,229,95;--o-lime-8:212,237,145;--o-lime-9:231,246,198;--o-lime-10:244,251,231;--o-light-green-1:33,60,7;--o-light-green-2:51,90,11;--o-light-green-3:70,119,16;--o-light-green-4:91,149,21;--o-light-green-5:112,179,27;--o-light-green-6:184,220,48;--o-light-green-7:166,209,103;--o-light-green-8:195,225,148;--o-light-green-9:225,240,199;--o-light-green-10:242,247,231;--o-teal-1:0,60,48;--o-teal-2:0,90,71;--o-teal-3:0,119,93;--o-teal-4:0,149,113;--o-teal-5:0,179,133;--o-teal-6:39,194,152;--o-teal-7:84,209,173;--o-teal-8:135,225,197;--o-teal-9:192,240,224;--o-teal-10:228,247,241;--o-cyan-1:0,52,60;--o-cyan-2:0,79,90;--o-cyan-3:0,107,119;--o-cyan-4:0,137,149;--o-cyan-5:39,186,194;--o-cyan-6:84,205,209;--o-cyan-7:92,208,212;--o-cyan-8:135,223,225;--o-cyan-9:192,240,240;--o-cyan-10:228,247,247;--o-light-blue-1:0,47,76;--o-light-blue-2:0,72,115;--o-light-blue-3:0,99,153;--o-light-blue-4:0,127,191;--o-light-blue-5:0,156,229;--o-light-blue-6:47,178,234;--o-light-blue-7:96,198,239;--o-light-blue-8:147,218,245;--o-light-blue-9:200,237,250;--o-light-blue-10:232,247,252;--o-blue-1:0,43,97;--o-blue-2:0,61,133;--o-blue-3:0,80,169;--o-blue-4:0,100,204;--o-blue-5:0,122,240;--o-blue-6:49,151,243;--o-blue-7:98,178,246;--o-blue-8:149,205,249;--o-blue-9:202,231,252;--o-blue-10:233,245,254;--o-mixedgray-1:0,0,0;--o-mixedgray-2:18,18,20;--o-mixedgray-3:26,26,28;--o-mixedgray-4:36,36,39;--o-mixedgray-5:43,43,47;--o-mixedgray-6:53,53,57;--o-mixedgray-7:63,63,67;--o-mixedgray-8:85,85,88;--o-mixedgray-9:118,118,122;--o-mixedgray-10:156,156,159;--o-mixedgray-11:181,181,185;--o-mixedgray-12:208,208,210;--o-mixedgray-13:235,235,238;--o-mixedgray-14:255,255,255;--o-indigo-1:5,19,101;--o-indigo-2:10,28,118;--o-indigo-3:16,38,138;--o-indigo-4:23,50,159;--o-indigo-5:31,63,179;--o-indigo-6:66,96,194;--o-indigo-7:106,131,209;--o-indigo-8:150,170,225;--o-indigo-9:209,218,241;--o-indigo-10:232,236,247;--o-violet-1:34,0,109;--o-violet-2:39,2,130;--o-violet-3:46,7,150;--o-violet-4:53,13,171;--o-violet-5:61,20,191;--o-violet-6:97,62,201;--o-violet-7:150,130,223;--o-violet-8:182,169,233;--o-violet-9:217,210,244;--o-violet-10:240,237,250;--o-purple-1:60,0,97;--o-purple-2:77,0,118;--o-purple-3:95,0,138;--o-purple-4:114,0,159;--o-purple-5:135,2,179;--o-purple-6:161,41,194;--o-purple-7:187,85,209;--o-purple-8:211,136,225;--o-purple-9:234,192,240;--o-purple-10:245,228,247;--o-pink-1:81,0,51;--o-pink-2:117,0,70;--o-pink-3:153,0,86;--o-pink-4:188,0,100;--o-pink-5:224,0,112;--o-pink-6:230,46,132;--o-pink-7:236,95,156;--o-pink-8:243,146,184;--o-pink-9:249,199,217;--o-pink-10:252,232,239;--o-color-white:rgb(var(--o-white));--o-color-black:rgb(var(--o-black));--o-color-primary1:rgb(var(--o-kleinblue-6));--o-color-primary2:rgb(var(--o-kleinblue-5));--o-color-primary3:rgb(var(--o-kleinblue-7));--o-color-primary4:rgb(var(--o-kleinblue-4));--o-color-primary1-light:rgb(var(--o-kleinblue-2));--o-color-primary2-light:rgb(var(--o-kleinblue-3));--o-color-primary3-light:rgb(var(--o-kleinblue-4));--o-color-primary4-light:rgb(var(--o-kleinblue-1));--o-color-success1:rgb(var(--o-green-6));--o-color-success2:rgb(var(--o-green-4));--o-color-success3:rgb(var(--o-green-7));--o-color-success4:rgb(var(--o-green-3));--o-color-success1-light:rgb(var(--o-green-2));--o-color-success2-light:rgb(var(--o-green-3));--o-color-success3-light:rgb(var(--o-green-4));--o-color-success4-light:rgb(var(--o-green-1));--o-color-warning1:rgb(var(--o-orange-6));--o-color-warning2:rgb(var(--o-orange-4));--o-color-warning3:rgb(var(--o-orange-7));--o-color-warning4:rgb(var(--o-orange-3));--o-color-warning1-light:rgb(var(--o-orange-2));--o-color-warning2-light:rgb(var(--o-orange-3));--o-color-warning3-light:rgb(var(--o-orange-4));--o-color-warning4-light:rgb(var(--o-orange-1));--o-color-danger1:rgb(var(--o-red-6));--o-color-danger2:rgb(var(--o-red-4));--o-color-danger3:rgb(var(--o-red-7));--o-color-danger4:rgb(var(--o-red-3));--o-color-danger1-light:rgb(var(--o-red-2));--o-color-danger2-light:rgb(var(--o-red-3));--o-color-danger3-light:rgb(var(--o-red-4));--o-color-danger4-light:rgb(var(--o-red-1));--o-color-fill1:rgb(var(--o-mixedgray-3));--o-color-fill2:rgb(var(--o-mixedgray-4));--o-color-fill3:rgb(var(--o-mixedgray-5));--o-color-control1:rgba(var(--o-mixedgray-14),0.25);--o-color-control2:rgba(var(--o-mixedgray-14),0.6);--o-color-control3:rgba(var(--o-mixedgray-14),0.8);--o-color-control4:rgba(var(--o-mixedgray-14),0.15);--o-color-control1-light:rgb(var(--o-mixedgray-7),1.0);--o-color-control2-light:rgb(var(--o-mixedgray-5),1);--o-color-control3-light:rgb(var(--o-mixedgray-6),1);--o-color-control4-light:rgb(var(--o-mixedgray-5),1);--o-color-control-light:rgb(var(--o-mixedgray-4),1.0);--o-color-info1:rgba(var(--o-mixedgray-14),1.0);--o-color-info2:rgba(var(--o-mixedgray-14),0.8);--o-color-info3:rgba(var(--o-mixedgray-14),0.6);--o-color-info4:rgba(var(--o-mixedgray-14),0.4);--o-color-info1-inverse:rgba(var(--o-mixedgray-1),1.0);--o-color-info2-inverse:rgba(var(--o-mixedgray-1),0.8);--o-color-info3-inverse:rgba(var(--o-mixedgray-1),0.6);--o-color-info4-inverse:rgba(var(--o-mixedgray-1),0.4);--o-color-mask1:rgba(var(--o-mixedgray-1),0.4);--o-color-mask2:rgba(var(--o-mixedgray-4),0.2);--o-color-link1:rgba(var(--o-kleinblue-6));--o-color-link2:rgba(var(--o-kleinblue-5));--o-color-link3:rgba(var(--o-kleinblue-7));--o-color-link4:rgba(var(--o-kleinblue-4));--o-shadow-1:0 3px 8px rgba(var(--o-mixedgray-1),0.08);--o-shadow-2:0 2px 24px rgba(var(--o-mixedgray-1),0.15);--o-shadow-3:0 8px 40px rgba(var(--o-mixedgray-1),0.1);--o-gap-1:4px;--o-gap-2:8px;--o-gap-3:12px;--o-gap-4:16px;--o-gap-5:24px;--o-gap-6:32px;--o-gap-7:40px;--o-gap-8:48px;--o-gap-9:64px;--o-gap-10:72px;--o-control_size-2xs:14px;--o-control_size-xs:16px;--o-control_size-s:24px;--o-control_size-m:32px;--o-control_size-l:40px;--o-control_size-xl:48px;--o-control_size-2xl:56px;--o-icon_size-xs:16px;--o-icon_size-s:20px;--o-icon_size-m:24px;--o-icon_size-l:32px;--o-icon_size-xl:40px;--o-icon_size-2xl:48px;--o-icon_size-3xl:56px;--o-icon_size-4xl:64px;--o-icon_size_control-xs:16px;--o-icon_size_control-s:20px;--o-icon_size_control-m:24px;--o-icon_size_control-l:32px;--o-icon_size_control-xl:40px;--o-font_size-display1:56px;--o-font_size-display2:48px;--o-font_size-display3:40px;--o-font_size-h1:32px;--o-font_size-h2:24px;--o-font_size-h3:22px;--o-font_size-h4:20px;--o-font_size-text1:16px;--o-font_size-text2:18px;--o-font_size-tip1:14px;--o-font_size-tip2:12px;--o-line_height-display1:80px;--o-line_height-display2:64px;--o-line_height-display3:56px;--o-line_height-h1:44px;--o-line_height-h2:32px;--o-line_height-h3:30px;--o-line_height-h4:28px;--o-line_height-text1:24px;--o-line_height-text2:26x;--o-line_height-tip1:22px;--o-line_height-tip2:18px;--o-radius-xs:4px;--o-radius-s:8px;--o-radius-m:12px;--o-radius-l:16px;--o-radius-xl:24px;--o-radius_control-xs:4px;--o-radius_control-s:8px;--o-radius_control-m:12px;--o-radius_control-l:16px;--o-duration-s:200ms;--o-duration-m1:250ms;--o-duration-m2:300ms;--o-duration-m3:400ms;--o-duration-l:500ms;--o-duration-xl:1000ms;--o-easing-linear:cubic-bezier(0,0,1,1);--o-easing-standard:cubic-bezier(0.2,0,0,1);--o-easing-standard-in:cubic-bezier(0,0,0,1);--o-easing-standard-out:cubic-bezier(0.3,0,1,1);--o-easing-emphasized:cubic-bezier(0.2,0,0,1);--o-easing-emphasized-in:cubic-bezier(0.3,0,0.8,0.15);--o-easing-emphasized-out:cubic-bezier(0.05,0.7,0.1,1)}
\ No newline at end of file
diff --git a/static/css/o_theme_light.css b/static/css/o_theme_light.css
new file mode 100644
index 0000000..a7e048a
--- /dev/null
+++ b/static/css/o_theme_light.css
@@ -0,0 +1 @@
+:root,[class="light"]{--o-white:255,255,255;--o-black:0,0,0;--o-kleinblue-1:235,241,250;--o-kleinblue-2:206,219,245;--o-kleinblue-3:132,161,220;--o-kleinblue-4:81,119,202;--o-kleinblue-5:37,81,185;--o-kleinblue-6:0,47,167;--o-kleinblue-7:0,39,147;--o-kleinblue-8:0,31,126;--o-kleinblue-9:0,24,126;--o-kleinblue-10:0,18,85;--o-yellow-1:254,252,233;--o-yellow-2:252,248,202;--o-yellow-3:249,237,149;--o-yellow-4:246,224,98;--o-yellow-5:243,207,49;--o-yellow-6:240,188,6;--o-yellow-7:200,147,0;--o-yellow-8:160,109,0;--o-yellow-9:120,76,0;--o-yellow-10:80,47,0;--o-orange-1:255,246,232;--o-orange-2:254,226,186;--o-orange-3:253,202,140;--o-orange-4:252,176,95;--o-orange-5:251,147,50;--o-orange-6:250,115,5;--o-orange-7:207,88,3;--o-orange-8:163,64,2;--o-orange-9:120,42,1;--o-orange-10:77,24,0;--o-red-1:255,234,232;--o-red-2:250,185,182;--o-red-3:245,136,134;--o-red-4:240,87,90;--o-red-5:235,43,52;--o-red-6:230,0,18;--o-red-7:192,0,22;--o-red-8:153,0,23;--o-red-9:115,0,21;--o-red-10:77,0,17;--o-green-1:232,255,238;--o-green-2:177,239,195;--o-green-3:128,224,158;--o-green-4:84,208,127;--o-green-5:45,193,101;--o-green-6:11,177,81;--o-green-7:7,152,72;--o-green-8:4,127,63;--o-green-9:2,102,53;--o-green-10:0,77,42;--o-amber-1:253,247,232;--o-amber-2:250,237,200;--o-amber-3:245,215,147;--o-amber-4:241,191,96;--o-amber-5:236,165,47;--o-amber-6:231,137,0;--o-amber-7:193,105,0;--o-amber-8:154,76,0;--o-amber-9:116,51,0;--o-amber-10:77,30,0;--o-lime-1:243,250,230;--o-lime-2:229,244,195;--o-lime-3:208,233,140;--o-lime-4:191,223,89;--o-lime-5:177,212,42;--o-lime-6:167,201,0;--o-lime-7:136,168,0;--o-lime-8:107,134,0;--o-lime-9:78,101,0;--o-lime-10:51,67,0;--o-light-green-1:242,247,231;--o-light-green-2:225,240,199;--o-light-green-3:195,225,148;--o-light-green-4:166,209,103;--o-light-green-5:138,194,62;--o-light-green-6:112,179,27;--o-light-green-7:91,149,21;--o-light-green-8:70,119,16;--o-light-green-9:51,90,11;--o-light-green-10:33,60,7;--o-teal-1:228,247,241;--o-teal-2:192,240,224;--o-teal-3:135,225,197;--o-teal-4:84,209,173;--o-teal-5:39,194,152;--o-teal-6:0,179,133;--o-teal-7:0,149,113;--o-teal-8:0,119,93;--o-teal-9:0,90,71;--o-teal-10:0,60,48;--o-cyan-1:228,247,247;--o-cyan-2:192,240,240;--o-cyan-3:135,223,225;--o-cyan-4:84,205,209;--o-cyan-5:39,186,194;--o-cyan-6:0,167,179;--o-cyan-7:0,137,149;--o-cyan-8:0,107,119;--o-cyan-9:0,79,90;--o-cyan-10:0,52,60;--o-light-blue-1:232,247,252;--o-light-blue-2:200,237,250;--o-light-blue-3:147,218,245;--o-light-blue-4:96,198,239;--o-light-blue-5:47,178,234;--o-light-blue-6:0,156,229;--o-light-blue-7:0,127,191;--o-light-blue-8:0,99,153;--o-light-blue-9:0,72,115;--o-light-blue-10:0,47,76;--o-blue-1:233,245,254;--o-blue-2:202,231,252;--o-blue-3:149,205,249;--o-blue-4:98,178,246;--o-blue-5:49,151,243;--o-blue-6:0,122,240;--o-blue-7:0,100,204;--o-blue-8:0,80,169;--o-blue-9:0,61,133;--o-blue-10:0,43,97;--o-mixedgray-1:255,255,255;--o-mixedgray-2:243,243,245;--o-mixedgray-3:237,237,240;--o-mixedgray-4:232,232,235;--o-mixedgray-5:222,222,227;--o-mixedgray-6:212,212,217;--o-mixedgray-7:186,186,191;--o-mixedgray-8:149,149,157;--o-mixedgray-9:111,111,117;--o-mixedgray-10:85 ,85,92;--o-mixedgray-11:61,61,66;--o-mixedgray-12:37,37,41;--o-mixedgray-13:21,21,23;--o-mixedgray-14:0,0,0;--o-indigo-1:232,236,247;--o-indigo-2:200,211,240;--o-indigo-3:150,170,225;--o-indigo-4:106,131,209;--o-indigo-5:66,96,194;--o-indigo-6:31,63,179;--o-indigo-7:23,50,159;--o-indigo-8:16,38,138;--o-indigo-9:10,28,118;--o-indigo-10:5,19,101;--o-violet-1:234,231,249;--o-violet-2:206,199,242;--o-violet-3:163,147,229;--o-violet-4:124,100,217;--o-violet-5:90,58,204;--o-violet-6:61,20,191;--o-violet-7:53,13,171;--o-violet-8:46,7,150;--o-violet-9:39,2,130;--o-violet-10:34,0,109;--o-purple-1:245,228,247;--o-purple-2:234,192,240;--o-purple-3:211,136,225;--o-purple-4:187,85,209;--o-purple-5:161,41,194;--o-purple-6:135,2,179;--o-purple-7:114,0,159;--o-purple-8:95,0,138;--o-purple-9:77,0,118;--o-purple-10:60,0,97;--o-pink-1:252,232,239;--o-pink-2:249,199,217;--o-pink-3:243,146,184;--o-pink-4:236,95,156;--o-pink-5:230,46,132;--o-pink-6:224,0,112;--o-pink-7:188,0,100;--o-pink-8:153,0,86;--o-pink-9:117,0,70;--o-pink-10:81,0,51;--o-color-white:rgb(var(--o-white));--o-color-black:rgb(var(--o-black));--o-color-primary1:rgb(var(--o-kleinblue-6));--o-color-primary2:rgb(var(--o-kleinblue-4));--o-color-primary3:rgb(var(--o-kleinblue-7));--o-color-primary4:rgb(var(--o-kleinblue-3));--o-color-primary1-light:rgb(var(--o-kleinblue-2));--o-color-primary2-light:rgb(var(--o-kleinblue-3));--o-color-primary3-light:rgb(var(--o-kleinblue-4));--o-color-primary4-light:rgb(var(--o-kleinblue-1));--o-color-success1:rgb(var(--o-green-6));--o-color-success2:rgb(var(--o-green-4));--o-color-success3:rgb(var(--o-green-7));--o-color-success4:rgb(var(--o-green-3));--o-color-success1-light:rgb(var(--o-green-2));--o-color-success2-light:rgb(var(--o-green-3));--o-color-success3-light:rgb(var(--o-green-4));--o-color-success4-light:rgb(var(--o-green-1));--o-color-warning1:rgb(var(--o-orange-6));--o-color-warning2:rgb(var(--o-orange-4));--o-color-warning3:rgb(var(--o-orange-7));--o-color-warning4:rgb(var(--o-orange-3));--o-color-warning1-light:rgb(var(--o-orange-2));--o-color-warning2-light:rgb(var(--o-orange-3));--o-color-warning3-light:rgb(var(--o-orange-4));--o-color-warning4-light:rgb(var(--o-orange-1));--o-color-danger1:rgb(var(--o-red-6));--o-color-danger2:rgb(var(--o-red-4));--o-color-danger3:rgb(var(--o-red-7));--o-color-danger4:rgb(var(--o-red-3));--o-color-danger1-light:rgb(var(--o-red-2));--o-color-danger2-light:rgb(var(--o-red-3));--o-color-danger3-light:rgb(var(--o-red-4));--o-color-danger4-light:rgb(var(--o-red-1));--o-color-fill1:rgb(var(--o-mixedgray-2));--o-color-fill2:rgb(var(--o-mixedgray-1));--o-color-fill3:rgb(var(--o-mixedgray-3));--o-color-control1:rgba(var(--o-mixedgray-14),0.25);--o-color-control2:rgba(var(--o-mixedgray-14),0.6);--o-color-control3:rgba(var(--o-mixedgray-14),0.8);--o-color-control4:rgba(var(--o-mixedgray-14),0.1);--o-color-control1-light:rgb(var(--o-mixedgray-5),1.0);--o-color-control2-light:rgba(var(--o-kleinblue-1),1);--o-color-control3-light:rgba(var(--o-kleinblue-2),1);--o-color-control4-light:rgb(var(--o-mixedgray-3),1);--o-color-control-light:rgb(var(--o-mixedgray-1),1.0);--o-color-info1:rgba(var(--o-mixedgray-14),1.0);--o-color-info2:rgba(var(--o-mixedgray-14),0.8);--o-color-info3:rgba(var(--o-mixedgray-14),0.6);--o-color-info4:rgba(var(--o-mixedgray-14),0.4);--o-color-info1-inverse:rgba(var(--o-mixedgray-1),1.0);--o-color-info2-inverse:rgba(var(--o-mixedgray-1),0.8);--o-color-info3-inverse:rgba(var(--o-mixedgray-1),0.6);--o-color-info4-inverse:rgba(var(--o-mixedgray-1),0.4);--o-color-mask1:rgba(var(--o-mixedgray-14),0.4);--o-color-mask2:rgba(var(--o-mixedgray-1),0.2);--o-color-link1:rgba(var(--o-kleinblue-6));--o-color-link2:rgba(var(--o-kleinblue-4));--o-color-link3:rgba(var(--o-kleinblue-7));--o-color-link4:rgba(var(--o-kleinblue-3));--o-shadow-1:0 3px 8px rgba(var(--o-mixedgray-9),0.08);--o-shadow-2:0 2px 24px rgba(var(--o-mixedgray-9),0.15);--o-shadow-3:0 8px 40px rgba(var(--o-mixedgray-9),0.1);--o-gap-1:4px;--o-gap-2:8px;--o-gap-3:12px;--o-gap-4:16px;--o-gap-5:24px;--o-gap-6:32px;--o-gap-7:40px;--o-gap-8:48px;--o-gap-9:64px;--o-gap-10:72px;--o-control_size-2xs:14px;--o-control_size-xs:16px;--o-control_size-s:24px;--o-control_size-m:32px;--o-control_size-l:40px;--o-control_size-xl:48px;--o-control_size-2xl:56px;--o-icon_size-xs:16px;--o-icon_size-s:20px;--o-icon_size-m:24px;--o-icon_size-l:32px;--o-icon_size-xl:40px;--o-icon_size-2xl:48px;--o-icon_size-3xl:56px;--o-icon_size-4xl:64px;--o-icon_size_control-xs:16px;--o-icon_size_control-s:20px;--o-icon_size_control-m:24px;--o-icon_size_control-l:32px;--o-icon_size_control-xl:40px;--o-font_size-display1:56px;--o-font_size-display2:48px;--o-font_size-display3:40px;--o-font_size-h1:32px;--o-font_size-h2:24px;--o-font_size-h3:22px;--o-font_size-h4:20px;--o-font_size-text1:16px;--o-font_size-text2:18px;--o-font_size-tip1:14px;--o-font_size-tip2:12px;--o-line_height-display1:80px;--o-line_height-display2:64px;--o-line_height-display3:56px;--o-line_height-h1:44px;--o-line_height-h2:32px;--o-line_height-h3:30px;--o-line_height-h4:28px;--o-line_height-text1:24px;--o-line_height-text2:26px;--o-line_height-tip1:22px;--o-line_height-tip2:18px;--o-radius-xs:4px;--o-radius-s:8px;--o-radius-m:12px;--o-radius-l:16px;--o-radius-xl:24px;--o-radius_control-xs:4px;--o-radius_control-s:8px;--o-radius_control-m:12px;--o-radius_control-l:16px;--o-duration-s:200ms;--o-duration-m1:250ms;--o-duration-m2:300ms;--o-duration-m3:400ms;--o-duration-l:500ms;--o-duration-xl:1000ms;--o-easing-linear:cubic-bezier(0,0,1,1);--o-easing-standard:cubic-bezier(0.2,0,0,1);--o-easing-standard-in:cubic-bezier(0,0,0,1);--o-easing-standard-out:cubic-bezier(0.3,0,1,1);--o-easing-emphasized:cubic-bezier(0.2,0,0,1);--o-easing-emphasized-in:cubic-bezier(0.3,0,0.8,0.15);--o-easing-emphasized-out:cubic-bezier(0.05,0.7,0.1,1)}
\ No newline at end of file
diff --git a/static/css/pagination.css b/static/css/pagination.css
new file mode 100644
index 0000000..480b93c
--- /dev/null
+++ b/static/css/pagination.css
@@ -0,0 +1,105 @@
+
+
+* {
+ margin: 0;
+ padding: 0;
+}
+
+._page_container {
+ margin-top: 50px;
+ font-size: 13px;
+ height: 28px;
+ line-height: 28px;
+ user-select: none;
+ color: var(--e-color-text1);
+}
+
+._page_container input[type=number] {
+ -moz-appearance: textfield;
+}
+
+._page_container input[type=number]::-webkit-inner-spin-button,
+._page_container input[type=number]::-webkit-outer-spin-button {
+ -webkit-appearance: none;
+ margin: 0;
+}
+
+._page_container ._pages {
+ display: inline-block;
+}
+
+._page_container ._pages li {
+ display: inline-block;
+ list-style: none;
+ vertical-align: top;
+ font-weight: bold;
+ min-width: 30px;
+ text-align: center;
+ cursor: pointer;
+ color: var(--e-color-text1);
+}
+
+._page_container ._pages li:hover {
+ color: var(--e-color-brand1);
+}
+
+._page_container ._pages li:first-child,
+._page_container ._pages li:last-child {
+ font-size: 14px;
+}
+
+._page_container ._pages ._prev,
+._page_container ._pages ._next,
+._page_container ._pages ._home,
+._page_container ._pages ._last {
+ font-size: 12px;
+ font-weight: normal;
+ padding: 0 8px;
+}
+
+._page_container ._jumper {
+ display: inline-block;
+ color: #606266;
+ margin-left: 10px;
+}
+
+._page_container ._jumper ._count {
+ margin-right: 10px;
+}
+
+._page_container ._jumper ._jumper_input {
+ display: inline-block;
+ font-size: 14px;
+ color: #606266;
+ width: 50px;
+ height: 26px;
+ text-align: center;
+ margin: 0 5px;
+ padding: 3px;
+ border: 1px solid #dcdfe6;
+ border-radius: 4px;
+ background: none;
+ outline: none;
+ box-sizing: border-box;
+}
+
+._page_container ._jumper ._jumper_input:focus {
+ border-color: var(--e-color-brand1);
+}
+
+._active_1 {
+ color: #fff !important;
+ background-color: var(--e-color-brand1) !important;
+}
+
+._active_2 {
+ color: var(--e-color-brand1) !important;
+}
+
+._disabled {
+ cursor: not-allowed !important;
+}
+
+._disabled_c {
+ color: #c0c4cc !important;
+}
\ No newline at end of file
diff --git a/static/css/pcfooter.css b/static/css/pcfooter.css
new file mode 100644
index 0000000..e69de29
diff --git a/static/css/reset.css b/static/css/reset.css
new file mode 100644
index 0000000..3b5377f
--- /dev/null
+++ b/static/css/reset.css
@@ -0,0 +1,154 @@
+html {
+ box-sizing: border-box;
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit;
+}
+
+body,
+div,
+dl,
+dt,
+dd,
+ul,
+ol,
+li,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+pre,
+form,
+fieldset,
+input,
+textarea,
+p,
+blockquote,
+th,
+td {
+ margin: 0;
+ padding: 0;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+fieldest,
+img {
+ border: 0;
+}
+
+address,
+caption,
+cite,
+code,
+dfn,
+em,
+strong,
+th,
+var {
+ font-style: normal;
+ font-weight: normal;
+}
+
+ol,
+ul {
+ list-style: none;
+}
+
+caption,
+th {
+ text-align: left;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-weight: normal;
+}
+
+p:before,
+q:after {
+ content: "";
+}
+
+abbr,
+acronym {
+ border: 0;
+}
+
+/*定位*/
+.tl {
+ text-align: left;
+}
+
+.tc {
+ text-align: center;
+}
+
+.tr {
+ text-align: right;
+}
+
+.bc {
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.fl {
+ float: left;
+}
+
+.fr {
+ float: right;
+}
+
+.cb {
+ clear: both;
+}
+
+.cl {
+ clear: left;
+}
+
+.cr {
+ clear: right;
+}
+
+.clearfix:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+
+.clearfix {
+ display: inline-block;
+}
+
+.fade-in {
+ opacity: 0;
+ transition: 0.8s all ease-out;
+ transform: scale(0.8);
+}
+#hm_t_undefined {
+ display: none;
+}
+
+a {
+ text-decoration: none;
+ color: var(--e-color-brand1);
+}
+
+
diff --git a/static/css/revision_new.css b/static/css/revision_new.css
new file mode 100644
index 0000000..4a7e523
--- /dev/null
+++ b/static/css/revision_new.css
@@ -0,0 +1,1139 @@
+#content {
+ width: calc(100% - 300px);
+ background-color: var(--e-color-bg1);
+ margin-left: 300px;
+}
+@media screen and (max-width: 1100px) {
+ #content {
+ width: 100%;
+ margin-left: 0;
+ }
+ #markdown {
+ margin-top: 16px;
+ }
+}
+.markdown {
+ margin-left: 0 !important;
+ margin-right: 0 !important;
+}
+
+.detail-footer {
+ margin-left: 300px;
+}
+.h5_footer .atom-img {
+ margin: 0 auto;
+}
+.h5_footer .footer-logo {
+ width: 134px;
+ height: 28px;
+ margin: 0 auto;
+}
+.detail-footer .atom-img,
+.h5_footer .atom-img {
+ width: 274px;
+ height: 58px;
+ background-image: url(../img/common/atom.png);
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+}
+@media screen and (max-width: 1100px) {
+ .detail-footer .atom-img,
+ .h5_footer .atom-img {
+ width: 189px;
+ height: 40px;
+ }
+}
+.dark .detail-footer .atom-img,
+.dark .h5_footer .atom-img {
+ background-image: url(../img/common/atom-logo-dark.svg);
+}
+.detail-footer .footer-logo {
+ width: 134px;
+ height: 28px;
+}
+.detail-footer .footer-logo {
+ background-image: url(/img/common/footerLogo.png);
+ background-size: 100% 100%;
+ background-repeat: no-repeat;
+}
+.dark .detail-footer .footer-logo {
+ background-image: url(/img/common/footer-logo-dark.png);
+}
+.top-link > .link-container {
+ height: 100%;
+}
+#page .content {
+ max-width: 1040px;
+ position: relative;
+}
+.docs-a {
+ display: flex;
+ align-items: center;
+ height: 18px;
+ font-size: var(--o-font-size-tip);
+ line-height: var(--o-line-height-tip);
+}
+@media screen and (max-width: 1100px) {
+ .docs-a a {
+ font-size: 12px;
+ }
+ #page .content {
+ max-width: 100%;
+ margin: 0 auto;
+ }
+ #docstreeview > ul li {
+ position: relative;
+ }
+ #docstreeview > ul > li > i {
+ position: absolute;
+ right: 16px;
+ top: 7px;
+ }
+ #docstreeview > ul > li > ul > li > i {
+ position: absolute;
+ right: 16px;
+ top: 14px;
+ }
+}
+#docstreeview > ul > li {
+ width: 100%;
+}
+
+#docstreeview > ul > li a {
+ width: 220px;
+ margin: 0 40px;
+ position: relative;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ padding-right: 10px;
+}
+#docstreeview > ul > li > a {
+ height: 53px;
+ display: block;
+ line-height: 53px;
+}
+@media screen and (max-width: 1100px) {
+ #docstreeview > ul > li > a {
+ padding: 8px 0;
+ line-height: normal;
+ height: auto;
+ }
+}
+#docstreeview > ul > li > a::before {
+ position: absolute;
+ top: 0;
+ width: 100%;
+ height: 1px;
+ content: "";
+ background-color: #fff;
+ opacity: 0.1;
+}
+#docstreeview > ul > li:nth-of-type(1) > a::before {
+ background-color: transparent;
+}
+#docstreeview > ul > li > ul {
+ background-color: var(--e-color-kleinblue4);
+}
+#docstreeview > ul > li ul {
+ padding-top: 8px;
+ padding-bottom: 24px;
+}
+@media screen and (max-width: 1100px) {
+ #docstreeview > ul > li ul {
+ padding-bottom: 8px;
+ }
+}
+#docstreeview > ul > li ul li {
+ padding-top: 16px;
+}
+.jstree-closed,
+.jstree-open {
+ position: relative;
+}
+.jstree-icon {
+ color: #ffffff;
+ position: absolute;
+ right: 40px;
+ top: 20px;
+}
+#docstreeview > ul > li ul li i {
+ top: 20px;
+}
+.jstree-open > a > .jstree-icon {
+ color: #feb32a;
+ transition: all 0.5s;
+ transform: rotateZ(-90deg);
+}
+.jstree-leaf > .jstree-icon {
+ display: none !important;
+}
+@media screen and (max-width: 1100px) {
+ .prev-next {
+ display: none;
+ }
+}
+.theme-change {
+ margin-left: 32px;
+ display: flex;
+ align-items: center;
+}
+.theme-change i {
+ display: block;
+ width: 24px;
+ height: 24px;
+ cursor: pointer;
+ position: relative;
+ background-color: var(--theme-title);
+ mask-size: cover;
+ -webkit-mask-size: cover;
+}
+
+.theme-change i.light {
+ background-image: url(../img/common/moon.svg);
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+}
+.theme-change i.dark {
+ mask-image: url(../img/common/sun.svg);
+ -webkit-mask-image: url(../img/common/sun.svg);
+ background-color: #ffffff;
+ background-repeat: no-repeat;
+ background-size: 100% 100%;
+}
+#lang {
+ cursor: pointer;
+}
+#lang .lang-menu-link {
+ display: flex;
+ align-items: center;
+ font-size: var(--o-font-size-text);
+ color: var(--e-color-text1);
+ cursor: pointer;
+ height: 100%;
+}
+#lang:hover .lang-menu-list {
+ display: block;
+}
+#lang .lang-menu-list {
+ width: 84px;
+ position: absolute;
+ top: 46px;
+ left: -40px;
+ background: var(--e-color-bg2);
+ padding: 0 var(--o-spacing-h5);
+ cursor: pointer;
+ z-index: 99;
+ border: none;
+ display: none;
+}
+#lang .lang-menu-list .lang-item {
+ display: block;
+ line-height: var(--o-line-height-h3);
+ text-align: center;
+ font-size: var(--o-font-size-text);
+ color: var(--e-color-text1);
+ border-bottom: 1px solid var(--o-color-division);
+ height: 48px;
+ line-height: 48px;
+}
+#lang .lang-menu-list .lang-item:hover {
+ color: var(--e-color-brand1);
+}
+#lang .lang-menu-list .lang-item :last-child {
+ border-bottom: 0 none;
+}
+#lang .lang-menu-list .lang-item .active,
+#lang .lang-menu-list .lang-item :hover {
+ color: var(--e-color-brand1);
+}
+@media screen and (max-width: 1100px) {
+ #lang {
+ display: none;
+ }
+}
+.index-right {
+ display: flex;
+ width: 100%;
+ padding-right: 120px;
+ justify-content: flex-end;
+ background-color: var(--e-color-bg2);
+ box-shadow: var(--e-shadow-l1);
+}
+.h5-nav-menu {
+ display: none;
+ height: 100%;
+}
+@media screen and (max-width: 1100px) {
+ .h5-nav-menu {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ }
+ .pc-nav-menu {
+ display: none !important;
+ }
+}
+.h5_nav_left {
+ width: 24px;
+ height: 24px;
+ cursor: pointer;
+}
+.light .h5_nav_left {
+ background-image: url(../img/common/more-light.svg);
+}
+.dark .h5_nav_left {
+ background-image: url(../img/common/more-dark.svg);
+}
+@media screen and (max-width: 1100px) {
+ #docstreeview > ul li a {
+ margin: 0 16px;
+ margin-right: 0;
+ width: 65%;
+ font-size: var(--o-font-size-text);
+ }
+ #docstreeview > ul > li > ul > li a {
+ padding: 0;
+ }
+ #docstreeview > ul > li:nth-of-type(1) {
+ border: none;
+ }
+ #docstreeview > ul > li > a {
+ border: none;
+ }
+ #menu-box .jstree-node > .jstree-anchor,
+ #menu-box .jstree-node > .jstree-anchor p a {
+ font-size: 14px !important;
+ }
+ #menu-box .jstree-node > .jstree-anchor > p > a {
+ margin-left: 0;
+ }
+ #docstreeview > ul > li > ul {
+ background-color: var(--e-color-bg1);
+ padding: 0;
+ }
+ #docstreeview > ul > li ul li:nth-of-type(1) {
+ padding-top: 16px;
+ }
+ #docstreeview > ul > li ul li {
+ padding-top: 16px;
+ }
+ #docstreeview > ul > li ul li:nth-last-child(1) {
+ padding-bottom: 0;
+ }
+ #docstreeview > ul > li > ul > li:nth-last-child(1) {
+ padding-bottom: 16px;
+ }
+ .jstree-icon {
+ top: 0;
+ right: -10px;
+ }
+ .jstree-children .jstree-icon {
+ top: 6px;
+ right: 16px;
+ }
+ #docstreeview > ul > li > ul > li > i {
+ margin-right: 0;
+ }
+ #docstreeview > ul > li > ul > li i {
+ top: 14px;
+ }
+
+ #h5-menu-top .option {
+ background-color: var(--e-color-bg1);
+ }
+ #h5-menu-top .option a {
+ display: block;
+ margin-left: 16px;
+ padding-top: 16px;
+ }
+
+ #h5-menu-top .option li:nth-last-of-type(1) a {
+ padding-bottom: 16px;
+ }
+ #h5-menu-top .option {
+ height: 0;
+ overflow: scroll;
+ transition: all 0.2s;
+ }
+ #h5-menu-top .option-show {
+ height: 288px;
+ }
+ #h5-menu-top .h5-logo {
+ width: 100%;
+ display: flex;
+ justify-content: space-between;
+ padding: 22px 0 0 16px;
+ }
+ #h5-menu-top .h5-logo .icon-close {
+ width: 24px;
+ height: 24px;
+ margin-right: 16px;
+ }
+ #h5-menu-top .container{
+ padding: 0 16px;
+ }
+ #h5-menu-top .container .select-version .select-version-title {
+ display: flex;
+ width: 100%;
+ justify-content: space-between;
+ color: var(--e-color-text1);
+ font-size: 14px;
+ padding: 12px 0;
+}
+#h5-menu-top .container .select-version .select-version-title::before {
+ display: none;
+}
+#h5-menu-top .container .select-version .version-list {
+ max-height: 0;
+ transition: all 0.5s;
+ overflow: hidden;
+}
+#h5-menu-top .container .select-version .version-list.show {
+ max-height: 200px;
+ overflow: scroll;
+}
+#h5-menu-top .container .select-version .version-list li {
+ padding-bottom: 12px;
+}
+#h5-menu-top .container .select-version .version-list li a {
+ font-size: 12px;
+ color: var(--e-color-text1);
+}
+ .light .icon-close {
+ background-image: url(../img/common/icon-close-light.svg);
+ }
+ .dark .icon-close {
+ background-image: url(../img/common/icon-close-dark.svg);
+ }
+ .icon-servision {
+ margin-right: 17px;
+ width: 24px;
+ height: 24px;
+ background-image: url(../img/common/down.svg);
+ background-size: 16px 16px;
+ position: absolute;
+ right: 0px;
+ }
+ .dark .icon-servision {
+ background-image: url(../img/common/down-dark.svg);
+ }
+ .icon-open {
+ transform: scale(0.8) rotateZ(0deg);
+ }
+ #h5-menu-top .option a {
+ color: var(--e-color-text1);
+ font-size: 14px;
+ }
+ #h5-menu-top .option .active {
+ color: var(--e-color-brand1);
+ }
+ .jstree-closed > .jstree-icon {
+ background-image: url(../img/common/icon-down-dark.svg);
+ }
+ .jstree-open > .jstree-icon {
+ background-image: url(../img/common/icon-down-dark.svg);
+ }
+ .dark .jstree-closed > .jstree-icon {
+ background-image: url(../img/common/icon-down-dark.svg);
+ }
+ .dark .jstree-open > .jstree-icon {
+ background-image: url(../img/common/icon-down-dark.svg);
+ }
+}
+#h5-menu .h5-sersion {
+ text-align: center;
+ color: var(--e-color-text1);
+}
+.jstree-node i {
+ width: 12px;
+ height: 12px;
+}
+.jstree-closed > .jstree-icon {
+ background-image: url(../img/common/icon-down-dark.svg);
+}
+.jstree-open > .jstree-icon {
+ transform: rotateZ(180deg);
+ background-image: url(../img/common/icon-down-dark.svg);
+}
+@media screen and (max-width: 1100px) {
+ .jstree-closed > .jstree-icon {
+ background-image: url(../img/common/down.svg);
+ background-size: 16px 16px;
+ transform: rotateZ(0deg);
+ }
+ .jstree-open > .jstree-icon {
+ background-image: url(../img/common/down.svg);
+ background-size: 16px 16px;
+ transform: rotateZ(0deg);
+ }
+ .jstree-node a {
+ display: flex;
+ }
+}
+.h5-theme-lang {
+ display: none;
+}
+.h5-theme-lang i.light {
+ background-image: url(../img/common/moon.svg);
+}
+.theme-change i.dark {
+ mask-image: url(../img/common/sun.svg);
+ -webkit-mask-image: url(../img/common/sun.svg);
+ background-color: #ffffff;
+}
+@media screen and (max-width: 1100px) {
+ .h5-theme-lang {
+ display: flex;
+ }
+}
+.h5-theme-lang {
+ position: absolute;
+ left: 0;
+ bottom: 2px;
+ width: 100%;
+ padding: 16px 24px 16px 16px;
+
+ background-color: var(--e-color-bg2);
+ justify-content: space-between;
+}
+.h5-theme-lang .lang {
+ display: flex;
+}
+.h5-theme-lang .lang a {
+ color: var(--e-color-text1);
+ font-size: 12px;
+ line-height: 22px;
+ display: flex;
+ align-items: center;
+}
+.h5-theme-lang .lang .active {
+ color: var(--e-color-brand1);
+}
+
+.h5-theme-lang .lang a + a::before {
+ content: "";
+ display: inline-block;
+ height: 12px;
+ width: 1px;
+ margin: 0 8px;
+ background-color: var(--e-color-border1);
+}
+.h5-theme-lang .theme-change i {
+ width: 16px;
+ height: 16px;
+}
+.h5-mask {
+ display: none;
+}
+@media screen and (max-width: 1100px) {
+ .h5-mask {
+ position: fixed;
+ left: 0;
+ top: 0;
+ width: 100vw;
+ height: 100vh;
+ background-color: rgba(45, 47, 51, 0.1);
+ z-index: 1002;
+ }
+ #menu-box,
+ #menu-box .h5-logo,
+ #menu-box .menu-select-box,
+ #docstreeview {
+ background-color: var(--e-color-bg2);
+ }
+}
+.h5-nav-menu .h5-logo {
+ width: 137px;
+ height: 23px;
+ background: url(../img/common/logo-mobile.svg) no-repeat 100%/100%;
+}
+.dark .h5-nav-menu .h5-logo {
+ background: url(../img/common/logo-pc.png) no-repeat 100%/100%;
+}
+.h5-search {
+ width: 100vw;
+ height: 48px;
+ padding: 12px 16px;
+ background: var(--e-color-bg1);
+ position: fixed;
+ left: 0;
+ top: 0;
+ font-size: 14px;
+}
+.h5-search .icon-search {
+ position: absolute;
+ left: 24px;
+ top: 16px;
+ display: inline-block;
+ width: 16px;
+ height: 16px;
+ background: url(../img/search/search.svg) no-repeat 100%/100%;
+}
+.h5-search input {
+ flex-grow: 2;
+ height: 24px;
+ margin-right: 16px;
+ background: var(--e-color-bg-secondary);
+ padding: 3px 32px;
+ font-size: 12px;
+ font-weight: 400;
+ color: var(--e-color-text1);
+ line-height: 14px;
+ border: none;
+}
+.h5-search .cancel-btn {
+ color: var(--e-color-text1);
+ line-height: 24px;
+}
+.dark .h5-search .icon-search {
+ background: url(../img/search/search-dark.svg) no-repeat 100%/100%;
+}
+.h5-search .icon-clear {
+ position: absolute;
+ right: 72px;
+ top: 16px;
+ display: none;
+ width: 16px;
+ height: 16px;
+ background: url(../img/common/icon-close-light.svg) no-repeat 100%/100%;
+}
+.dark .h5-search .icon-clear {
+ background: url(../img/common/icon-close-dark.svg) no-repeat 100%/100%;
+}
+
+#h5-menu-top .h5-logo .logo-img {
+ width: 137px;
+ height: 23px;
+ background: url(../img/common/logo-mobile.svg) no-repeat 100%/100%;
+}
+.dark #h5-menu-top .h5-logo .logo-img {
+ background: url(../img/common/logo-pc.png) no-repeat 100%/100%;
+}
+.top-link .other-link a:nth-of-type(2) {
+ margin-left: 40px;
+}
+.footer {
+ background: var(--e-color-greyblack1);
+}
+
+@media (max-width: 1100px) {
+ .footer.migration {
+ margin-left: 0;
+ margin-top: 0;
+ }
+}
+.footer .app-content {
+ padding-bottom: 0;
+}
+.footer .atom {
+ text-align: center;
+ padding: var(--o-spacing-h3) 0 var(--o-spacing-h4);
+ position: relative;
+ border-bottom: 1px solid rgba(229, 229, 229, 0.12);
+}
+@media (max-width: 1440px) {
+ .footer .atom {
+ padding: var(--o-spacing-h4) 0;
+ }
+}
+@media (max-width: 1100px) {
+ .footer .atom {
+ padding: var(--o-spacing-h4) var(--o-spacing-h5);
+ }
+}
+.footer .atom-text {
+ font-size: var(--o-font-size-h6);
+ font-weight: 400;
+ color: #fff;
+ line-height: var(--o-line-height-h6);
+}
+@media (max-width: 1440px) {
+ .footer .atom-text {
+ font-size: var(--o-font-size-text);
+ line-height: var(--o-line-height-text);
+ }
+}
+.footer .atom-logo {
+ height: 48px;
+ margin-top: 16px;
+}
+@media (max-width: 1100px) {
+ .footer .atom-logo {
+ height: 38px;
+ }
+}
+.footer-content {
+ background: v-bind("footBg.pc") no-repeat bottom center;
+}
+@media (max-width: 767px) {
+ .footer-content {
+ background: v-bind("footBg.mo") no-repeat bottom center;
+ }
+}
+.footer-content .inner {
+ display: flex;
+ align-items: end;
+ justify-content: space-between;
+ padding: 18px 0 32px;
+ position: relative;
+ min-height: 118px;
+}
+@media (max-width: 1400px) {
+ .footer-content .inner {
+ padding: var(--o-spacing-h6) 0;
+ flex-direction: column;
+ justify-content: space-between;
+ align-items: center;
+ }
+}
+.footer-content .app-content {
+ padding: 0 64px;
+}
+@media (max-width: 1100px) {
+ .footer-content .app-content {
+ padding: 0 var(--o-spacing-h5);
+ }
+}
+.footer-logo {
+ flex: 1;
+}
+.footer-logo img {
+ width: 130px;
+ height: 46px;
+}
+.footer-logo .show-pc {
+ display: block;
+}
+.footer-logo .show-mo {
+ display: none;
+}
+@media (max-width: 1400px) {
+ .footer-logo {
+ text-align: center;
+ margin: 16px 0;
+ }
+ .footer-logo .show-pc {
+ display: none;
+ }
+ .footer-logo .show-mo {
+ width: 86px;
+ display: inline-block;
+ height: 20px;
+ }
+}
+.footer .copyright {
+ display: flex;
+ align-items: center;
+ font-size: var(--o-font-size-text);
+ color: rgba(255, 255, 255, 0.6);
+ margin-top: var(--o-spacing-h9);
+}
+.footer .approval-wrap {
+ display: flex;
+ align-items: center;
+}
+.footer .approval1 {
+ margin-left: 8px;
+ color: rgba(255, 255, 255, 0.6);
+}
+.footer .approval1:hover {
+ color: rgba(255, 255, 255, 1);
+}
+.footer .police-img {
+ width: 16px;
+ height: 16px;
+ margin: 0 8px;
+}
+@media (max-width: 1700px) {
+ .footer .copyright {
+ flex-direction: column;
+ }
+ .footer .approval-wrap {
+ margin-top: 4px;
+ }
+}
+@media (max-width: 1400px) {
+ .footer .copyright {
+ font-size: var(--o-font-size-tip);
+ line-height: var(--o-line-height-tip);
+ margin-top: var(--o-spacing-h10);
+ }
+}
+.footer .license {
+ font-size: var(--o-font-size-text);
+ color: #fff;
+ margin-top: var(--o-spacing-h9);
+}
+@media (max-width: 1400px) {
+ .footer .license {
+ margin-top: var(--o-spacing-h6);
+ }
+}
+@media (max-width: 800px) {
+ .footer .footer-option-item {
+ font-size: 10px;
+ }
+ .footer .license {
+ font-size: 10px;
+ }
+ .footer .copyright {
+ font-size: 10px;
+ }
+}
+.footer .license span {
+ color: var(--e-color-text4);
+}
+.footer .footer-option {
+ text-align: center;
+}
+.footer .footer-option .link {
+ color: #fff;
+ font-size: var(--o-font-size-text);
+ display: inline-block;
+ padding: 0 var(--o-spacing-h6);
+ border-right: 1px solid #fff;
+}
+.footer .footer-option .link:last-child {
+ border-right: 0;
+}
+@media (max-width: 1400px) {
+ .footer .footer-option .link {
+ font-size: var(--o-font-size-tip);
+ line-height: var(--o-line-height-tip);
+ padding: 0 var(--o-spacing-h9);
+ }
+}
+@media (max-width: 1400px) {
+ .footer .footer-option {
+ order: -1;
+ }
+}
+.footer .footer-right {
+ flex: 1;
+}
+.footer .footer-right .code-box {
+ display: flex;
+ justify-content: right;
+ gap: 16px;
+ margin-bottom: 16px;
+}
+[lang="zh"] .footer .footer-right .isen{
+ display: none;
+}
+[lang="en"] .footer .footer-right .code-box,[lang="en"] .footer .footer-right .iszh{
+ display: none;
+}
+[lang="en"] .footer .footer-right .isen{
+ display: flex;
+}
+
+.footer .footer-right .code-box .code-pop {
+ cursor: pointer;
+ position: relative;
+ height: 20px;
+ display: block;
+}
+.footer .footer-right .code-box .code-pop > img {
+ height: 100%;
+ object-fit: cover;
+}
+.footer .footer-right .code-box .code-pop .code-layer {
+ position: absolute;
+ top: -105px;
+ left: -32px;
+ z-index: 99;
+ display: none;
+ background: #fff;
+ padding: 6px;
+}
+.footer .footer-right .code-box .code-pop .code-layer img {
+ width: 78px;
+ height: 78px;
+}
+.footer .footer-right .code-box .code-pop .code-layer .txt {
+ font-size: 12px;
+ color: #fff;
+ display: none;
+}
+.footer .footer-right .code-box .code-pop .code-layer::after {
+ border: 10px solid transparent;
+ content: "";
+ border-top-color: #fff;
+ position: absolute;
+ bottom: -20px;
+ left: 50%;
+ transform: translateX(-50%);
+ display: block;
+}
+@media (max-width: 800px) {
+ .footer .footer-right .code-box .code-pop .code-layer {
+ display: block;
+ position: initial;
+ background: none;
+ padding: 0;
+ text-align: center;
+ }
+ .footer .footer-right .code-box .code-pop .code-layer::after {
+ display: none !important;
+ }
+ .footer .footer-right .code-box .code-pop .code-layer .txt {
+ display: block;
+ }
+}
+.footer .footer-right .code-box .code-pop:hover .code-layer {
+ display: block;
+}
+@media (max-width: 800px) {
+ .footer .footer-right .code-box .code-pop {
+ height: auto;
+ }
+ .footer .footer-right .code-box .code-pop > img {
+ display: none;
+ }
+}
+@media (max-width: 1100px) {
+ .footer .footer-right .code-box {
+ justify-content: center;
+ margin-top: 24px;
+ }
+}
+.footer .footer-right .footer-links {
+ display: flex;
+ justify-content: right;
+ align-items: center;
+ gap: 16px;
+}
+.footer .footer-right .footer-links .links-logo {
+ height: 16px;
+}
+.footer .footer-right .footer-links .links-logo img {
+ height: 100%;
+ object-fit: cover;
+}
+@media (max-width: 1100px) {
+ .footer .footer-right .footer-links {
+ justify-content: center;
+ }
+}
+@media (max-width: 800px) {
+ .footer .footer-right .footer-links {
+ display: flex;
+ text-align: center;
+ }
+ .footer .footer-right .footer-links .img {
+ height: 16px;
+ }
+}
+.footer .footer-right .footer-links.iszh {
+ gap: 10px;
+}
+.footer .footer-right .footer-links.iszh .links-logo {
+ height: 14px;
+}
+.footer .footer-right .footer-links.iszh .links-logo:first-child {
+ height: 18px;
+}
+@media (max-width: 800px) {
+ .footer .footer-right .footer-links.iszh {
+ display: grid;
+ grid-template-columns: repeat(3, 1fr);
+ text-align: center;
+ margin-top: 40px;
+ }
+ .footer .footer-right .footer-links.iszh .img {
+ height: 16px;
+ }
+}
+.footer .footer-right p {
+ color: #fff;
+ font-size: var(--o-font-size-tip);
+ margin-top: var(--o-spacing-h8);
+}
+.footer .email {
+ color: #fff;
+ font-size: var(--o-font-size-text);
+}
+@media (max-width: 1400px) {
+ .footer .email {
+ font-size: var(--o-font-size-tip);
+ }
+}
+#menu-box #version-select {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ width: 220px;
+ color: #fff;
+ font-size: var(--o-font-size-h8);
+ margin-top: 40px;
+ margin-bottom: 32px;
+ margin-left: 40px;
+ padding: 0 8px;
+}
+@media screen and (max-width: 1100px) {
+ #menu-box #version-select {
+ display: none;
+ }
+}
+#menu-box #version-select > span {
+ color: #feb32a;
+}
+#menu-box #version-select .version-tip {
+ position: absolute;
+ width: auto;
+ white-space: nowrap;
+ padding: 0 8px;
+ bottom: 38px;
+ left: 178px;
+ font-size: 14px;
+ line-height: 32px;
+ background-color: var(--e-color-bg2);
+ border: 1px solid var(--e-color-kleinblue5);
+ color: var(--e-color-text1);
+ z-index: 99;
+ transition: transform 0.2s;
+ transform: scale(0);
+}
+#menu-box #version-select .version-tip.ru {
+ display: none;
+}
+#menu-box #version-select .version-tip::after {
+ content: "";
+ display: block;
+ border-left: 8px solid var(--e-color-kleinblue5);
+ border-top: 8px solid var(--e-color-bg2);
+ border-right: 8px solid var(--e-color-kleinblue5);
+ border-bottom: 8px solid var(--e-color-kleinblue5);
+ position: absolute;
+ left: 10px;
+ top: 32px;
+}
+#menu-box #version-select:hover .version-tip {
+ transform: scale(1);
+}
+.book-toc {
+ position: fixed;
+ right: 4vw;
+ top: 100px;
+ width: 200px;
+ height: calc(100vh - 426px);
+ overflow-y: scroll;
+}
+.book-toc::before {
+ display: block;
+ content: "";
+ position: absolute;
+ left: 0;
+ top: 0;
+ width: 1px;
+ height: 100%;
+ background-color: var(--e-color-division1);
+}
+
+.book-toc::-webkit-scrollbar {
+ width: 6px;
+}
+.book-toc::-webkit-scrollbar-thumb{
+ border-radius: 4px;
+ background-color: var(--e-color-bg4);
+}
+.book-toc #toc-list li a{
+ display: block;
+ position: relative;
+ line-height: 40px;
+ padding-left: 16px;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ color: var(--e-color-text1);
+}
+.book-toc #toc-list li a:hover{
+ color: var(--e-color-brand1);
+}
+.book-toc #toc-list .active{
+ color: var(--e-color-brand1);
+}
+.book-toc #toc-list .active::before{
+ content: "";
+ display: inline-block;
+ width: 1px;
+ height: 100%;
+ background-color: var(--e-color-brand1);
+ position: absolute;
+ left: 0px;
+ top:0;
+}
+@media screen and (max-width:1480px) {
+ .book-toc{
+ display: none;
+ }
+}
+
+.footer {
+ margin-top: 0;
+}
+.page-content {
+ width: 100%;
+ max-width: 1174px;
+}
+.prev-next .version {
+ display: none;
+}
+@media (max-width: 1100px) {
+ .prev-next .version {
+ display: block;
+ }
+}
+.h5-prev,
+.h5-next,
+.h5-prev a,
+.h5-next a,
+.h5-prev a i,
+.h5-next a i {
+ display: flex;
+ align-items: center;
+}
+#h5-menu ul .disabled{
+ display: none;
+}
+#h5-menu-box {
+ position: fixed;
+ left: 0;
+ top: 0;
+ z-index: 9999;
+ background-color: var(--e-color-bg2);
+ height: 100vh;
+ width: 65vw;
+ transition: all 0.5s;
+ display: none;
+ transform: translateX(-100%);
+}
+
+.h5-docs-a {
+ display: none;
+}
+@media screen and (max-width: 1100px) {
+ .h5-docs-a {
+ display: flex;
+ align-items: center;
+ }
+}
+.dark img {
+ filter: brightness(0.8) grayscale(0.2) contrast(1.2);
+}
+#menu-box .jstree-node[aria-level="3"],
+#menu-box .jstree-node[aria-level="4"],
+#menu-box .jstree-node[aria-level="5"],
+#menu-box .jstree-node[aria-level="6"] {
+ padding-left: 16px;
+}
+.feedback .bug-icon-dark {
+ display: none;
+}
+.dark .feedback .bug-icon {
+ display: none;
+}
+.dark .feedback .bug-icon-dark {
+ display: inline-block;
+}
diff --git a/static/css/theme.css b/static/css/theme.css
new file mode 100644
index 0000000..585a092
--- /dev/null
+++ b/static/css/theme.css
@@ -0,0 +1,290 @@
+/* // 颜色 */
+:root {
+ /**
+ * 基础色盘
+ */
+
+ /* // 克莱因蓝 */
+ --e-color-kleinblue1: #000412;
+ --e-color-kleinblue2: #000827;
+ --e-color-kleinblue3: #0c2360;
+ --e-color-kleinblue4: #00288d;
+ --e-color-kleinblue5: #002fa7;
+ --e-color-kleinblue6: #0d3cb4;
+ --e-color-kleinblue7: #2555cd;
+ --e-color-kleinblue8: #406fe7;
+ --e-color-kleinblue9: #5988ff;
+ --e-color-kleinblue10: #b2c0e4;
+
+ /* // 中性色 */
+ --e-color-neutral1: #121212;
+ --e-color-neutral2: #151515;
+ --e-color-neutral3: #2d2d2d;
+ --e-color-neutral4: #3f3f3f;
+ --e-color-neutral5: #555555;
+ --e-color-neutral6: #707070;
+ --e-color-neutral7: #848484;
+ --e-color-neutral8: #999999;
+ --e-color-neutral9: #b2b2b2;
+ --e-color-neutral10: #cccccc;
+ --e-color-neutral11: #e5e5e5;
+
+ /* // 红色 */
+ --e-color-red1: #850d09;
+ --e-color-red2: #b4110c;
+ --e-color-red3: #e4160f;
+ --e-color-red4: #f13b35;
+ --e-color-red5: #f3524d;
+ --e-color-red6: #ff5f5a;
+ --e-color-red7: #ff7873;
+ --e-color-red8: #ff928d;
+ --e-color-red9: #ffaba6;
+ --e-color-red10: #ffd2af;
+
+ /* // 黄色 */
+ --e-color-yellow1: #754c01;
+ --e-color-yellow2: #a86d01;
+ --e-color-yellow3: #dabe01;
+ --e-color-yellow4: #feaa11;
+ --e-color-yellow5: #feb32a;
+ --e-color-yellow6: #ffc037;
+ --e-color-yellow7: #ffd950;
+ --e-color-yellow8: #fff36a;
+ --e-color-yellow9: #ffff83;
+ --e-color-yellow10: #ffe1aa;
+
+ /* // 绿色 */
+ --e-color-green1: #1f370f;
+ --e-color-green2: #355f1a;
+ --e-color-green3: #4b8725;
+ --e-color-green4: #62af30;
+ --e-color-green5: #6dc335;
+ --e-color-green6: #7ad042;
+ --e-color-green7: #93e95b;
+ --e-color-green8: #adff75;
+ --e-color-green9: #c6ff8e;
+ --e-color-green10: #c5e7ae;
+
+ /* // 橙色 */
+ --e-color-orange1: #9b370e;
+ --e-color-orange2: #b54f00;
+ --e-color-orange3: #e86600;
+ --e-color-orange4: #ff801c;
+ --e-color-orange5: #ff8e36;
+ --e-color-orange6: #ff9b43;
+ --e-color-orange7: #ffb45c;
+ --e-color-orange8: #ffce76;
+ --e-color-orange9: #ffcf8f;
+ --e-color-orange10: #ffd2af;
+
+ /* // 灰蓝色 */
+ --e-color-greyblue1: #e5e8f0;
+ --e-color-greyblue2: #f7f8fa;
+ --e-color-greyblue3: #f5f6f8;
+
+ /* // 灰黑色 */
+ --e-color-greyblack1: #1e1e1e;
+ --e-color-greyblack2: #242424;
+ --e-color-greyblack3: #2e2e2e;
+ --e-color-greyblack4: #383838;
+
+ /* // 白色 */
+ --e-color-white: #ffffff;
+
+ /* // 黑色 */
+ --e-color-black: #000000;
+
+ /* // 透明 */
+ --e-color-transparent: transparent;
+
+ /**
+ * 状态颜色 && 功能颜色
+ */
+
+ /* // 成功色 */
+ --e-color-success1: var(--e-color-green5);
+ --e-color-success2: var(--e-color-green7);
+ --e-color-success3: var(--e-color-green10);
+
+ /* // 告警色 */
+ --e-color-warning1: var(--e-color-orange5);
+ --e-color-warning2: var(--e-color-orange7);
+ --e-color-warning3: var(--e-color-orange10);
+
+ /* // 错误色 */
+ --e-color-error1: var(--e-color-red5);
+ --e-color-error2: var(--e-color-red7);
+ --e-color-error3: var(--e-color-red10);
+
+ /* // 品牌色 */
+ --e-color-brand1: var(--e-color-kleinblue5);
+ --e-color-brand2: var(--e-color-kleinblue8);
+ --e-color-brand3: var(--e-color-kleinblue4);
+ --e-color-brand4: var(--e-color-kleinblue6);
+ --e-color-brand5: var(--e-color-kleinblue10);
+ --e-color-brand6: var(--e-color-kleinblue10);
+
+ /* // 文字颜色 */
+ --e-color-text1: var(--e-color-black);
+ --e-color-text2: var(--e-color-white);
+ --e-color-text3: var(--e-color-neutral4);
+ --e-color-text4: var(--e-color-neutral6);
+ --e-color-text5: var(--e-color-neutral11);
+
+ /* // 背景色 */
+ --e-color-bg1: var(--e-color-greyblue3);
+ --e-color-bg2: var(--e-color-white);
+ --e-color-bg3: var(--e-color-greyblue2);
+ --e-color-bg4: var(--e-color-greyblue1);
+ --e-color-bg5: var(--e-color-white);
+ --e-color-bg6: rgba(0, 0, 0, 0.5);
+ --e-color-bg-secondary: var(--e-color-neutral11);
+
+ /* // 链接色 */
+ --e-color-link1: var(--e-color-kleinblue5);
+ --e-color-link2: var(--e-color-kleinblue8);
+ --e-color-link3: var(--e-color-kleinblue4);
+ --e-color-link4: var(--e-color-kleinblue6);
+ --e-color-link5: var(--e-color-kleinblue10);
+ --e-color-link6: var(--e-color-kleinblue10);
+
+ /* // 边框颜色 */
+ --e-color-border1: var(--e-color-neutral6);
+ --e-color-border2: var(--e-color-neutral11);
+ --e-color-border3: var(--e-color-kleinblue5);
+
+ /* // 分割线颜色 */
+ --e-color-division1: var(--e-color-neutral11);
+
+ /* // 填充色,用于阴影容器背景 */
+ --e-color-fill1: var(--e-color-white);
+ --e-color-fill2: var(--e-color-white);
+ --e-color-fill2_hover: var(--e-color-white);
+ --e-color-fill3: var(--e-color-white);
+ --e-color-fill4: var(--e-color-white);
+ --e-color-fill5: var(--e-color-white);
+
+ --e-shadow-l1: 0 1px 5px rgba(45, 47, 51, 0.1);
+ --e-shadow-l2: 0 1px 5px rgba(45, 47, 51, 0.1);
+ --e-shadow-l2_hover: 0 6px 18px rgba(0, 47, 167, 0.14);
+ --e-shadow-l3: 0 6px 18px rgba(45, 47, 51, 0.14);
+ --e-shadow-l4: 0 10px 32px rgba(45, 47, 51, 0.18);
+ --e-shadow-l5: 0 12px 42px rgba(45, 47, 51, 0.24);
+ --e-icon-bg:var(--e-color-black);
+
+ /* 字体font-size */
+ --o-font-size-h1: 64px;
+ --o-font-size-h2: 54px;
+ --o-font-size-h3: 36px;
+ --o-font-size-h4: 28px;
+ --o-font-size-h5: 24px;
+ --o-font-size-h6: 20px;
+ --o-font-size-h7: 18px;
+ --o-font-size-h8: 16px;
+ --o-font-size-text: 14px;
+ --o-font-size-tip: 12px;
+
+ /* 字体line-height */
+ --o-line-height-h1: 84px;
+ --o-line-height-h2: 76px;
+ --o-line-height-h3: 48px;
+ --o-line-height-h4: 36px;
+ --o-line-height-h5: 32px;
+ --o-line-height-h6: 28px;
+ --o-line-height-h7: 26px;
+ --o-line-height-h8: 24px;
+ --o-line-height-text: 22px;
+ --o-line-height-tip: 18px;
+
+ /* 间距 */
+ --o-spacing-h1: 64px;
+ --o-spacing-h2: 40px;
+ --o-spacing-h3: 32px;
+ --o-spacing-h4: 24px;
+ --o-spacing-h5: 16px;
+ --o-spacing-h6: 12px;
+ --o-spacing-h7: 10px;
+ --o-spacing-h8: 8px;
+ --o-spacing-h9: 6px;
+ --o-spacing-h10: 4px;
+
+ /* 分页器颜色 */
+ --o-pagination-bg-color:var(--e-color-text5);
+}
+.dark {
+ /* // 成功色 */
+ --e-color-success1: var(--e-color-yellowgreen5);
+ --e-color-success2: var(--e-color-yellowgreen7);
+ --e-color-success3: var(--e-color-yellowgreen2);
+
+ /* // 告警色 */
+ --e-color-warning1: var(--e-color-orange5);
+ --e-color-warning2: var(--e-color-orange7);
+ --e-color-warning3: var(--e-color-orange1);
+
+ /* // 错误色 */
+ --e-color-error1: var(--e-color-red5);
+ --e-color-error2: var(--e-color-red7);
+ --e-color-error3: var(--e-color-red1);
+
+ /* // 品牌色 */
+ --e-color-brand1: var(--e-color-kleinblue8);
+ --e-color-brand2: var(--e-color-kleinblue9);
+ --e-color-brand3: var(--e-color-kleinblue5);
+ --e-color-brand4: var(--e-color-kleinblue7);
+ --e-color-brand5: var(--e-color-kleinblue3);
+ --e-color-brand6: var(--e-color-kleinblue3);
+
+ /* // 文字颜色 */
+ --e-color-text1: var(--e-color-white);
+ --e-color-text2: var(--e-color-black);
+ --e-color-text3: var(--e-color-neutral11);
+ --e-color-text4: var(--e-color-neutral9);
+ --e-color-text5: var(--e-color-neutral5);
+
+ /* // 背景色 */
+ --e-color-bg1: var(--e-color-neutral1);
+ --e-color-bg2: var(--e-color-greyblack1);
+ --e-color-bg3: var(--e-color-greyblack2);
+ --e-color-bg4: var(--e-color-greyblack3);
+ --e-color-bg5: var(--e-color-greyblack3);
+ --e-color-bg6: rgba(0, 0, 0, 0.5);
+ --e-color-bg-secondary: var(--e-color-neutral5);
+
+ /* // 链接色 */
+ --e-color-link1: var(--e-color-kleinblue8);
+ --e-color-link2: var(--e-color-kleinblue9);
+ --e-color-link3: var(--e-color-kleinblue5);
+ --e-color-link4: var(--e-color-kleinblue7);
+ --e-color-link5: var(--e-color-kleinblue3);
+ --e-color-link6: var(--e-color-kleinblue3);
+
+ /* // 边框颜色 */
+ --e-color-border1: var(--e-color-neutral9);
+
+ /* // 分割线颜色 */
+ --e-color-division1: var(--e-color-neutral3);
+
+ /* // 填充色,用于阴影容器背景 */
+ --e-color-fill1: var(--e-color-greyblack1);
+ --e-color-fill2: var(--e-color-greyblack1);
+ --e-color-fill2_hover: var(--e-color-greyblack2);
+ --e-color-fill3: var(--e-color-greyblack2);
+ --e-color-fill4: var(--e-color-greyblack3);
+ --e-color-fill5: var(--e-color-greyblack4);
+
+ /**
+ * 阴影
+ */
+ --e-shadow-l1: 0 1px 7px rgba(0, 0, 0, 0.3);
+ --e-shadow-l2: 0 1px 7px rgba(0, 0, 0, 0.3);
+ --e-shadow-l2_hover: 0 6px 18px rgba(0, 0, 0, 0.42);
+ --e-shadow-l3: 0 6px 18px rgba(0, 0, 0, 0.42);
+ --e-shadow-l4: 0 10px 32px rgba(0, 0, 0, 0.54);
+ --e-shadow-l5: 0 12px 42px rgba(0, 0, 0, 0.72);
+
+ --e-icon-bg:var(--e-color-white);
+
+ /* 分页器颜色 */
+ --o-pagination-bg-color:var(--e-color-text5);
+}
diff --git a/static/error.html b/static/error.html
new file mode 100644
index 0000000..d3ad954
--- /dev/null
+++ b/static/error.html
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+ openEuler
+
+
+
+
+
+
+
Error
+
+
+
+
\ No newline at end of file
diff --git a/static/favicon.ico b/static/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..ba6134a0ab94b8dd83d098e059d3c4dd93dd1041
GIT binary patch
literal 4286
zcmcIoeNa?Y6u*?E`A1_PU^z@VHB+QS2xZjNWTrWjH8#^^F-d6+`9a@JYB>-NQ&W*e
zpEi9=8M3>Oq7;HMBPtAiM0Z^Sit6#V%iO(Ju4bci(&Gp5Hm=
zo_pW9C>17uQ>QBaD#s+HB9u~50(qon3HV$$c{i43k5#JRex>X;nTV8rs-VRW_W4Z9
zXjvI^w#`06sSQ_}oYXy8kRosjJOcQ^KA-U&Wwaf7tmp`}(O=v20Nx1Exk5k=ufX69
zzVaPqD9bV04z0^VJRBmE6CJ=CE;^P9_6hn0!FVeiUE;Pto>
z+}ie+W9ytLq1rHF%=P>VCwYmS=?Xu+xgwZa-}k%wuxr^|Ef-Quhnx43wv%*nu
zZzK+Uv
ziyw}`nT~dohaIoSgXY3)RIW)v&Dvz_U-vS0r`#twFg_qwWA@v~JHP*p8?(f})20ol
z|NKMp=~`^O!9O?t{NHlV6>z@&JQ{Pda6tBf?T^O6F1c#>Gp4K9z}(*R%zQN3KE#Ro
zYIr2yI1hO#$SNK1=ph_={CJS+Z$?S&nd>P<@5AD$o;-5Z86;4odIz=V*gmL
z>C)uczV-ZR8Y)&NBLD6P%iKmBm_x>%v|D(&&-eG8LDw;t?2j&Vx*E~4rx45&=51^B
zPMPn=eR~r3v;i2xZ|mPciSwr0FUFy--$Cc^O?qzI4>_^($-DITpL-$S>-|t<4f{v9
zlAATaj{YOerpV?P`IYSdrk
z()E|jE%^-?^=G9#vs?#?>}av3F6taqf3gRu0X!BRoOdDtm&z8nHaA1D0Z=Czg^C!nr$JsW<0|>AqQutB@L!Q4WJJkFRWe3v3
d;8p7NUZt*fDK$Qw|1S8S8g;vbgIwe!_rJktA>;r6
literal 0
HcmV?d00001
diff --git a/static/fonts/Roboto-BoldCondensed.ttf b/static/fonts/Roboto-BoldCondensed.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..d7ea8833ba369ec975846497e5fa05741295eacf
GIT binary patch
literal 161308
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