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 @@