diff --git a/app/.vitepress/config.ts b/app/.vitepress/config.ts
index c594d06d9844ce4a65c3faba76840813f0745623..15183f15915a69787ba5042b7312f937943ff710 100644
--- a/app/.vitepress/config.ts
+++ b/app/.vitepress/config.ts
@@ -58,6 +58,28 @@ export default {
dark: 'dark-plus',
},
config: (md: Markdown) => {
+ // 处理须知/说明/警告/注意
+ md.core.ruler.before('normalize', 'replace-old-alerts', (state) => {
+ const src = state.src
+ .replace(/> *!\[\]\(.*?\/icon-note\.gif\) *\**([^\*\n\r]+)\**/g, (_, $1) => {
+ return `> [!NOTE]${$1}`;
+ })
+ .replace(/> *!\[\]\(.*?\/icon-notice\.gif\) *\**([^\*\n\r]+)\**/g, (_, $1) => {
+ return `> [!TIP]${$1}`;
+ })
+ .replace(/> *!\[\]\(.*?\/icon-warning\.gif\) *\**([^\*\n\r]+)\**/g, (_, $1) => {
+ return `> [!WARNING]${$1}`;
+ })
+ .replace(/> *!\[\]\(.*?\/icon-caution\.gif\) *\**([^\*\n\r]+)\**/g, (_, $1) => {
+ return `> [!CAUTION]${$1}`;
+ });
+
+ state.src = src;
+ if (state.env.content) {
+ state.env.content = src;
+ }
+ });
+
md.renderer.rules.code_inline = (tokens, idx) => {
const content = tokens[idx].content;
// 转义
diff --git a/app/.vitepress/plugins/replace-url-plugin.ts b/app/.vitepress/plugins/replace-url-plugin.ts
new file mode 100644
index 0000000000000000000000000000000000000000..f753cf2f8d6af4b2e3bd74ef4b3fca91f1cf5bfc
--- /dev/null
+++ b/app/.vitepress/plugins/replace-url-plugin.ts
@@ -0,0 +1,51 @@
+import { Plugin } from 'vitepress';
+
+const OPENEULER_ORG_URL = 'https://www.openeuler.org';
+const OPENEULER_ATOM_URL = 'https://www.openeuler.openatom.cn';
+
+export default function replaceUrlPlugin(): Plugin {
+ let envVar: string;
+ let sourceUrl: string | null;
+
+ return {
+ name: 'replace-url',
+ enforce: 'post',
+
+ configResolved(resolvedConfig) {
+ envVar = resolvedConfig.env.VITE_MAIN_DOMAIN_URL;
+
+ if (!envVar) {
+ console.error(
+ '[replaceUrlPlugin] 未设置 VITE_MAIN_DOMAIN_URL 环境变量'
+ );
+ return;
+ }
+
+ if (envVar === OPENEULER_ATOM_URL) {
+ sourceUrl = OPENEULER_ORG_URL;
+ } else if (envVar === OPENEULER_ORG_URL) {
+ sourceUrl = OPENEULER_ATOM_URL;
+ } else {
+ console.warn(
+ `[replaceUrlPlugin] 未知的 VITE_MAIN_DOMAIN_URL 值: ${envVar},不执行替换`
+ );
+ sourceUrl = null;
+ }
+ },
+
+ transform(code, id) {
+ const SUPPORTED_FILE_TYPES = /\.(html|md|vue|js|ts|jsx|tsx)$/;
+
+ if (
+ sourceUrl &&
+ SUPPORTED_FILE_TYPES.test(id) &&
+ !id.includes('node_modules')
+ ) {
+ const regex = new RegExp(sourceUrl, 'g');
+ return code.replace(regex, envVar);
+ }
+
+ return code;
+ },
+ };
+}
diff --git a/app/.vitepress/src/assets/style/theme/dropdown.scss b/app/.vitepress/src/assets/style/theme/dropdown.scss
index 067a83b162e997ea13741446cbedde87576b395c..ac9b81e9b01231c14cedd13fd224745034844514 100644
--- a/app/.vitepress/src/assets/style/theme/dropdown.scss
+++ b/app/.vitepress/src/assets/style/theme/dropdown.scss
@@ -1,3 +1,7 @@
.o-dropdown-list {
--dropdown-list-radius: 4px;
}
+
+.o-dropdown-item {
+ --dropdown-item-color-hover: var(--dropdown-item-color);
+}
\ No newline at end of file
diff --git a/app/.vitepress/src/assets/style/theme/icon.scss b/app/.vitepress/src/assets/style/theme/icon.scss
new file mode 100644
index 0000000000000000000000000000000000000000..780b2b37759c33798e18488c4209a27279285769
--- /dev/null
+++ b/app/.vitepress/src/assets/style/theme/icon.scss
@@ -0,0 +1,7 @@
+.o-icon {
+ svg {
+ width: 1em;
+ height: 1em;
+ }
+}
+
diff --git a/app/.vitepress/src/assets/style/theme/index.scss b/app/.vitepress/src/assets/style/theme/index.scss
index 424bea698da2c6e531e0be3c5cd157af94a7e4fa..8c939e640f3c471a5a90bb4308867ab22a563623 100644
--- a/app/.vitepress/src/assets/style/theme/index.scss
+++ b/app/.vitepress/src/assets/style/theme/index.scss
@@ -15,3 +15,4 @@
@use './textarea.scss' as *;
@use './link.scss' as *;
@use './breadcrumb.scss' as *;
+@use './icon.scss' as *;
diff --git a/app/.vitepress/src/assets/svg-icons/icon-header-moon.svg b/app/.vitepress/src/assets/svg-icons/icon-header-moon.svg
index 0ea8cc4417ed9603faa682be7ed03209e61d0e56..bc76468e8d378e03acb4167622e30fec1bc6e268 100644
--- a/app/.vitepress/src/assets/svg-icons/icon-header-moon.svg
+++ b/app/.vitepress/src/assets/svg-icons/icon-header-moon.svg
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/app/.vitepress/src/assets/svg-icons/icon-header-person.svg b/app/.vitepress/src/assets/svg-icons/icon-header-person.svg
index ea47e9ca566d23715ca537cb32ba7586f7914c38..e5e7cd0f16f85df584b3edeaa48f074b42624547 100644
--- a/app/.vitepress/src/assets/svg-icons/icon-header-person.svg
+++ b/app/.vitepress/src/assets/svg-icons/icon-header-person.svg
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/app/.vitepress/src/assets/svg-icons/icon-locale.svg b/app/.vitepress/src/assets/svg-icons/icon-locale.svg
new file mode 100644
index 0000000000000000000000000000000000000000..6ff893f84985e010d6ef69abc29442c6c536ff87
--- /dev/null
+++ b/app/.vitepress/src/assets/svg-icons/icon-locale.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/app/.vitepress/src/assets/svg-icons/icon-sun-outline.svg b/app/.vitepress/src/assets/svg-icons/icon-sun-outline.svg
index 5bfc68965118ffe7ce1238cca5bf833240cea82d..d6be0b8ae7ffe62e71d1f3c794ddf88ce97392eb 100644
--- a/app/.vitepress/src/assets/svg-icons/icon-sun-outline.svg
+++ b/app/.vitepress/src/assets/svg-icons/icon-sun-outline.svg
@@ -1,3 +1,3 @@
-
+
\ No newline at end of file
diff --git a/app/.vitepress/src/components/FloatingButton.vue b/app/.vitepress/src/components/FloatingButton.vue
index bd9942d4b126eebc4349d58707cffe6b1ad8a158..e27d68e3b297af2cdcd6e2823e1594ecf66b42b2 100644
--- a/app/.vitepress/src/components/FloatingButton.vue
+++ b/app/.vitepress/src/components/FloatingButton.vue
@@ -72,7 +72,7 @@ onMounted(() => {
-
@@ -93,7 +93,7 @@ onMounted(() => {
:visible="dialogVisible"
:phone-half-full="true"
:style="{ '--dlg-head-padding': '16px 24px 0', '--dlg-body-padding': '24px 24px 16px', '--dlg-padding-body-top': '12px', '--dlg-radius': '4px 4px 0 0' }"
- class="feedback-mb-dialog"
+ :scroller="false"
@change="change"
>
@@ -200,4 +200,23 @@ onMounted(() => {
}
}
}
+
+.container {
+ display: flex;
+ flex-direction: column;
+ padding: 12px;
+ background-color: var(--o-color-fill2);
+ border-radius: var(--o-radius-xs);
+ box-shadow: var(--o-shadow-2);
+}
+
+.back-top {
+ margin-top: 12px;
+ color: var(--o-color-info1);
+ cursor: pointer;
+}
+
+.icon-top {
+ font-size: var(--o-font_size-h2);
+}
diff --git a/app/.vitepress/src/components/FloatingButtonDocs.vue b/app/.vitepress/src/components/FloatingButtonDocs.vue
index 61f6f1fed70f8be7f493ae282e45bbf99a4c12a9..0d835c01cf46e1c39ce35bf4d13b05afbd5b4c3b 100644
--- a/app/.vitepress/src/components/FloatingButtonDocs.vue
+++ b/app/.vitepress/src/components/FloatingButtonDocs.vue
@@ -443,6 +443,9 @@ const submitArticleFeedback = () => {
}
diff --git a/app/.vitepress/src/components/ImgZoomDrag.vue b/app/.vitepress/src/components/ImgZoomDrag.vue
index 2b1dadaefc246630cf5bd6e87ea9bcb61b8b342a..d7392e962b9323a7ea77ff4c51ab2962b9c51058 100644
--- a/app/.vitepress/src/components/ImgZoomDrag.vue
+++ b/app/.vitepress/src/components/ImgZoomDrag.vue
@@ -1,5 +1,5 @@
-
-
{{ getLang(lang) }}
-
+
+
+
+ {{ getLang(lang, true) }}
+
-
+
{{ getLang(item.id) }}
@@ -103,14 +107,6 @@ const getLang = (lang: string) => {
diff --git a/app/.vitepress/src/components/header/HeaderNav.vue b/app/.vitepress/src/components/header/HeaderNav.vue
index f70173a5b3de0b09d6e91a9cd7e8cb3e8620b76a..cfb4ab41e08842e2754dd869dbe8f1fac6954ead 100644
--- a/app/.vitepress/src/components/header/HeaderNav.vue
+++ b/app/.vitepress/src/components/header/HeaderNav.vue
@@ -442,8 +442,7 @@ const reportNavClick = (path: string[]) => {
}
.icon {
- height: 16px;
- width: 16px;
+ font-size: 16px;
padding-left: 6px;
}
}
diff --git a/app/.vitepress/src/components/header/HeaderNavMoblie.vue b/app/.vitepress/src/components/header/HeaderNavMoblie.vue
index 8dced3fc8dc5b342e99ef30c7b636c37d5521d75..604ae8560f3001e965a90505cfd9e7786870e46c 100644
--- a/app/.vitepress/src/components/header/HeaderNavMoblie.vue
+++ b/app/.vitepress/src/components/header/HeaderNavMoblie.vue
@@ -319,8 +319,7 @@ const linkClick = () => {
margin: var(--o-gap-4) 0;
.icon {
- height: 16px;
- width: 16px;
+ font-size: 16px;
margin-left: var(--o-gap-2);
}
}
@@ -337,7 +336,7 @@ const linkClick = () => {
}
.icon {
- width: 16px;
+ font-size: 16px;
margin-left: var(--o-gap-2);
}
}
diff --git a/app/.vitepress/src/components/header/HeaderSearch.vue b/app/.vitepress/src/components/header/HeaderSearch.vue
index 646ec3e194e80906c7b7d07c0c8c997c8edbdc22..f9b4264fffa47cea7682a21d22f94909356df67e 100644
--- a/app/.vitepress/src/components/header/HeaderSearch.vue
+++ b/app/.vitepress/src/components/header/HeaderSearch.vue
@@ -401,9 +401,7 @@ const closeSearch = () => {
color: var(--o-color-info1);
padding-top: var(--o-gap-1);
cursor: pointer;
- svg {
- width: var(--o-icon_size-s);
- }
+ font-size: var(--o-icon_size-s);
}
}
}
diff --git a/app/.vitepress/src/components/header/HeaderTheme.vue b/app/.vitepress/src/components/header/HeaderTheme.vue
index b4644a02ab6225b26db17fd22a958aaa424f5d31..c2510125fc7eece98a7c5d0d720a42c39b793858 100644
--- a/app/.vitepress/src/components/header/HeaderTheme.vue
+++ b/app/.vitepress/src/components/header/HeaderTheme.vue
@@ -84,11 +84,14 @@ watch(
.theme-box-pc {
display: flex;
align-items: center;
+ height: 100%;
cursor: pointer;
color: var(--o-color-info1);
- .icon svg {
- width: var(--o-icon_size-s);
- height: var(--o-icon_size-s);
+ .icon {
+ font-size: var(--o-icon_size-m);
+ @include hover {
+ color: var(--o-color-primary1);
+ }
}
@include respond-to('<=pad_v') {
display: none;
diff --git a/app/.vitepress/src/components/header/NavContent.vue b/app/.vitepress/src/components/header/NavContent.vue
index e4eff7c132db74a3c19f969c61582c478eb9ca28..9701b659312d57f31221b1170e7345cb69cdaca6 100644
--- a/app/.vitepress/src/components/header/NavContent.vue
+++ b/app/.vitepress/src/components/header/NavContent.vue
@@ -55,8 +55,8 @@ const onClickNavLink = (item?: any) => {
@link-click="linkClick"
>
{{ subItem.NAME }}
-
-
+
+
{
@link-click="linkClick"
>
{{ system.NAME }}
-
-
+
+
@@ -101,8 +101,8 @@ const onClickNavLink = (item?: any) => {
@link-click="linkClick"
>
{{ subItem.NAME }}
-
-
+
+
{
@link-click="linkClick"
>
{{ system.NAME }}
-
-
+
+
@@ -153,7 +153,7 @@ const onClickNavLink = (item?: any) => {
}
.icon {
- width: var(--o-icon_size-xs);
+ font-size: var(--o-icon_size-xs);
margin-left: var(--o-gap-2);
}
diff --git a/app/.vitepress/src/components/markdown/MarkdownImage.vue b/app/.vitepress/src/components/markdown/MarkdownImage.vue
index 801159fa371f6d77e7f82c0611174085a678b3af..72a978b7f0c4f54650332a7e5ddd2ea30ff93b58 100644
--- a/app/.vitepress/src/components/markdown/MarkdownImage.vue
+++ b/app/.vitepress/src/components/markdown/MarkdownImage.vue
@@ -136,20 +136,23 @@ const onCloseZoom = () => {
}
.close-btn {
+ z-index: 2;
position: absolute;
+ top: 12px;
+ right: 12px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
width: 32px;
height: 32px;
background-color: rgba(var(--o-black), 0.4);
border: 1px solid rgba(var(--o-black), 0.1);
border-radius: var(--o-radius-xs);
- z-index: 2;
- top: 12px;
- right: 12px;
cursor: pointer;
+
.icon {
color: var(--o-color-white);
- margin-top: 3px;
- margin-left: 3px;
+ font-size: 24px;
}
@include respond-to('phone') {
diff --git a/app/.vitepress/src/components/markdown/MarkdownTitle.vue b/app/.vitepress/src/components/markdown/MarkdownTitle.vue
index c3fbe265c00873616c5dab64e94786684e073a1f..d1af3dc76eb330f833f350511c5b298e48ecd136 100644
--- a/app/.vitepress/src/components/markdown/MarkdownTitle.vue
+++ b/app/.vitepress/src/components/markdown/MarkdownTitle.vue
@@ -69,21 +69,23 @@ const onClickCopyLink = (e: MouseEvent) => {
-
+
-
-
-
-
-
-
-
- Copy link
-
+
+
+
+
+
+
+
+
+ Copy link
+
+
@@ -91,61 +93,50 @@ const onClickCopyLink = (e: MouseEvent) => {
.title-wrap {
position: relative;
display: inline-flex;
- align-items: center;
cursor: pointer;
+ .title {
+ flex: 1;
+ display: inline;
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+ word-break: normal;
+ }
+
span {
display: inline-flex;
}
- .o-icon {
+ .pin,
+ .copy-link {
@include h2;
-
- svg {
- width: 24px;
- height: 24px;
-
- @include respond-to('laptop') {
- width: 20px;
- height: 20px;
- }
- @include respond-to('pad_h') {
- width: 18px;
- height: 18px;
- }
- @include respond-to('pad_v') {
- width: 18px;
- height: 18px;
- }
- @include respond-to('phone') {
- width: 16px;
- height: 16px;
- }
- }
}
- .link {
- display: inline-flex;
- align-items: center;
+ .copy-link-wrap {
+ position: relative;
+ width: 1em;
+ height: 1em;
+ margin-left: 6px;
+ clear: both;
- @include hover {
- color: var(--o-color-primary1);
+ @include respond-to('<=laptop') {
+ margin-left: 4px;
}
}
.copy-link {
- margin-left: 6px;
+ position: absolute;
+ top: 2px;
- @include respond-to('<=laptop') {
- margin-left: 4px;
+ @include hover {
+ color: var(--o-color-primary1);
}
}
.pin {
position: absolute;
left: -28px;
- top: 50%;
- transform: translateY(-50%);
+ top: 4px;
padding-right: 4px;
transition: opacity var(--o-duration-l) var(--o-easing-standard-in);
opacity: 0;
diff --git a/app/.vitepress/src/i18n/feedback/feedback-zh.ts b/app/.vitepress/src/i18n/feedback/feedback-zh.ts
index 840a99c8c39940fe6cd4ebef3006a1f83f2731cc..24bec6a7d20ad0c36f3af202532089b0ef8d47d9 100644
--- a/app/.vitepress/src/i18n/feedback/feedback-zh.ts
+++ b/app/.vitepress/src/i18n/feedback/feedback-zh.ts
@@ -13,7 +13,7 @@ export default {
recommendTip1: '请输入您不太推荐的原因',
recommendTip2: '改进哪些方面会让您更愿意推荐?',
recommendTip3: '请输入您推荐的原因',
- submitBusy: '您的提交过于频繁,请稍后再试',
+ submitBusy: '提交过于频繁,请稍后再试',
feedbackFailed: '反馈失败',
issueBack: '问题反馈',
issueBackDecs: '获得技术团队的快速支持',
diff --git a/app/.vitepress/src/layouts/LayoutDoc.vue b/app/.vitepress/src/layouts/LayoutDoc.vue
index d430156b3f7b7f4023101fdde5e18f5761a34863..5c209e830f529f6f368b419c5e12bb2ac9e8753d 100644
--- a/app/.vitepress/src/layouts/LayoutDoc.vue
+++ b/app/.vitepress/src/layouts/LayoutDoc.vue
@@ -78,7 +78,6 @@ const updateExpandedKeys = () => {
};
watch(lang, () => {
- console.log(lang.value);
setTimeout(updateExpandedKeys, 300);
})
@@ -413,7 +412,7 @@ onUnmounted(() => {