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

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