@opendesign-plus/components 0.0.1-rc.2 → 0.0.1-rc.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (205) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -0
  2. package/dist/chunk-OElCookieNotice.es.js +839 -0
  3. package/dist/components/OBanner.vue.d.ts +10 -1
  4. package/dist/components/OCookieNotice.vue.d.ts +6 -5
  5. package/dist/components/OFooter.vue.d.ts +46 -0
  6. package/dist/components/OHeaderSearch.vue.d.ts +10 -14
  7. package/dist/components/OHeaderUser.vue.d.ts +40 -0
  8. package/dist/components/OSourceCode.vue.d.ts +18 -0
  9. package/dist/components/activity/OActivityApproval.vue.d.ts +273 -0
  10. package/dist/components/activity/OActivityForm.vue.d.ts +138 -0
  11. package/dist/components/activity/OMyActivityCalendar.vue.d.ts +570 -0
  12. package/dist/components/activity/composables/useActivityConfig.d.ts +17 -0
  13. package/dist/components/activity/config.d.ts +1 -0
  14. package/dist/components/activity/index.d.ts +615 -0
  15. package/dist/components/activity/types.d.ts +88 -0
  16. package/dist/components/element-plus/OElCookieNotice.vue.d.ts +34 -0
  17. package/dist/components/element-plus/index.d.ts +2 -0
  18. package/dist/components/events/OEventsApply.vue.d.ts +16 -0
  19. package/dist/components/events/OEventsCalendar.vue.d.ts +5 -0
  20. package/dist/components/events/OEventsList.vue.d.ts +26 -0
  21. package/dist/components/events/config.d.ts +14 -0
  22. package/dist/components/events/index.d.ts +78 -0
  23. package/dist/components/events/types.d.ts +69 -0
  24. package/dist/components/events/utils.d.ts +7 -0
  25. package/dist/components/header/OHeader.vue.d.ts +30 -0
  26. package/dist/components/header/OHeaderMobile.vue.d.ts +178 -0
  27. package/dist/components/header/components/HeaderContent.vue.d.ts +13 -0
  28. package/dist/components/header/components/HeaderNav.vue.d.ts +19 -0
  29. package/dist/components/header/components/HeaderNavMobile.vue.d.ts +36 -0
  30. package/dist/components/header/index.d.ts +152 -0
  31. package/dist/components/header/types.d.ts +84 -0
  32. package/dist/components/meeting/OMeetingCalendar.vue.d.ts +295 -0
  33. package/dist/components/meeting/OMeetingForm.vue.d.ts +143 -0
  34. package/dist/components/meeting/OMeetingPlayback.vue.d.ts +45 -0
  35. package/dist/components/meeting/OMyMeetingCalendar.vue.d.ts +578 -0
  36. package/dist/components/meeting/OSigMeetingCalendar.vue.d.ts +24 -0
  37. package/dist/components/meeting/components/OMeetingCalendarList.vue.d.ts +28 -0
  38. package/dist/components/meeting/components/OMeetingCalendarSelector.vue.d.ts +664 -0
  39. package/dist/components/meeting/components/OMeetingDetail.vue.d.ts +13 -0
  40. package/dist/components/meeting/components/OMeetingPlaybackSubtitles.vue.d.ts +5 -0
  41. package/dist/components/meeting/components/OMeetingPlaybackVideo.vue.d.ts +17 -0
  42. package/dist/components/meeting/components/OSigMeetingAside.vue.d.ts +16 -0
  43. package/dist/components/meeting/composables/useMeetingConfig.d.ts +14 -0
  44. package/dist/components/meeting/config.d.ts +12 -0
  45. package/dist/components/meeting/index.d.ts +786 -0
  46. package/dist/components/meeting/types.d.ts +233 -0
  47. package/dist/components/meeting/utils.d.ts +8 -0
  48. package/dist/components.cjs.js +224 -1
  49. package/dist/components.css +1 -1
  50. package/dist/components.element.cjs.js +1 -0
  51. package/dist/components.element.es.js +4 -0
  52. package/dist/components.es.js +44417 -784
  53. package/dist/index.d.ts +9 -2
  54. package/docs/design.md +27 -27
  55. package/docs/design_banner.md +41 -41
  56. package/docs/design_section.md +27 -27
  57. package/package.json +13 -4
  58. package/scripts/generate-components-index.js +103 -80
  59. package/src/assets/events/svg-icons/icon-checked.svg +3 -0
  60. package/src/assets/events/svg-icons/icon-competition.svg +7 -0
  61. package/src/assets/events/svg-icons/icon-events.svg +4 -0
  62. package/src/assets/events/svg-icons/icon-release.svg +4 -0
  63. package/src/assets/events/svg-icons/icon-summit.svg +4 -0
  64. package/src/assets/meeting/svg-icons/icon-all.svg +3 -0
  65. package/src/assets/meeting/svg-icons/icon-backward.svg +4 -0
  66. package/src/assets/meeting/svg-icons/icon-calendar.svg +3 -0
  67. package/src/assets/meeting/svg-icons/icon-cancel.svg +4 -0
  68. package/src/assets/meeting/svg-icons/icon-captions.svg +4 -0
  69. package/src/assets/meeting/svg-icons/icon-close-captions.svg +6 -0
  70. package/src/assets/meeting/svg-icons/icon-close-fullscreen.svg +6 -0
  71. package/src/assets/meeting/svg-icons/icon-copy.svg +3 -0
  72. package/src/assets/meeting/svg-icons/icon-create.svg +5 -0
  73. package/src/assets/meeting/svg-icons/icon-delete.svg +7 -0
  74. package/src/assets/meeting/svg-icons/icon-empty.svg +31 -0
  75. package/src/assets/meeting/svg-icons/icon-empty_dark.svg +49 -0
  76. package/src/assets/meeting/svg-icons/icon-event.svg +3 -0
  77. package/src/assets/meeting/svg-icons/icon-export.svg +3 -0
  78. package/src/assets/meeting/svg-icons/icon-forward.svg +4 -0
  79. package/src/assets/meeting/svg-icons/icon-fullscreen.svg +6 -0
  80. package/src/assets/meeting/svg-icons/icon-help.svg +3 -0
  81. package/src/assets/meeting/svg-icons/icon-important.svg +4 -0
  82. package/src/assets/meeting/svg-icons/icon-info.svg +3 -0
  83. package/src/assets/meeting/svg-icons/icon-meet.svg +3 -0
  84. package/src/assets/meeting/svg-icons/icon-meeting-message.svg +5 -0
  85. package/src/assets/meeting/svg-icons/icon-meeting.svg +4 -0
  86. package/src/assets/meeting/svg-icons/icon-play.svg +5 -0
  87. package/src/assets/meeting/svg-icons/icon-playing-tip.svg +7 -0
  88. package/src/assets/meeting/svg-icons/icon-playing.svg +5 -0
  89. package/src/assets/meeting/svg-icons/icon-question.svg +4 -0
  90. package/src/assets/meeting/svg-icons/icon-sound.svg +5 -0
  91. package/src/assets/meeting/svg-icons/icon-speaker.svg +3 -0
  92. package/src/assets/meeting/svg-icons/icon-summit.svg +3 -0
  93. package/src/assets/meeting/svg-icons/icon-telligent.svg +3 -0
  94. package/src/assets/meeting/svg-icons/icon-tip.svg +3 -0
  95. package/src/assets/meeting/svg-icons/icon-todo.svg +4 -0
  96. package/src/assets/meeting/transparent.png +0 -0
  97. package/src/assets/svg-icons/icon-arrow-left.svg +3 -0
  98. package/src/assets/svg-icons/icon-avatar-line.svg +3 -0
  99. package/src/assets/svg-icons/icon-caret-left.svg +3 -0
  100. package/src/assets/svg-icons/icon-caret-right.svg +3 -0
  101. package/src/assets/svg-icons/icon-chevron-down.svg +3 -0
  102. package/src/assets/svg-icons/icon-chevron-right.svg +3 -3
  103. package/src/assets/svg-icons/icon-chevron-up.svg +3 -0
  104. package/src/assets/svg-icons/icon-close.svg +3 -3
  105. package/src/assets/svg-icons/icon-delete.svg +3 -3
  106. package/src/assets/svg-icons/icon-filter.svg +3 -0
  107. package/src/assets/svg-icons/icon-header-back.svg +3 -3
  108. package/src/assets/svg-icons/icon-header-delete.svg +3 -3
  109. package/src/assets/svg-icons/icon-header-menu.svg +3 -0
  110. package/src/assets/svg-icons/icon-header-person.svg +3 -0
  111. package/src/assets/svg-icons/icon-header-search.svg +4 -4
  112. package/src/assets/svg-icons/icon-loading.svg +4 -0
  113. package/src/assets/svg-icons/icon-locale.svg +3 -0
  114. package/src/assets/svg-icons/icon-log-off.svg +3 -0
  115. package/src/assets/svg-icons/icon-message.svg +3 -0
  116. package/src/assets/svg-icons/icon-moon.svg +3 -3
  117. package/src/assets/svg-icons/icon-outlink.svg +3 -0
  118. package/src/assets/svg-icons/icon-overview.svg +3 -0
  119. package/src/assets/svg-icons/icon-search.svg +3 -0
  120. package/src/assets/svg-icons/icon-setting.svg +3 -0
  121. package/src/assets/svg-icons/icon-sun.svg +3 -3
  122. package/src/assets/svg-icons/icon-tips.svg +3 -0
  123. package/src/components/OBanner.vue +398 -390
  124. package/src/components/OCookieNotice.vue +575 -424
  125. package/src/components/OFooter.vue +576 -0
  126. package/src/components/OHeaderSearch.vue +601 -601
  127. package/src/components/OHeaderUser.vue +237 -0
  128. package/src/components/OPlusConfigProvider.vue +32 -32
  129. package/src/components/OSection.vue +178 -178
  130. package/src/components/OSourceCode.vue +151 -0
  131. package/src/components/OThemeSwitcher.vue +108 -108
  132. package/src/components/activity/OActivityApproval.vue +864 -0
  133. package/src/components/activity/OActivityForm.vue +542 -0
  134. package/src/components/activity/OMyActivityCalendar.vue +1502 -0
  135. package/src/components/activity/composables/useActivityConfig.ts +141 -0
  136. package/src/components/activity/config.ts +1 -0
  137. package/src/components/activity/index.ts +24 -0
  138. package/src/components/activity/types.ts +95 -0
  139. package/src/components/common/AppAvatar.vue +83 -0
  140. package/src/components/common/ClientOnlyWrapper.ts +21 -21
  141. package/src/components/common/ContentWrapper.vue +85 -85
  142. package/src/components/common/MoreText.vue +124 -0
  143. package/src/components/common/ThFilter.vue +330 -0
  144. package/src/components/element-plus/OElCookieNotice.vue +603 -0
  145. package/src/components/element-plus/index.ts +3 -0
  146. package/src/components/events/OEventsApply.vue +418 -0
  147. package/src/components/events/OEventsCalendar.vue +598 -0
  148. package/src/components/events/OEventsList.vue +389 -0
  149. package/src/components/events/config.ts +35 -0
  150. package/src/components/events/index.ts +24 -0
  151. package/src/components/events/types.ts +83 -0
  152. package/src/components/events/utils.ts +9 -0
  153. package/src/components/header/OHeader.vue +157 -0
  154. package/src/components/header/OHeaderMobile.vue +184 -0
  155. package/src/components/header/components/HeaderContent.vue +1125 -0
  156. package/src/components/header/components/HeaderNav.vue +278 -0
  157. package/src/components/header/components/HeaderNavMobile.vue +380 -0
  158. package/src/components/header/index.ts +16 -0
  159. package/src/components/header/types.ts +95 -0
  160. package/src/components/meeting/OMeetingCalendar.vue +890 -0
  161. package/src/components/meeting/OMeetingForm.vue +1072 -0
  162. package/src/components/meeting/OMeetingPlayback.vue +439 -0
  163. package/src/components/meeting/OMyMeetingCalendar.vue +1508 -0
  164. package/src/components/meeting/OSigMeetingCalendar.vue +413 -0
  165. package/src/components/meeting/components/OMeetingCalendarList.vue +515 -0
  166. package/src/components/meeting/components/OMeetingCalendarSelector.vue +210 -0
  167. package/src/components/meeting/components/OMeetingDetail.vue +244 -0
  168. package/src/components/meeting/components/OMeetingPlaybackSubtitles.vue +611 -0
  169. package/src/components/meeting/components/OMeetingPlaybackVideo.vue +741 -0
  170. package/src/components/meeting/components/OSigMeetingAside.vue +199 -0
  171. package/src/components/meeting/composables/useMeetingConfig.ts +108 -0
  172. package/src/components/meeting/config.ts +48 -0
  173. package/src/components/meeting/index.ts +45 -0
  174. package/src/components/meeting/types.ts +266 -0
  175. package/src/components/meeting/utils.ts +70 -0
  176. package/src/draft/Banner.vue +265 -265
  177. package/src/draft/ButtonCards.vue +105 -105
  178. package/src/draft/Feature.vue +133 -133
  179. package/src/draft/Footer.vue +512 -512
  180. package/src/draft/HorizontalAnchor.vue +165 -165
  181. package/src/draft/ItemSwiper.vue +133 -133
  182. package/src/draft/Logo.vue +141 -141
  183. package/src/draft/LogoCard.vue +74 -74
  184. package/src/draft/LogoV2.vue +19 -19
  185. package/src/draft/MainCard.vue +38 -38
  186. package/src/draft/MultiCard.vue +94 -94
  187. package/src/draft/MultiIconCard.vue +73 -73
  188. package/src/draft/OInfoCard.vue +176 -176
  189. package/src/draft/Process.vue +81 -81
  190. package/src/draft/Section.vue +167 -167
  191. package/src/draft/SingleTabCard.vue +84 -84
  192. package/src/draft/SliderCard.vue +110 -110
  193. package/src/env.d.ts +16 -1
  194. package/src/i18n/en.ts +264 -20
  195. package/src/i18n/index.ts +56 -42
  196. package/src/i18n/zh.ts +253 -9
  197. package/src/index.ts +14 -3
  198. package/src/shared/provide.ts +6 -6
  199. package/src/shims-vue-dompurify-html.d.ts +17 -0
  200. package/src/vue.d.ts +9 -9
  201. package/tsconfig.json +37 -33
  202. package/vite.config.ts +119 -94
  203. package/dist/components/OCookieNoticeEl.vue.d.ts +0 -29
  204. package/dist/components.umd.js +0 -1
  205. package/src/components/OCookieNoticeEl.vue +0 -404
@@ -0,0 +1,1125 @@
1
+ <script setup lang="ts">
2
+ import { ref } from 'vue';
3
+ import { OScroller, OIcon, OTag } from '@opensig/opendesign';
4
+
5
+ import ContentWrapper from '../../common/ContentWrapper.vue';
6
+
7
+ import { useLocale, useTheme } from '@opendesign-plus/composables';
8
+
9
+ import { type NavLiItemT } from '../types.ts';
10
+
11
+ export interface OHeaderEmitsT {
12
+ (e: 'handle-mouseenter-sub', val: any): void;
13
+ (e: 'handle-mouseleave-sub', val: any): void;
14
+ }
15
+
16
+ const emit = defineEmits<OHeaderEmitsT>();
17
+
18
+ const props = defineProps<NavLiItemT>();
19
+
20
+ const { locale } = useLocale();
21
+ const { theme } = useTheme();
22
+
23
+ const navVisible = ref(false);
24
+
25
+ const onMouseEnter = () => {
26
+ emit('handle-mouseenter-sub', props.itemData?.id);
27
+ navVisible.value = true;
28
+ };
29
+ const onMouseLeave = () => {
30
+ emit('handle-mouseenter-sub', '');
31
+ navVisible.value = false;
32
+ };
33
+
34
+ const showDesc = ref(false);
35
+ const descMouseenter = (e: MouseEvent) => {
36
+ if (!e || !e.target) {
37
+ return;
38
+ }
39
+ const target = e.target as HTMLElement;
40
+ showDesc.value = target!.clientHeight < target.scrollHeight;
41
+ };
42
+
43
+ const onClickNavHref = (item: any, sub: any) => {
44
+ const res = {
45
+ properties: {
46
+ module: 'navigation',
47
+ level1: item.label,
48
+ level2: sub.label,
49
+ target: sub.label,
50
+ url: item.href,
51
+ },
52
+ };
53
+ return res;
54
+ };
55
+
56
+ const onClickShortcut = (item: any) => {
57
+ const res = {
58
+ properties: {
59
+ module: 'navigation',
60
+ level1: locale.value === 'zh' ? '快捷链接' : 'Quick Link',
61
+ level2: item.label,
62
+ target: item.label,
63
+ url: item.href,
64
+ },
65
+ };
66
+ return res;
67
+ };
68
+ </script>
69
+
70
+ <template>
71
+ <div @mouseenter="onMouseEnter" @mouseleave="onMouseLeave">
72
+ <div
73
+ v-if="(props.itemVisible || navVisible) && props.itemData?.children?.length"
74
+ class="nav-content"
75
+ :class="[props.community?.toLowerCase(), props.hoverIndex, theme, `${props.hoverIndex}-${locale}`]"
76
+ >
77
+ <div class="nav-background-left" :style="{ backgroundImage: `url(${props.bgLeft})` }"></div>
78
+ <div class="nav-background-right" :style="{ backgroundImage: `url(${props.bgRight})` }"></div>
79
+ <ContentWrapper>
80
+ <OScroller class="nav-scroller" show-type="always" size="small" disabled-y>
81
+ <div class="nav-sub-content">
82
+ <div class="content-left">
83
+ <div class="item-sub" v-for="(sub, s) in props.itemData?.children" :key="s">
84
+ <span class="content-label">{{ sub.label }}</span>
85
+ <div class="content-container">
86
+ <div v-for="subItem in sub.children" :key="subItem.label" class="content-item">
87
+ <a
88
+ :href="subItem.href"
89
+ :target="subItem?.target || '_self'"
90
+ rel="noopener noreferrer"
91
+ class="item-label"
92
+ v-analytics="() => onClickNavHref(sub, subItem)"
93
+ >
94
+ <span class="item-name">{{ subItem.label }}</span>
95
+ <OIcon v-if="subItem.icon">
96
+ <component :is="subItem.icon" />
97
+ </OIcon>
98
+ <OTag v-if="subItem.tag" round="pill" color="danger" size="small" class="content-tag">{{ subItem.tag }}</OTag>
99
+ </a>
100
+ <div v-if="subItem.description" class="desc-container">
101
+ <p class="item-desc" :title="showDesc ? subItem.description : undefined"
102
+ @mouseenter="descMouseenter($event)">
103
+ {{ subItem.description }}
104
+ </p>
105
+ </div>
106
+ </div>
107
+ </div>
108
+ </div>
109
+ </div>
110
+ <div class="split-line" v-if="props.itemData?.shortcut?.length"></div>
111
+ <div class="content-right" v-if="props.itemData?.shortcut?.length">
112
+ <span class="content-label">{{ locale === 'zh' ? '快捷链接' : 'Quick Link' }}</span>
113
+ <template v-if="!props.itemData?.withPicture">
114
+ <div v-for="shortcut in props.itemData?.shortcut" :key="shortcut.label" class="shortcut">
115
+ <a
116
+ :href="shortcut.href"
117
+ :target="shortcut?.target || '_self'"
118
+ rel="noopener noreferrer"
119
+ class="shortcut-link"
120
+ v-analytics="() => onClickShortcut(shortcut)"
121
+ >
122
+ <span>{{ shortcut.label }}</span>
123
+ <OIcon v-if="shortcut.icon">
124
+ <component :is="shortcut.icon" />
125
+ </OIcon>
126
+ </a>
127
+ </div>
128
+ </template>
129
+ <template v-else>
130
+ <a
131
+ v-for="shortcut in props.itemData?.shortcut"
132
+ :key="shortcut.label"
133
+ :href="shortcut.href"
134
+ :target="shortcut?.target || '_self'"
135
+ rel="noopener noreferrer"
136
+ class="review"
137
+ v-analytics="() => onClickShortcut(shortcut)"
138
+ >
139
+ <img :src="shortcut.picture" class="review-picture" />
140
+ <div class="review-content">
141
+ <p class="review-label">
142
+ {{ shortcut.label }}
143
+ </p>
144
+ <div class="review-property">{{ shortcut.remark }}</div>
145
+ </div>
146
+ </a>
147
+ </template>
148
+ </div>
149
+ </div>
150
+ </OScroller>
151
+ </ContentWrapper>
152
+ </div>
153
+ </div>
154
+ </template>
155
+
156
+ <style lang="scss" scoped>
157
+ .nav-content {
158
+ cursor: default;
159
+ overflow: hidden;
160
+ justify-content: center;
161
+ transform-origin: top;
162
+ transition: all 0.3s allow-discrete;
163
+ }
164
+ .nav-scroller {
165
+ height: 100%;
166
+ width: 100%;
167
+ overflow-x: auto;
168
+ overflow-y: auto;
169
+ white-space: nowrap;
170
+
171
+ @include respond-to('<=pad_v') {
172
+ --scroller-padding: 0 var(--layout-content-padding);
173
+ }
174
+
175
+ :deep(.o-scrollbar) {
176
+ --scrollbar-height: 100%;
177
+ }
178
+ }
179
+ .nav-sub-content {
180
+ display: flex;
181
+ }
182
+
183
+ .content-left {
184
+ display: flex;
185
+ flex: 1;
186
+ padding: 32px 0;
187
+ }
188
+ .content-label {
189
+ display: inline-block;
190
+ margin-bottom: var(--o-gap-3);
191
+ color: var(--o-color-info3);
192
+ @include text1;
193
+ }
194
+ .content-container {
195
+ display: flex;
196
+ flex-wrap: wrap;
197
+ }
198
+ .content-item {
199
+ width: 200px;
200
+ margin-top: 24px;
201
+ @include respond-to('laptop') {
202
+ width: 170px;
203
+ margin-top: 16px;
204
+ }
205
+ @include respond-to('pad_h') {
206
+ width: 132px;
207
+ margin-top: 12px;
208
+ }
209
+ }
210
+ .item-label {
211
+ display: inline-flex;
212
+ align-items: center;
213
+ margin-bottom: var(--o-gap-1);
214
+ color: var(--o-color-info1);
215
+ @include hover {
216
+ color: var(--o-color-primary1);
217
+ text-decoration: none;
218
+ }
219
+ .item-name {
220
+ font-weight: 500;
221
+ white-space: nowrap;
222
+ @include text1;
223
+ }
224
+ .o-icon {
225
+ --icon-size: 24px;
226
+ margin-left: var(--o-gap-2);
227
+ @include respond-to('<=laptop') {
228
+ --icon-size: 16px;
229
+ }
230
+ }
231
+ .content-tag {
232
+ margin-left: var(--o-gap-2);
233
+ --layout-pkg-radius: var(--o-radius-xs);
234
+ @include respond-to('<=laptop') {
235
+ display: none;
236
+ }
237
+ }
238
+ }
239
+ .desc-container {
240
+ overflow: hidden;
241
+ position: relative;
242
+ height: 36px;
243
+ white-space: normal;
244
+
245
+ .item-desc {
246
+ color: var(--o-color-info2);
247
+ word-break: normal;
248
+ @include tip2;
249
+ @include text-truncate(2);
250
+ }
251
+ }
252
+
253
+ .split-line {
254
+ background: var(--o-color-control4);
255
+ width: 1px;
256
+ margin: 0 16px;
257
+ flex-shrink: 0;
258
+
259
+ @include respond-to('<=pad') {
260
+ display: none;
261
+ }
262
+ }
263
+ .content-right {
264
+ width: 342px;
265
+ padding: 32px 0;
266
+ flex-shrink: 0;
267
+ @include respond-to('laptop') {
268
+ width: 240px;
269
+ }
270
+
271
+ @include respond-to('pad_h') {
272
+ width: 240px;
273
+ }
274
+
275
+ @include respond-to('<=pad') {
276
+ display: none;
277
+ }
278
+
279
+ .shortcut {
280
+ min-height: 42px;
281
+ background: var(--o-color-fill3);
282
+ border-radius: var(--o-radius_control-xs);
283
+ padding: 10px 24px;
284
+ display: flex;
285
+ align-items: center;
286
+ gap: var(--o-gap-3);
287
+ cursor: pointer;
288
+ @include tip1;
289
+
290
+ @include respond-to('laptop') {
291
+ @include text1;
292
+ }
293
+
294
+ @include respond-to('pad_h') {
295
+ @include text1;
296
+ }
297
+
298
+ & + .shortcut {
299
+ margin-top: var(--o-gap-2);
300
+ }
301
+
302
+ .shortcut-link {
303
+ display: flex;
304
+ align-items: center;
305
+ color: var(--o-color-link1);
306
+ word-break: normal;
307
+ white-space: normal;
308
+ @include hover {
309
+ color: var(--o-color-primary2);
310
+ text-decoration: none;
311
+ }
312
+
313
+ span {
314
+ @include text-truncate(1);
315
+ }
316
+
317
+ .o-icon {
318
+ --icon-size: 16px;
319
+ margin-left: var(--o-gap-2);
320
+ }
321
+ }
322
+ }
323
+
324
+ .review {
325
+ display: flex;
326
+ align-items: unset;
327
+ position: relative;
328
+ @include hover {
329
+ text-decoration: none;
330
+ }
331
+
332
+ @include respond-to('pad_h') {
333
+ &:not(:last-child) {
334
+ &:after {
335
+ content: '';
336
+ position: absolute;
337
+ left: 0;
338
+ right: 0;
339
+ bottom: -8px;
340
+ height: 1px;
341
+ background: var(--o-color-control4);
342
+ }
343
+ }
344
+ }
345
+
346
+ & + .review {
347
+ margin-top: var(--o-gap-3);
348
+ }
349
+
350
+ .review-picture {
351
+ width: 120px;
352
+ height: auto;
353
+ display: block;
354
+ object-fit: contain;
355
+
356
+ @include respond-to('<=laptop') {
357
+ display: none;
358
+ }
359
+ }
360
+ .review-content {
361
+ margin-left: var(--o-gap-2);
362
+ flex: 1;
363
+ max-width: 212px;
364
+ height: 68px;
365
+ display: flex;
366
+ flex-direction: column;
367
+ justify-content: space-between;
368
+ white-space: normal;
369
+
370
+ @include respond-to('<=laptop') {
371
+ margin-left: unset;
372
+ height: auto;
373
+ }
374
+
375
+ .review-label {
376
+ word-break: normal;
377
+ max-height: 48px;
378
+ color: var(--o-color-info1);
379
+ font-weight: 500;
380
+ cursor: pointer;
381
+ @include text1;
382
+ @include text-truncate(2);
383
+
384
+ @include hover {
385
+ color: var(--o-color-primary1);
386
+ }
387
+ @include respond-to('pad_v-laptop') {
388
+ max-height: 44px;
389
+ }
390
+ }
391
+
392
+ .review-property {
393
+ color: var(--o-color-info3);
394
+ overflow: hidden;
395
+ white-space: nowrap;
396
+ text-overflow: ellipsis;
397
+ @include tip2;
398
+ }
399
+ }
400
+ }
401
+ }
402
+
403
+ .nav-background-left {
404
+ position: absolute;
405
+ left: 0;
406
+ top: -87px;
407
+ width: 173px;
408
+ height: 249px;
409
+ background-size: cover;
410
+ z-index: -1;
411
+
412
+ @include respond-to('<=laptop') {
413
+ display: none;
414
+ }
415
+ }
416
+ .nav-background-right {
417
+ position: absolute;
418
+ right: 0;
419
+ bottom: 0;
420
+ width: 173px;
421
+ height: 172px;
422
+ background-size: cover;
423
+ z-index: -1;
424
+
425
+ @include respond-to('<=laptop') {
426
+ display: none;
427
+ }
428
+ }
429
+
430
+ .openeuler {
431
+ &.download {
432
+ .item-sub {
433
+ margin-left: 80px;
434
+ &:nth-of-type(1) {
435
+ margin-left: 0;
436
+ .content-container {
437
+ width: 464px;
438
+ :deep(.content-item) {
439
+ margin-left: 64px;
440
+ &:nth-child(2n + 1) {
441
+ margin-left: 0;
442
+ }
443
+ &:nth-of-type(2) {
444
+ margin-top: 0;
445
+ }
446
+ }
447
+ }
448
+ }
449
+
450
+ @include respond-to('<=laptop') {
451
+ margin-left: 24px;
452
+ &:nth-of-type(1) {
453
+ .content-container {
454
+ width: 364px;
455
+ :deep(.content-item) {
456
+ margin-left: 24px;
457
+ }
458
+ }
459
+ }
460
+ &:nth-of-type(3) {
461
+ .content-container {
462
+ width: 170px;
463
+ }
464
+ }
465
+ }
466
+
467
+ @include respond-to('pad_h') {
468
+ &:nth-of-type(1) {
469
+ .content-container {
470
+ width: 344px;
471
+ }
472
+ }
473
+ }
474
+ }
475
+
476
+ @include respond-to('pad_h') {
477
+ .content-left {
478
+ .item-sub {
479
+ max-width: 25%;
480
+ flex: 1 1 auto;
481
+ .content-container {
482
+ width: auto;
483
+ :deep(.content-item) {
484
+ width: 100%;
485
+ }
486
+ }
487
+ &:nth-of-type(1) {
488
+ max-width: 50%;
489
+ .content-container {
490
+ :deep(.content-item) {
491
+ width: calc(50% - 12px);
492
+ }
493
+ }
494
+ }
495
+ }
496
+ }
497
+ }
498
+ }
499
+
500
+ &.development {
501
+ .item-sub {
502
+ margin-left: 24px;
503
+ &:nth-of-type(1) {
504
+ margin-left: 0;
505
+ }
506
+
507
+ @include respond-to('>laptop') {
508
+ width: 200px;
509
+ }
510
+
511
+ @include respond-to('laptop') {
512
+ width: 170px;
513
+ }
514
+
515
+ @include respond-to('pad_h') {
516
+ width: 132px;
517
+ }
518
+ }
519
+
520
+ @include respond-to('pad_h') {
521
+ .content-left {
522
+ .item-sub {
523
+ flex: 1 1 auto;
524
+ .content-container {
525
+ width: auto;
526
+ :deep(.content-item) {
527
+ width: 100%;
528
+ .desc-container {
529
+ width: auto;
530
+ }
531
+ }
532
+ }
533
+ }
534
+ }
535
+ }
536
+ }
537
+
538
+ &.document {
539
+ .item-sub {
540
+ &:nth-of-type(1) {
541
+ .content-container {
542
+ :deep(.content-item) {
543
+ margin-right: 64px;
544
+ &:nth-child(-n + 4) {
545
+ margin-top: 0;
546
+ }
547
+ &:nth-of-type(4) {
548
+ margin-right: 0;
549
+ }
550
+
551
+ @include respond-to('<=laptop') {
552
+ margin-right: 24px;
553
+ }
554
+ }
555
+ @media (min-width: 1441px) and (max-width: 1505px) {
556
+ :deep(.content-item) {
557
+ margin-right: 40px;
558
+ }
559
+ }
560
+ @include respond-to('>laptop') {
561
+ width: 992px;
562
+ }
563
+ @include respond-to('laptop') {
564
+ width: 752px;
565
+ }
566
+ @include respond-to('pad_h') {
567
+ width: auto;
568
+ }
569
+ }
570
+ }
571
+ }
572
+
573
+ @include respond-to('pad_h') {
574
+ .content-left {
575
+ .item-sub {
576
+ max-width: 80%;
577
+ flex: 1 1 auto;
578
+ .content-container {
579
+ :deep(.content-item) {
580
+ width: calc(25% - 18px);
581
+ }
582
+ }
583
+ }
584
+ }
585
+ }
586
+ }
587
+
588
+ &.learn {
589
+ .item-sub {
590
+ margin-left: 48px;
591
+ &:nth-of-type(1) {
592
+ margin-left: 0;
593
+ }
594
+ &:nth-of-type(2) {
595
+ .content-container {
596
+ width: 448px;
597
+ :deep(.content-item) {
598
+ margin-left: 48px;
599
+ &:nth-child(2n + 1) {
600
+ margin-left: 0;
601
+ }
602
+ &:nth-of-type(2) {
603
+ margin-top: 0;
604
+ }
605
+ }
606
+ }
607
+ }
608
+
609
+ @include respond-to('<=laptop') {
610
+ margin-left: 24px;
611
+ &:nth-of-type(2) {
612
+ .content-container {
613
+ width: 364px;
614
+ :deep(.content-item) {
615
+ margin-left: 24px;
616
+ }
617
+ }
618
+ }
619
+ }
620
+
621
+ @include respond-to('pad_h') {
622
+ &:nth-of-type(2) {
623
+ .content-container {
624
+ width: auto;
625
+ }
626
+ }
627
+ }
628
+ }
629
+
630
+ @include respond-to('pad_h') {
631
+ .content-left {
632
+ .item-sub {
633
+ max-width: 25%;
634
+ flex: 1 1 auto;
635
+ .content-container {
636
+ width: auto;
637
+ :deep(.content-item) {
638
+ width: 100%;
639
+ }
640
+ }
641
+ &:nth-of-type(2) {
642
+ max-width: 50%;
643
+ .content-container {
644
+ :deep(.content-item) {
645
+ width: calc(50% - 12px);
646
+ }
647
+ }
648
+ }
649
+ }
650
+ }
651
+ }
652
+ }
653
+
654
+ &.approve {
655
+ .item-sub {
656
+ margin-left: 80px;
657
+ &:nth-of-type(1) {
658
+ margin-left: 0;
659
+ .content-container {
660
+ width: 440px;
661
+ :deep(.content-item) {
662
+ margin-left: 40px;
663
+ &:nth-child(2n + 1) {
664
+ margin-left: 0;
665
+ }
666
+ &:nth-of-type(2) {
667
+ margin-top: 0;
668
+ }
669
+ }
670
+ }
671
+ }
672
+
673
+ @include respond-to('<=laptop') {
674
+ margin-left: 24px;
675
+ &:nth-of-type(1) {
676
+ .content-container {
677
+ width: 364px;
678
+ :deep(.content-item) {
679
+ margin-left: 24px;
680
+ }
681
+ }
682
+ }
683
+ &:nth-of-type(2),
684
+ &:nth-of-type(3) {
685
+ .content-container {
686
+ width: 170px;
687
+ }
688
+ }
689
+ }
690
+
691
+ @include respond-to('pad_h') {
692
+ &:nth-of-type(n) {
693
+ .content-container {
694
+ width: auto;
695
+ }
696
+ }
697
+ }
698
+ }
699
+
700
+ @include respond-to('pad_h') {
701
+ .content-left {
702
+ .item-sub {
703
+ max-width: 20%;
704
+ flex: 1 1 auto;
705
+ .content-container {
706
+ width: auto;
707
+ :deep(.content-item) {
708
+ width: 100%;
709
+ }
710
+ }
711
+ &:nth-of-type(1) {
712
+ max-width: 40%;
713
+ .content-container {
714
+ :deep(.content-item) {
715
+ width: calc(50% - 12px);
716
+ }
717
+ }
718
+ }
719
+ }
720
+ }
721
+ }
722
+ }
723
+ &.approve-en {
724
+ .item-sub {
725
+ &:nth-child(n) {
726
+ .content-container {
727
+ width: 200px;
728
+ }
729
+ }
730
+
731
+ @include respond-to('<=laptop') {
732
+ &:nth-child(n) {
733
+ .content-container {
734
+ width: 170px;
735
+ }
736
+ }
737
+ }
738
+
739
+ @include respond-to('pad_h') {
740
+ &:nth-child(n) {
741
+ .content-container {
742
+ width: 132px;
743
+ }
744
+ }
745
+ }
746
+ }
747
+
748
+ @include respond-to('pad_h') {
749
+ .content-left {
750
+ .item-sub {
751
+ .content-container {
752
+ width: auto;
753
+ }
754
+ &:nth-of-type(1) {
755
+ max-width: 20%;
756
+ .content-container {
757
+ :deep(.content-item) {
758
+ width: 100%;
759
+ }
760
+ }
761
+ }
762
+ }
763
+ }
764
+ }
765
+ }
766
+
767
+ &.community {
768
+ .item-sub {
769
+ margin-left: 48px;
770
+ &:nth-of-type(1) {
771
+ margin-left: 0;
772
+ .content-container {
773
+ width: 696px;
774
+ :deep(.content-item) {
775
+ margin-left: 48px;
776
+ &:nth-child(3n + 1) {
777
+ margin-left: 0;
778
+ }
779
+ &:nth-child(-n + 3) {
780
+ margin-top: 0;
781
+ }
782
+ }
783
+ }
784
+ }
785
+
786
+ &:nth-of-type(2) {
787
+ .content-container {
788
+ width: 200px;
789
+ }
790
+ }
791
+
792
+ @include respond-to('<=laptop') {
793
+ margin-left: 24px;
794
+ &:nth-of-type(1) {
795
+ .content-container {
796
+ :deep(.content-item) {
797
+ margin-left: 24px;
798
+ }
799
+ }
800
+ }
801
+ }
802
+
803
+ @include respond-to('laptop') {
804
+ &:nth-of-type(1) {
805
+ .content-container {
806
+ width: 558px;
807
+ }
808
+ }
809
+ &:nth-of-type(2) {
810
+ .content-container {
811
+ width: 170px;
812
+ }
813
+ }
814
+ }
815
+
816
+ @include respond-to('pad_h') {
817
+ &:nth-of-type(1) {
818
+ .content-container {
819
+ width: auto;
820
+ }
821
+ }
822
+ &:nth-of-type(2) {
823
+ .content-container {
824
+ width: 132px;
825
+ }
826
+ }
827
+ }
828
+ }
829
+
830
+ @include respond-to('pad_h') {
831
+ .content-left {
832
+ .item-sub {
833
+ max-width: 20%;
834
+ flex: 1 1 auto;
835
+ .content-container {
836
+ width: auto;
837
+ :deep(.content-item) {
838
+ width: 100%;
839
+ }
840
+ }
841
+ &:nth-of-type(1) {
842
+ max-width: 60%;
843
+ .content-container {
844
+ :deep(.content-item) {
845
+ width: calc((100% / 3) - 18px);
846
+ }
847
+ }
848
+ }
849
+ }
850
+ }
851
+ }
852
+ }
853
+
854
+ &.update {
855
+ .item-sub {
856
+ margin-left: 48px;
857
+ .content-container {
858
+ width: 448px;
859
+ :deep(.content-item) {
860
+ margin-left: 48px;
861
+ &:nth-child(2n + 1) {
862
+ margin-left: 0;
863
+ }
864
+ &:nth-child(-n + 2) {
865
+ margin-top: 0;
866
+ }
867
+ }
868
+ }
869
+ &:nth-of-type(1) {
870
+ margin-left: 0;
871
+ }
872
+
873
+ @include respond-to('<=laptop') {
874
+ margin-left: 24px;
875
+ .content-container {
876
+ :deep(.content-item) {
877
+ margin-left: 24px;
878
+ }
879
+ }
880
+ }
881
+ @include respond-to('laptop') {
882
+ .content-container {
883
+ width: 364px;
884
+ }
885
+ }
886
+
887
+ @include respond-to('pad_h') {
888
+ .content-container {
889
+ width: auto;
890
+ }
891
+ }
892
+ }
893
+
894
+ @include respond-to('pad_h') {
895
+ .content-left {
896
+ .item-sub {
897
+ max-width: 40%;
898
+ flex: 1 1 auto;
899
+ .content-container {
900
+ :deep(.content-item) {
901
+ width: calc(50% - 24px);
902
+ }
903
+ }
904
+ }
905
+ }
906
+ }
907
+ }
908
+ }
909
+
910
+ .mindspore {
911
+ .content-left {
912
+ flex: 1;
913
+ }
914
+ .item-sub + .item-sub {
915
+ margin-left: 48px;
916
+ @include respond-to('laptop') {
917
+ margin-left: 32px;
918
+ }
919
+ @include respond-to('pad_h') {
920
+ margin-left: 16px;
921
+ }
922
+ }
923
+ .content-container {
924
+ flex-direction: column;
925
+ }
926
+
927
+ .nav-background-left {
928
+ left: 0;
929
+ top: 0;
930
+ width: 540px;
931
+ height: 360px;
932
+ }
933
+ .nav-background-right {
934
+ width: 643px;
935
+ height: 364px;
936
+ z-index: -1;
937
+ }
938
+ }
939
+
940
+ .openubmc {
941
+ &.download {
942
+ .item-sub {
943
+ margin-left: 80px;
944
+ &:nth-of-type(1) {
945
+ margin-left: 0;
946
+ .content-container {
947
+ width: 464px;
948
+ :deep(.content-item) {
949
+ margin-left: 64px;
950
+ &:nth-child(2n + 1) {
951
+ margin-left: 0;
952
+ }
953
+ &:nth-of-type(2) {
954
+ margin-top: 0;
955
+ }
956
+ }
957
+ }
958
+ }
959
+
960
+ @include respond-to('<=laptop') {
961
+ margin-left: 24px;
962
+ &:nth-of-type(1) {
963
+ .content-container {
964
+ width: 364px;
965
+ :deep(.content-item) {
966
+ margin-left: 24px;
967
+ }
968
+ }
969
+ }
970
+ &:nth-of-type(3) {
971
+ .content-container {
972
+ width: 170px;
973
+ }
974
+ }
975
+ }
976
+
977
+ @include respond-to('pad_h') {
978
+ &:nth-of-type(1) {
979
+ .content-container {
980
+ width: 344px;
981
+ }
982
+ }
983
+ }
984
+ }
985
+
986
+ @include respond-to('pad_h') {
987
+ .content-left {
988
+ .item-sub {
989
+ max-width: 25%;
990
+ flex: 1 1 auto;
991
+ .content-container {
992
+ width: auto;
993
+ :deep(.content-item) {
994
+ width: 100%;
995
+ }
996
+ }
997
+ &:nth-of-type(1) {
998
+ max-width: 50%;
999
+ .content-container {
1000
+ :deep(.content-item) {
1001
+ width: calc(50% - 12px);
1002
+ }
1003
+ }
1004
+ }
1005
+ }
1006
+ }
1007
+ }
1008
+ }
1009
+ &.development,
1010
+ &.learn,
1011
+ &.support,
1012
+ &.trends {
1013
+ .content-item {
1014
+ margin-left: 80px;
1015
+ margin-top: 0;
1016
+ &:first-of-type {
1017
+ margin-left: 0;
1018
+ }
1019
+ }
1020
+ }
1021
+ &.docs {
1022
+ .item-sub {
1023
+ &:nth-of-type(1) {
1024
+ .content-container {
1025
+ :deep(.content-item) {
1026
+ margin-right: 64px;
1027
+ &:nth-child(-n + 4) {
1028
+ margin-top: 0;
1029
+ }
1030
+ &:nth-of-type(4) {
1031
+ margin-right: 0;
1032
+ }
1033
+
1034
+ @include respond-to('<=laptop') {
1035
+ margin-right: 24px;
1036
+ }
1037
+ }
1038
+ @media (min-width: 1441px) and (max-width: 1505px) {
1039
+ :deep(.content-item) {
1040
+ margin-right: 40px;
1041
+ }
1042
+ }
1043
+ @include respond-to('>laptop') {
1044
+ width: 992px;
1045
+ }
1046
+ @include respond-to('laptop') {
1047
+ width: 752px;
1048
+ }
1049
+ @include respond-to('pad_h') {
1050
+ width: auto;
1051
+ }
1052
+ }
1053
+ }
1054
+ }
1055
+
1056
+ @include respond-to('pad_h') {
1057
+ .content-left {
1058
+ .item-sub {
1059
+ max-width: 80%;
1060
+ flex: 1 1 auto;
1061
+ .content-container {
1062
+ :deep(.content-item) {
1063
+ width: calc(25% - 18px);
1064
+ }
1065
+ }
1066
+ }
1067
+ }
1068
+ }
1069
+ }
1070
+ &.community {
1071
+ .item-sub {
1072
+ margin-left: 48px;
1073
+ .content-container {
1074
+ width: 448px;
1075
+ :deep(.content-item) {
1076
+ margin-left: 48px;
1077
+ &:nth-child(2n + 1) {
1078
+ margin-left: 0;
1079
+ }
1080
+ &:nth-child(-n + 2) {
1081
+ margin-top: 0;
1082
+ }
1083
+ }
1084
+ }
1085
+ &:nth-of-type(1) {
1086
+ margin-left: 0;
1087
+ }
1088
+
1089
+ @include respond-to('<=laptop') {
1090
+ margin-left: 24px;
1091
+ .content-container {
1092
+ :deep(.content-item) {
1093
+ margin-left: 24px;
1094
+ }
1095
+ }
1096
+ }
1097
+ @include respond-to('laptop') {
1098
+ .content-container {
1099
+ width: 364px;
1100
+ }
1101
+ }
1102
+
1103
+ @include respond-to('pad_h') {
1104
+ .content-container {
1105
+ width: auto;
1106
+ }
1107
+ }
1108
+ }
1109
+
1110
+ @include respond-to('pad_h') {
1111
+ .content-left {
1112
+ .item-sub {
1113
+ max-width: 40%;
1114
+ flex: 1 1 auto;
1115
+ .content-container {
1116
+ :deep(.content-item) {
1117
+ width: calc(50% - 24px);
1118
+ }
1119
+ }
1120
+ }
1121
+ }
1122
+ }
1123
+ }
1124
+ }
1125
+ </style>