diff --git a/README.md b/README.md
index 25fa956d1200c5cb94bce2e104c6d37339ac537f..c519868f2ad8ce3722fcd79456e7bb917dae18f6 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,86 @@
# docs-website
-#### 介绍
-The repository of docs-website
+## 介绍
+
+openEuler 文档前端仓库
+
+## 软件架构
-#### 软件架构
软件架构说明
+## 开发教程
+
+本项目使用 pnpm 作为包管理工具
+
+1. 安装依赖
+
+```bash
+pnpm i
+```
+
+2. 执行开发命令
-#### 安装教程
+```bash
+pnpm dev
+```
-1. xxxx
-2. xxxx
-3. xxxx
+3. 命令行中选择构建版本
-#### 使用说明
+```bash
+? 请选择要额外构建的文档版本:
+❯ - 跳过
+ - 所有版本 (请谨慎选择)
+ - 24.03_LTS_SP2
+ - 25.03
+ ...
+```
-1. xxxx
-2. xxxx
-3. xxxx
+4. 等待资源拉取构建完后会启动开发服务
-#### 参与贡献
+5. 如果之前已经拉取过资源,本次开发不想拉取直接运行开发服务,可执行
+
+```bash
+pnpm dev:app
+```
+
+## 项目结构
+
+```
+docs-website/
+├── app/
+│ ├── .vitepress/
+│ │ ├── config.ts # VitePress 配置文件
+│ │ ├── plugins/ # 自定义插件
+│ │ ├── public/ # 公共静态资源
+│ │ ├── src/
+│ │ │ ├── @types/ # 类型定义
+│ │ │ ├── api/ # API 接口定义
+│ │ │ ├── assets/ # 静态资源文件
+│ │ │ ├── components/ # 公共组件
+│ │ │ ├── composables/ # 自定义 hook 函数
+│ │ │ ├── config/ # 项目内配置
+│ │ │ ├── i18n/ # 国际化资源文件
+│ │ │ ├── layouts/ # 布局
+│ │ │ ├── shared/ # 共享模块
+│ │ │ ├── stores/ # 状态管理
+│ │ │ ├── utils/ # 工具函数
+│ │ │ ├── views/ # 页面
+│ │ │ ├── App.vue # 根组件
+│ │ │ └── NotFound.vue # 404 页面组件
+│ │ └── theme/ # 主题定制
+│ ├── en/ # 英文文档目录
+│ │ ├── docs/ # 英文文档内容
+│ │ └── index.md # 英文首页
+│ ├── zh/ # 中文文档目录
+│ │ ├── docs/ # 中文文档内容
+│ │ └── index.md # 中文首页
+│ └── vite.config.ts # Vite 配置文件
+├── scripts/ # 构建和开发相关脚本目录
+├── tests/ # 测试文件
+...
+```
+
+## 参与贡献
1. Fork 本仓库
2. 新建 Feat_xxx 分支
@@ -27,11 +88,3 @@ The repository of docs-website
4. 新建 Pull Request
-#### 特技
-
-1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
-2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
-3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
-4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
-5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
-6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
diff --git a/app/.vitepress/config.ts b/app/.vitepress/config.ts
index fdb9a2aa9260c9fca746062e29c1bb3ba6ad830c..be82b75cda054bf813717f054010fba2302ca69a 100644
--- a/app/.vitepress/config.ts
+++ b/app/.vitepress/config.ts
@@ -6,6 +6,7 @@ export default {
assetsDir: '/assets',
cleanUrls: false,
ignoreDeadLinks: true,
+ metaChunk: true,
title: '文档 | openEuler社区',
srcExclude: ['**/_menu.md'],
head: [
diff --git a/app/.vitepress/src/App.vue b/app/.vitepress/src/App.vue
index 985c142e041d4716d0fb4d8493ea3abbfb4e64dd..c7e881f0c9ba1327d166c9fdec21572968297edc 100644
--- a/app/.vitepress/src/App.vue
+++ b/app/.vitepress/src/App.vue
@@ -83,10 +83,10 @@ if (inBrowser) {
--layout-header-height: 80px;
--layout-header-zIndex: 101;
- --layout-header-max-width: 1440px;
+ --layout-header-max-width: 1488px;
--layout-header-padding: 12px;
- --layout-content-max-width: 1440px;
+ --layout-content-max-width: 1488px;
--layout-content-padding: 10px;
--layout-doc-padding-top: 32px;
diff --git a/app/.vitepress/src/assets/style/element-plus/index.scss b/app/.vitepress/src/assets/style/element-plus/index.scss
index 71118eb6ad131f274505be51851256ace728c3cc..4ce9a2226903af15d7cd6c2111cf84e329aedbcb 100644
--- a/app/.vitepress/src/assets/style/element-plus/index.scss
+++ b/app/.vitepress/src/assets/style/element-plus/index.scss
@@ -1,7 +1 @@
-@use './input.scss' as *;
-@use './pagination.scss' as *;
-@use './popper.scss' as *;
-@use './select.scss' as *;
-@use './table.scss' as *;
-@use './scrollbar.scss' as *;
@use './slider.scss' as *;
diff --git a/app/.vitepress/src/assets/style/element-plus/input.scss b/app/.vitepress/src/assets/style/element-plus/input.scss
deleted file mode 100644
index 924139752653de437385c5d70b7698206c4d853e..0000000000000000000000000000000000000000
--- a/app/.vitepress/src/assets/style/element-plus/input.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-.el-input {
- --el-input-text-color: var(--o-color-info2);
- .el-input__wrapper {
- box-shadow: none !important;
- border: 1px solid var(--o-color-control1);
-
- &:hover {
- border-color: var(--o-color-control2);
- }
- &.is-focus {
- box-shadow: none !important;
- border-color: var(--o-color-primary3) !important;
- }
- }
-}
diff --git a/app/.vitepress/src/assets/style/element-plus/pagination.scss b/app/.vitepress/src/assets/style/element-plus/pagination.scss
deleted file mode 100644
index a7439bf75e13309f3f9fd5c492b5173d8f55d71b..0000000000000000000000000000000000000000
--- a/app/.vitepress/src/assets/style/element-plus/pagination.scss
+++ /dev/null
@@ -1,47 +0,0 @@
-.el-pagination {
- --el-pagination-border-radius: 4px;
- --el-pagination-button-bg-color: var(--o-color-fill2);
- --el-disabled-bg-color: var(--o-color-fill2);
- --el-pagination-button-color: var(--o-color-info1);
- .el-pagination__total {
- color: var(--o-color-info2);
- }
- .el-pager {
- li {
- --el-pagination-button-color: var(--o-color-info1);
- &:hover {
- background-color: var(--o-color-primary2);
- color: var(--o-color-white);
- }
- }
- }
- .el-pagination__jump {
- color: var(--o-color-info2);
- }
- .btn-prev,
- .btn-next {
- border: 1px solid var(--o-color-control1);
- &:hover {
- border-color: var(--o-color-control2);
- }
- .el-icon {
- font-size: 18px;
- }
- &:disabled {
- border-color: var(--o-color-control1-light);
- }
- &:focus {
- border-color: var(--o-color-primary3) !important;
- }
- }
-}
-.el-input__wrapper {
- box-shadow: none !important;
- border: 1px solid var(--o-color-control1);
- background-color: var(--o-color-fill2);
- --el-disabled-bg-color: var(--o-color-fill2);
- --el-pagination-button-color: var(--o-color-info1);
- &:hover {
- border-color: var(--o-color-control2);
- }
-}
diff --git a/app/.vitepress/src/assets/style/element-plus/popper.scss b/app/.vitepress/src/assets/style/element-plus/popper.scss
deleted file mode 100644
index bdbe23c956b26bee822ab2a3119c59fcb1772538..0000000000000000000000000000000000000000
--- a/app/.vitepress/src/assets/style/element-plus/popper.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-.el-popper {
- --el-bg-color-overlay: var(--o-color-fill2);
- --el-border-color-light: var(--o-color-control1);
- margin: -7px 0 0;
- .el-popper__arrow {
- display: none;
- }
-}
diff --git a/app/.vitepress/src/assets/style/element-plus/scrollbar.scss b/app/.vitepress/src/assets/style/element-plus/scrollbar.scss
deleted file mode 100644
index e4f6528641637fc77379c8f057fb15878e3721b1..0000000000000000000000000000000000000000
--- a/app/.vitepress/src/assets/style/element-plus/scrollbar.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-div.el-scrollbar {
- --el-scrollbar-bg-color: var(--o-color-control1);
- --el-scrollbar-hover-bg-color: var(--o-color-control2);
- --el-scrollbar-opacity: 1;
- --el-scrollbar-hover-opacity: 1;
-}
diff --git a/app/.vitepress/src/assets/style/element-plus/select.scss b/app/.vitepress/src/assets/style/element-plus/select.scss
deleted file mode 100644
index ecfe124ce0524303545059e5987a68224eaeee98..0000000000000000000000000000000000000000
--- a/app/.vitepress/src/assets/style/element-plus/select.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-.el-select {
- .el-input {
- &.is-focus {
- .el-input__wrapper {
- box-shadow: none !important;
- }
- }
- }
-}
-
-.el-select-dropdown {
- .el-select-dropdown__item {
- color: var(--o-color-info2);
- &:hover,
- &.hover {
- background-color: var(--o-color-control2-light) !important;
- }
- &.selected {
- background-color: var(--o-color-control3-light) !important;
- color: var(--o-color-info1);
- }
- }
-}
diff --git a/app/.vitepress/src/assets/style/element-plus/table.scss b/app/.vitepress/src/assets/style/element-plus/table.scss
deleted file mode 100644
index f47cb45cddd0ad6c4c7b322e233bc0fb5c0d9d73..0000000000000000000000000000000000000000
--- a/app/.vitepress/src/assets/style/element-plus/table.scss
+++ /dev/null
@@ -1,119 +0,0 @@
-@use '../mixin/font.scss' as *;
-#app .el-table {
- --el-table-header-bg-color: var(--o-color-control3-light);
- --el-table-border-color: var(--o-color-control4);
- --el-table-tr-bg-color: var(--o-color-fill2);
- --el-table-expanded-cell-bg-color: var(--o-color-fill2);
- --el-table-bg-color: var(--o-color-fill2);
- --el-table-row-hover-bg-color: var(--o-color-control2-light);
- border-radius: 4px;
- --el-table-border: 1px solid var(--o-color-control4);
- border-spacing: 0;
- color: var(--o-color-info1);
- @include text1;
- &.is-scrolling-right .el-table-fixed-column--left.is-last-column.el-table__cell,
- &.is-scrolling-middle .el-table-fixed-column--left.is-last-column.el-table__cell {
- border-right: 1px solid transparent !important;
- }
-
- .el-table__row {
- &.hover-row {
- .el-table-fixed-column--left,
- .el-table-fixed-column--right {
- background: var(--el-table-row-hover-bg-color);
- }
- }
- }
- .el-table__cell {
- padding: 12px 0;
- transition: none;
- .cell {
- padding: 0 20px;
- }
- &.el-table-fixed-column--left,
- &.el-table-fixed-column--right {
- background: var(--el-table-tr-bg-color);
- }
- }
-
- thead {
- tr {
- &:first-child {
- th {
- &.el-table__cell {
- &:first-child {
- border-radius: 4px 0 0 0;
- }
- &:last-child {
- border-radius: 0 4px 0 0;
- }
- }
- }
- }
- }
- th {
- font-weight: 500;
- color: var(--o-color-info1);
- border-bottom: 0 none;
- @include text1;
- &.el-table__cell {
- background: var(--el-table-header-bg-color);
-
- &.el-table-fixed-column--left,
- &.el-table-fixed-column--right {
- background: var(--el-table-header-bg-color);
- }
- }
- }
- }
- &.el-table--border {
- &::after,
- &::before {
- display: none;
- }
- }
- tr:last-child {
- td {
- border-bottom: 0;
- &:first-child {
- border-radius: 0 0 0 4px;
- }
- &:last-child {
- border-radius: 0 0 4px 0;
- }
- }
- }
-
- td,
- th:not([rowspan='1']) {
- &:first-child {
- .cell {
- padding-left: 32px !important;
- }
- }
- &:last-child {
- .cell {
- padding-right: 32px !important;
- }
- }
- }
-
- .el-table__expand-icon {
- display: flex;
- align-items: center;
- > .el-icon {
- font-size: 16px;
- color: var(--o-color-info1);
- }
- }
- .el-table__placeholder {
- display: none;
- }
- .el-scrollbar__wrap {
- padding: 1px 0;
- }
-
- .el-table__empty-block {
- min-height: 250px;
- }
-}
diff --git a/app/.vitepress/src/assets/style/element-plus/var.scss b/app/.vitepress/src/assets/style/element-plus/var.scss
deleted file mode 100644
index 6c9b005a8646460a407644e0abb70e4f86d3dfa3..0000000000000000000000000000000000000000
--- a/app/.vitepress/src/assets/style/element-plus/var.scss
+++ /dev/null
@@ -1,19 +0,0 @@
-@forward 'element-plus/theme-chalk/src/common/var.scss' with (
- $colors: (
- 'primary': (
- 'base': #002fa7,
- ),
- 'success': (
- 'base': #82c04d,
- ),
- 'warning': (
- 'base': #f0934b,
- ),
- 'danger': (
- 'base': #f3524d,
- ),
- 'error': (
- 'base': #f3524d,
- ),
- )
-);
diff --git a/app/.vitepress/src/assets/style/markdown.scss b/app/.vitepress/src/assets/style/markdown.scss
index 967cbf44655d8e667f3582589acabd7eafe8552d..3e12d2cc41bf7505c609b0695304b22b03c06061 100644
--- a/app/.vitepress/src/assets/style/markdown.scss
+++ b/app/.vitepress/src/assets/style/markdown.scss
@@ -395,13 +395,13 @@
.copy {
cursor: pointer;
position: absolute;
- top: var(--o-gap-3);
+ top: calc(var(--o-gap-2) + 2px);
right: var(--o-gap-3);
z-index: 3;
border-radius: 4px;
width: 24px;
height: 24px;
- background-color: transparent;
+ background-color: inherit;
background-image: url('@/assets/category/docs/icon-copy.svg');
background-position: 50%;
background-size: 20px;
@@ -410,8 +410,12 @@
opacity: 0;
transition: all var(--o-duration-m1) var(--o-easing-standard-in);
+ @include respond-to('<=laptop') {
+ top: var(--o-gap-2);
+ }
+
@include respond-to('phone') {
- top: 4px;
+ top: 12px;
}
}
diff --git a/app/.vitepress/src/assets/style/mixin/screen.scss b/app/.vitepress/src/assets/style/mixin/screen.scss
index 4ae3eddaa5eac6bdad0251f31e87f70f5f6d76ac..280083cf64837966e6bf31a92219b76776744cdc 100644
--- a/app/.vitepress/src/assets/style/mixin/screen.scss
+++ b/app/.vitepress/src/assets/style/mixin/screen.scss
@@ -1,3 +1,7 @@
+@use "sass:list";
+@use "sass:map";
+@use "sass:meta";
+
// 断点定义
$breakpoints: (
// phone
@@ -22,10 +26,10 @@ $breakpoints: (
);
@mixin respond-to($breakname) {
- $bp: map-get($breakpoints, $breakname);
- @if type-of($bp) == 'list' {
- $min: nth($bp, 1);
- $max: nth($bp, 2);
+ $bp: map.get($breakpoints, $breakname);
+ @if meta.type-of($bp) == 'list' {
+ $min: list.nth($bp, 1);
+ $max: list.nth($bp, 2);
@if $min == 0 {
@media (max-width: $max) {
@content;
@@ -71,3 +75,16 @@ $breakpoints: (
transform: rotate(180deg);
}
}
+
+@mixin x-svg-hover() {
+ overflow: hidden;
+ @include hover {
+ svg {
+ transform: rotate(180deg);
+ }
+ }
+
+ svg {
+ transition: all var(--o-duration-m1) var(--o-easing-standard-in);
+ }
+}
diff --git a/app/.vitepress/src/assets/style/theme/index.scss b/app/.vitepress/src/assets/style/theme/index.scss
index 8c939e640f3c471a5a90bb4308867ab22a563623..af073d64b53aa5ed65472685ab30bf3aae2d557a 100644
--- a/app/.vitepress/src/assets/style/theme/index.scss
+++ b/app/.vitepress/src/assets/style/theme/index.scss
@@ -16,3 +16,4 @@
@use './link.scss' as *;
@use './breadcrumb.scss' as *;
@use './icon.scss' as *;
+@use './layer.scss' as *;
\ No newline at end of file
diff --git a/app/.vitepress/src/assets/style/theme/layer.scss b/app/.vitepress/src/assets/style/theme/layer.scss
new file mode 100644
index 0000000000000000000000000000000000000000..e0ead2dc716ecd65b9137359c0cea1b7af67f95b
--- /dev/null
+++ b/app/.vitepress/src/assets/style/theme/layer.scss
@@ -0,0 +1,7 @@
+.o-layer {
+ .disable-scroller {
+ .o-scrollbar-container {
+ overflow: visible !important;
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/.vitepress/src/assets/style/theme/message.scss b/app/.vitepress/src/assets/style/theme/message.scss
index 6d52e02d3111079dd336aa69ec222e6f84f47821..a729f1aae3a4cd222b0682c7503bb529fae061b1 100644
--- a/app/.vitepress/src/assets/style/theme/message.scss
+++ b/app/.vitepress/src/assets/style/theme/message.scss
@@ -1,8 +1,6 @@
.o-message-list {
z-index: 2147483647 !important;
--app-header-height: 64px;
- --app-footer-height: 300px;
- --message-list-top-offset: calc(var(--app-header-height) + 32px);
- --message-list-bottom-offset: calc(var(--app-footer-height) + 32px);
+ --message-list-offset: calc(var(--app-header-height) + 32px);
}
diff --git a/app/.vitepress/src/components/FloatingButton.vue b/app/.vitepress/src/components/FloatingButton.vue
index 8313811670f961fd6e7e1590201f727754849109..711dba787ba05b01cbe14ae13d61fd032f610734 100644
--- a/app/.vitepress/src/components/FloatingButton.vue
+++ b/app/.vitepress/src/components/FloatingButton.vue
@@ -94,6 +94,7 @@ onMounted(() => {
: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' }"
:scroller="false"
+ main-class="disable-scroller"
@change="change"
>
@@ -105,10 +106,14 @@ onMounted(() => {
.feedback-home {
position: fixed;
bottom: 200px;
- right: 64px;
+ right: max(calc(64px + (var(--vw100) - 1920px) / 2), 64px);
z-index: 10;
height: 164px;
+ @media (min-width: 1441px) and (max-width: 1919px) {
+ right: 64px;
+ }
+
@include respond-to('<=laptop') {
right: 24px;
}
diff --git a/app/.vitepress/src/components/FloatingButtonDocs.vue b/app/.vitepress/src/components/FloatingButtonDocs.vue
index 0d835c01cf46e1c39ce35bf4d13b05afbd5b4c3b..0a0321b06279087d0a2829b0defb7a3115a005db 100644
--- a/app/.vitepress/src/components/FloatingButtonDocs.vue
+++ b/app/.vitepress/src/components/FloatingButtonDocs.vue
@@ -1,5 +1,5 @@