@opendesign-plus-test/components 0.0.1-rc.61 → 0.0.1-rc.63

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 (82) hide show
  1. package/dist/chunk-OElCookieNotice.cjs.js +1 -1
  2. package/dist/chunk-OElCookieNotice.es.js +148 -148
  3. package/dist/components/activity/OActivityApproval.vue.d.ts +8 -8
  4. package/dist/components/activity/OActivityForm.vue.d.ts +6 -6
  5. package/dist/components/activity/OActivityMyCalendar.vue.d.ts +8 -4
  6. package/dist/components/activity/index.d.ts +17 -15
  7. package/dist/components/{OPlusConfigProvider.vue.d.ts → config-provider/OPlusConfigProvider.vue.d.ts} +2 -2
  8. package/dist/components/config-provider/index.d.ts +27 -0
  9. package/dist/components/cookie-notice/OCookieNotice.vue.d.ts +17 -0
  10. package/dist/components/cookie-notice/index.d.ts +53 -0
  11. package/dist/components/{OFooter.vue.d.ts → footer/OFooter.vue.d.ts} +3 -3
  12. package/dist/components/footer/index.d.ts +89 -0
  13. package/dist/components/header/index.d.ts +1 -0
  14. package/dist/components/{OLanguageSwitcher.vue.d.ts → header-language-switcher/OHeaderLanguageSwitcher.vue.d.ts} +5 -5
  15. package/dist/components/header-language-switcher/index.d.ts +90 -0
  16. package/dist/components/{OHeaderSearch.vue.d.ts → header-search/OHeaderSearch.vue.d.ts} +165 -145
  17. package/dist/components/header-search/index.d.ts +607 -0
  18. package/dist/components/header-source-code/OHeaderSourceCode.vue.d.ts +18 -0
  19. package/dist/components/header-source-code/index.d.ts +23 -0
  20. package/dist/components/header-theme/OHeaderTheme.vue.d.ts +25 -0
  21. package/dist/components/header-theme/index.d.ts +50 -0
  22. package/dist/components/{OHeaderUser.vue.d.ts → header-user/OHeaderUser.vue.d.ts} +7 -7
  23. package/dist/components/header-user/index.d.ts +53 -0
  24. package/dist/components/meeting/OMeetingCalendar.vue.d.ts +2 -2
  25. package/dist/components/meeting/OMeetingForm.vue.d.ts +4 -4
  26. package/dist/components/meeting/OMeetingMyCalendar.vue.d.ts +8 -4
  27. package/dist/components/meeting/OMeetingPlayback.vue.d.ts +4 -4
  28. package/dist/components/meeting/components/OMeetingPlaybackVideo.vue.d.ts +1 -1
  29. package/dist/components/meeting/index.d.ts +11 -9
  30. package/dist/components/meeting/types.d.ts +3 -1
  31. package/dist/components/meeting/utils.d.ts +2 -1
  32. package/dist/components/search/OSearchInput.vue.d.ts +54 -34
  33. package/dist/components/search/index.d.ts +32 -22
  34. package/dist/components/search/internal/SearchImageInput.vue.d.ts +41 -21
  35. package/dist/components/search/internal/SearchPanel.vue.d.ts +1 -1
  36. package/dist/components/{OSection.vue.d.ts → section/OSection.vue.d.ts} +4 -4
  37. package/dist/components/section/index.d.ts +47 -0
  38. package/dist/components.cjs.js +36 -36
  39. package/dist/components.css +1 -1
  40. package/dist/components.es.js +14568 -14413
  41. package/dist/index.d.ts +9 -14
  42. package/docs/design.md +2 -2
  43. package/package.json +7 -7
  44. package/scripts/generate-components-index.js +2 -44
  45. package/src/assets/styles/element-plus.scss +2 -0
  46. package/src/components/common/ClientOnly.vue +13 -0
  47. package/src/components/{OPlusConfigProvider.vue → config-provider/OPlusConfigProvider.vue} +2 -2
  48. package/src/components/config-provider/index.ts +10 -0
  49. package/src/components/{OCookieNotice.vue → cookie-notice/OCookieNotice.vue} +1 -1
  50. package/src/components/cookie-notice/index.ts +10 -0
  51. package/src/components/element-plus/OElCookieNotice.vue +1 -1
  52. package/src/components/events/OEventsApply.vue +87 -1
  53. package/src/components/events/OEventsList.vue +47 -2
  54. package/src/components/{OFooter.vue → footer/OFooter.vue} +4 -4
  55. package/src/components/footer/index.ts +10 -0
  56. package/src/components/header/index.ts +2 -0
  57. package/src/components/header-language-switcher/index.ts +10 -0
  58. package/src/components/{OHeaderSearch.vue → header-search/OHeaderSearch.vue} +4 -4
  59. package/src/components/header-search/index.ts +10 -0
  60. package/src/components/{OSourceCode.vue → header-source-code/OHeaderSourceCode.vue} +2 -2
  61. package/src/components/header-source-code/index.ts +10 -0
  62. package/src/components/{OThemeSwitcher.vue → header-theme/OHeaderTheme.vue} +4 -4
  63. package/src/components/header-theme/index.ts +10 -0
  64. package/src/components/{OHeaderUser.vue → header-user/OHeaderUser.vue} +4 -4
  65. package/src/components/header-user/index.ts +10 -0
  66. package/src/components/meeting/OMeetingCalendar.vue +7 -5
  67. package/src/components/meeting/OMeetingForm.vue +14 -12
  68. package/src/components/meeting/OMeetingMyCalendar.vue +3 -12
  69. package/src/components/meeting/components/OMeetingCalendarList.vue +3 -2
  70. package/src/components/meeting/components/OMeetingDetail.vue +2 -2
  71. package/src/components/meeting/types.ts +3 -1
  72. package/src/components/meeting/utils.ts +4 -4
  73. package/src/components/{OSection.vue → section/OSection.vue} +1 -1
  74. package/src/components/section/index.ts +10 -0
  75. package/src/i18n/zh.ts +2 -0
  76. package/src/index.ts +9 -38
  77. package/dist/components/OCookieNotice.vue.d.ts +0 -17
  78. package/dist/components/OSourceCode.vue.d.ts +0 -18
  79. package/dist/components/OThemeSwitcher.vue.d.ts +0 -25
  80. package/dist/components/meeting/components/OMeetingCalendarSelector.vue.d.ts +0 -664
  81. package/src/components/common/ClientOnlyWrapper.ts +0 -21
  82. /package/src/components/{OLanguageSwitcher.vue → header-language-switcher/OHeaderLanguageSwitcher.vue} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,21 +1,16 @@
1
- import { default as OCookieNotice } from './components/OCookieNotice.vue';
2
- import { default as OFooter } from './components/OFooter.vue';
3
- import { default as OHeaderSearch } from './components/OHeaderSearch.vue';
4
- import { default as OHeaderUser } from './components/OHeaderUser.vue';
5
- import { default as OLanguageSwitcher } from './components/OLanguageSwitcher.vue';
6
- import { default as OPlusConfigProvider } from './components/OPlusConfigProvider.vue';
7
- import { default as OSection } from './components/OSection.vue';
8
- import { default as OSourceCode } from './components/OSourceCode.vue';
9
- import { default as OThemeSwitcher } from './components/OThemeSwitcher.vue';
10
- export { OCookieNotice, OFooter, OHeaderSearch, OHeaderUser, OLanguageSwitcher, OPlusConfigProvider, OSection, OSourceCode, OThemeSwitcher };
11
1
  export * from './components/activity';
12
2
  export * from './components/banner';
3
+ export * from './components/config-provider';
4
+ export * from './components/cookie-notice';
13
5
  export * from './components/element-plus';
14
6
  export * from './components/events';
7
+ export * from './components/footer';
15
8
  export * from './components/header';
9
+ export * from './components/header-language-switcher';
10
+ export * from './components/header-search';
11
+ export * from './components/header-source-code';
12
+ export * from './components/header-theme';
13
+ export * from './components/header-user';
16
14
  export * from './components/meeting';
17
15
  export * from './components/search';
18
- declare const _default: {
19
- install: (app: any) => void;
20
- };
21
- export default _default;
16
+ export * from './components/section';
package/docs/design.md CHANGED
@@ -21,7 +21,7 @@ components
21
21
  | openEuler社区页头| OHeader_openEuler.vue | 11月完成 ||
22
22
  | openEuler社区页脚| OFooter_openEuler.vue | 11月完成 ||
23
23
  | 悬浮按钮| OFloatingButton.vue | 11月完成 ||
24
- | 语言切换| OLanguageSwitcher.vue | 11月完成 |调用useLocale的能力|
25
- | 风格切换| OThemeSwitcher.vue | 11月完成 |调用useTheme的能力|
24
+ | 语言切换| OHeaderLanguageSwitcher.vue | 11月完成 |调用useLocale的能力|
25
+ | 风格切换| OHeaderTheme.vue | 11月完成 |调用useTheme的能力|
26
26
  | 导航用户信息| OUserInfo.vue | 11月完成 |调用useLogin的能力|
27
27
  | 隐私管理| OCookieNotice.vue | 11月完成 ||
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendesign-plus-test/components",
3
- "version": "0.0.1-rc.61",
3
+ "version": "0.0.1-rc.63",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -25,26 +25,26 @@
25
25
  "require": "./dist/components.css"
26
26
  }
27
27
  },
28
- "dependencies": {
29
- "@opensig/opendesign": "1.2.3-sp1",
30
- "@vueuse/core": "10.11.1",
28
+ "peerDependencies": {
29
+ "@opensig/opendesign": "1.2.4",
30
+ "@vueuse/core": "^14.0.0",
31
31
  "aos": "^2.3.4",
32
32
  "dayjs": "^1.11.13",
33
33
  "video.js": "^8.23.7",
34
34
  "vue-dompurify-html": "^3.1.2",
35
+ "vue": "^3.5.13",
36
+ "element-plus": "2.13.1",
35
37
  "@opendesign-plus/composables": "0.0.1-rc.8",
36
38
  "@opendesign-plus/styles": "0.0.1-rc.2"
37
39
  },
38
40
  "devDependencies": {
39
- "@vitejs/plugin-vue": "^5.1.0",
40
- "element-plus": "^2.13.1",
41
+ "@vitejs/plugin-vue": "^5.2.1",
41
42
  "sass": "^1.71.1",
42
43
  "typescript": "~5.8.2",
43
44
  "unplugin-element-plus": "^0.11.2",
44
45
  "unplugin-icons": "^0.14.1",
45
46
  "vite": "^6.2.3",
46
47
  "vite-plugin-dts": "^4.5.3",
47
- "vue": "^3.4.0",
48
48
  "vue-tsc": "2.2.8"
49
49
  },
50
50
  "scripts": {
@@ -17,11 +17,6 @@ function generateComponentsIndex() {
17
17
  // 读取组件目录
18
18
  const files = fs.readdirSync(componentsDir);
19
19
 
20
- // 过滤出.vue文件(不包含子目录)
21
- const vueFiles = files.filter(file =>
22
- file.endsWith('.vue') && !fs.statSync(path.join(componentsDir, file)).isDirectory()
23
- );
24
-
25
20
  // 扫描子目录,查找包含 index.ts 的目录
26
21
  const subDirs = files.filter(file => {
27
22
  const fullPath = path.join(componentsDir, file)
@@ -29,59 +24,22 @@ function generateComponentsIndex() {
29
24
  fs.existsSync(path.join(fullPath, 'index.ts'))
30
25
  })
31
26
 
32
- console.log(`发现 ${ vueFiles.length } 个组件文件`)
33
27
  console.log(`发现 ${ subDirs.length } 个子目录: ${ subDirs.join(', ') }`)
34
28
 
35
- // 生成 .vue 文件的导入语句
36
- const vueImportStatements = vueFiles.map(file => {
37
- const componentName = file.replace('.vue', '');
38
- return `import ${componentName} from './components/${file}';`;
39
- }).join('\n');
40
-
41
29
  // 生成子目录的重新导出语句
42
30
  const subDirExportStatements = subDirs.map(dir => {
43
31
  return `export * from './components/${ dir }';`
44
32
  }).join('\n')
45
33
 
46
- // 生成组件列表
47
- const componentNames = vueFiles.map(file => file.replace('.vue', ''));
48
- const componentsObject = componentNames.map(name => ` ${name}`).join(',\n');
49
-
50
- // 生成导出语句
51
- const exportStatement = componentNames.length > 0
52
- ? `export { ${ componentNames.join(', ') } };`
53
- : ''
54
-
55
34
  // 生成完整的index.ts内容
56
35
  const indexContent = `// OpenDesignPlus Components 库入口文件
57
36
  // 此文件由 scripts/generate-components-index.js 自动生成
58
-
59
- ${ vueImportStatements }
60
-
61
- ${ componentsObject.length > 0 ? `// 导出组件
62
- const components = {
63
- ${componentsObject}
64
- };` : '' }
65
-
66
- ${ exportStatement ? `// 导出单个组件\n${ exportStatement }` : '' }
67
-
68
- ${ subDirExportStatements ? `// 重新导出子目录中的组件\n${ subDirExportStatements }` : '' }
69
-
70
- // 默认导出(用于Vue插件安装)
71
- export default {
72
- install: (app: any) => {
73
- ${ componentsObject.length > 0 ? `// 注册所有组件
74
- Object.entries(components).forEach(([name, component]) => {
75
- app.component(name, component);
76
- });` : '' }
77
- }
78
- };
79
- `;
37
+ ${ subDirExportStatements }
38
+ `.trim();
80
39
 
81
40
  // 写入文件
82
41
  fs.writeFileSync(indexFilePath, indexContent, 'utf-8');
83
42
  console.log(`组件索引文件已生成: ${indexFilePath}`);
84
- console.log(`成功导出 ${ componentNames.length } 个 .vue 组件`)
85
43
  if (subDirs.length > 0) {
86
44
  console.log(`成功重新导出 ${ subDirs.length } 个子目录: ${ subDirs.join(', ') }`)
87
45
  }
@@ -169,6 +169,8 @@
169
169
 
170
170
  .el-input__wrapper {
171
171
  background: var(--o-color-fill2);
172
+ box-shadow: none;
173
+ border: 1px solid var(--el-input-border-color);
172
174
  }
173
175
 
174
176
  .el-select__wrapper {
@@ -0,0 +1,13 @@
1
+ <script setup lang="ts">
2
+ import { ref, onMounted } from 'vue';
3
+
4
+ const isClient = ref(false);
5
+
6
+ onMounted(() => {
7
+ isClient.value = true;
8
+ });
9
+ </script>
10
+
11
+ <template>
12
+ <slot v-if="isClient" />
13
+ </template>
@@ -2,8 +2,8 @@
2
2
  import { computed, provide, reactive } from 'vue';
3
3
 
4
4
  import { OConfigProvider } from '@opensig/opendesign';
5
- import zhCN from '@opensig/opendesign/es/locale/lang/zh-cn.mjs';
6
- import enUS from '@opensig/opendesign/es/locale/lang/en-us.mjs';
5
+ import zhCN from '@opensig/opendesign/es/locale/lang/zh-cn';
6
+ import enUS from '@opensig/opendesign/es/locale/lang/en-us';
7
7
 
8
8
  import { configProviderInjectKey } from '@/shared/provide';
9
9
 
@@ -0,0 +1,10 @@
1
+ import _OPlusConfigProvider from './OPlusConfigProvider.vue';
2
+ import type { App } from 'vue';
3
+
4
+ const OPlusConfigProvider = Object.assign(_OPlusConfigProvider, {
5
+ install(app: App) {
6
+ app.component('OPlusConfigProvider', _OPlusConfigProvider);
7
+ },
8
+ });
9
+
10
+ export { OPlusConfigProvider };
@@ -1,6 +1,6 @@
1
1
  <script lang="ts" setup>
2
2
  import { ref, onMounted, computed, nextTick, watch } from 'vue';
3
- import ClientOnly from './common/ClientOnlyWrapper';
3
+ import ClientOnly from '../common/ClientOnly.vue';
4
4
  import { useScreen } from '@opendesign-plus/composables';
5
5
  import { useI18n } from '@/i18n';
6
6
  import { DialogActionT, OButton, ODialog, OIcon, OIconClose, OSwitch } from '@opensig/opendesign';
@@ -0,0 +1,10 @@
1
+ import _OCookieNotice from './OCookieNotice.vue';
2
+ import type { App } from 'vue';
3
+
4
+ const OCookieNotice = Object.assign(_OCookieNotice, {
5
+ install(app: App) {
6
+ app.component('OCookieNotice', _OCookieNotice);
7
+ },
8
+ });
9
+
10
+ export { OCookieNotice };
@@ -1,6 +1,6 @@
1
1
  <script lang="ts" setup>
2
2
  import { ref, onMounted, computed, nextTick, watch } from 'vue';
3
- import ClientOnly from '../common/ClientOnlyWrapper';
3
+ import ClientOnly from '../common/ClientOnly.vue';
4
4
  import { useScreen } from '@opendesign-plus/composables';
5
5
  import { useI18n } from '@/i18n';
6
6
  import { ElButton, ElDialog, ElSwitch, ElIcon, ElDivider } from 'element-plus';
@@ -103,6 +103,18 @@ defineProps<EventsApplyPropsT>();
103
103
  --height: var(--o-gap-6);
104
104
  height: calc(100% + var(--height) - 40px); // 延伸到下一个元素
105
105
  background-color: var(--o-color-control4);
106
+ @include respond('laptop') {
107
+ --height: var(--o-gap-5);
108
+ }
109
+ @include respond('pad_h') {
110
+ --height: var(--o-gap-4);
111
+ }
112
+ @include respond('pad_v') {
113
+ --height: var(--o-gap-5);
114
+ }
115
+ @include respond('phone') {
116
+ --height: var(--o-gap-5);
117
+ }
106
118
  }
107
119
 
108
120
  // 最后一个序号不显示连接线(倒数第2个子元素,因为最后一个是step-item)
@@ -117,12 +129,38 @@ defineProps<EventsApplyPropsT>();
117
129
  grid-template-columns: repeat(3, 1fr); // 桌面端:3列
118
130
  grid-template-rows: repeat(3, auto); // 桌面端:3行
119
131
  gap: var(--o-gap-6);
132
+ @include respond('laptop') {
133
+ gap: var(--o-gap-5);
134
+ }
135
+ @include respond('pad_h') {
136
+ gap: var(--o-gap-4);
137
+ }
138
+ @include respond('pad_v') {
139
+ gap: var(--o-gap-5);
140
+ }
141
+ @include respond('phone') {
142
+ gap: var(--o-gap-5);
143
+ }
120
144
 
121
145
  // 移动端:2列布局(序号列 + 内容列)
122
146
  @include respond('<=pad_v') {
123
147
  grid-template-columns: auto 1fr; // 第1列自适应,第2列占满
124
148
  grid-template-rows: auto; // 行数自动
125
149
  gap: var(--o-gap-3); // 列间距12px,行间距12px
150
+ row-gap: var(--o-gap-6); // 行间距
151
+
152
+ @include respond('laptop') {
153
+ row-gap: var(--o-gap-5);
154
+ }
155
+ @include respond('pad_h') {
156
+ row-gap: var(--o-gap-4);
157
+ }
158
+ @include respond('pad_v') {
159
+ row-gap: var(--o-gap-3);
160
+ }
161
+ @include respond('phone') {
162
+ row-gap: var(--o-gap-3);
163
+ }
126
164
  }
127
165
 
128
166
  .step-item {
@@ -132,6 +170,12 @@ defineProps<EventsApplyPropsT>();
132
170
  flex-direction: column; // 垂直排列子元素
133
171
  --idx-size: 20px;
134
172
  --idx-gap: var(--o-gap-3);
173
+ @include respond('laptop') {
174
+ --idx-gap: var(--o-gap-2);
175
+ }
176
+ @include respond('pad_h') {
177
+ --idx-gap: var(--o-gap-2);
178
+ }
135
179
  // 移动端:强制在第2列显示
136
180
  @include respond('<=pad_v') {
137
181
  grid-column: 2 !important;
@@ -146,6 +190,14 @@ defineProps<EventsApplyPropsT>();
146
190
  display: flex;
147
191
  align-items: center;
148
192
  @include h2;
193
+ @include respond('laptop') {
194
+ margin-bottom: var(--o-gap-3);
195
+ padding: var(--o-gap-4) var(--o-gap-5) 0 var(--o-gap-5);
196
+ }
197
+ @include respond('pad_h') {
198
+ margin-bottom: var(--o-gap-2);
199
+ padding: var(--o-gap-3) var(--o-gap-4) 0 var(--o-gap-4);
200
+ }
149
201
  @include respond('pad_v') {
150
202
  margin-bottom: 0;
151
203
  padding: var(--o-gap-3) var(--o-gap-4);
@@ -183,6 +235,12 @@ defineProps<EventsApplyPropsT>();
183
235
  color: var(--o-color-info2);
184
236
  padding: 0 var(--o-gap-6) var(--o-gap-4) var(--o-gap-6);
185
237
  @include tip1;
238
+ @include respond('laptop') {
239
+ padding: 0 var(--o-gap-5) var(--o-gap-3) var(--o-gap-5);
240
+ }
241
+ @include respond('pad_h') {
242
+ padding: 0 var(--o-gap-4) var(--o-gap-3) var(--o-gap-4);
243
+ }
186
244
  @include respond('pad_v') {
187
245
  padding: var(--o-gap-3) var(--o-gap-4);
188
246
  }
@@ -215,6 +273,12 @@ defineProps<EventsApplyPropsT>();
215
273
  font-size: 16px;
216
274
  margin-right: var(--o-gap-4);
217
275
  color: #fff;
276
+ @include respond('laptop') {
277
+ margin-right: var(--o-gap-3);
278
+ }
279
+ @include respond('pad_h') {
280
+ margin-right: var(--o-gap-2);
281
+ }
218
282
  @include respond('pad_v') {
219
283
  margin-right: var(--o-gap-2);
220
284
  }
@@ -237,11 +301,19 @@ defineProps<EventsApplyPropsT>();
237
301
  --padding-left: var(--o-gap-4);
238
302
  padding-left: calc(var(--o-gap-4) + var(--o-gap-4));
239
303
  color: rgba(255, 255, 255, 0.8);
304
+ @include respond('laptop') {
305
+ --padding-left: var(--o-gap-3);
306
+ }
307
+ @include respond('pad_h') {
308
+ --padding-left: var(--o-gap-2);
309
+ }
240
310
  @include respond('pad_v') {
241
311
  padding-left: var(--o-gap-5);
312
+ color: var(--o-color-info2);
242
313
  }
243
314
  @include respond('phone') {
244
315
  padding-left: var(--o-gap-5);
316
+ color: var(--o-color-info2);
245
317
  }
246
318
  }
247
319
  }
@@ -335,9 +407,23 @@ defineProps<EventsApplyPropsT>();
335
407
 
336
408
  .img-wrapper {
337
409
  height: 280px;
338
- width: calc(100% - var(--o-gap-6) * 2);
410
+ --width: var(--o-gap-6);
411
+ width: calc(100% - var(--width) * 2);
339
412
  margin-left: auto;
340
413
  margin-right: auto;
414
+ @include respond('laptop') {
415
+ --width: var(--o-gap-5);
416
+ }
417
+ @include respond('pad_h') {
418
+ --width: var(--o-gap-4);
419
+ height: 220px;
420
+ }
421
+ @include respond('pad_v') {
422
+ --width: var(--o-gap-5);
423
+ }
424
+ @include respond('phone') {
425
+ --width: var(--o-gap-5);
426
+ }
341
427
  }
342
428
 
343
429
  .img-wrapper-phone {
@@ -198,7 +198,16 @@ const list = computed(() => {
198
198
  padding: var(--o-gap-5) var(--o-gap-6);
199
199
  gap: var(--o-gap-3) var(--o-gap-2);
200
200
  @include text1;
201
- @include respond('<=pad_v') {
201
+ @include respond('laptop') {
202
+ padding: var(--o-gap-4) var(--o-gap-5);
203
+ }
204
+ @include respond('pad_h') {
205
+ padding: var(--o-gap-4) var(--o-gap-5);
206
+ }
207
+ @include respond('pad_v') {
208
+ padding: var(--o-gap-3) var(--o-gap-4);
209
+ }
210
+ @include respond('phone') {
202
211
  padding: var(--o-gap-3) var(--o-gap-4);
203
212
  }
204
213
 
@@ -212,6 +221,12 @@ const list = computed(() => {
212
221
  flex-shrink: 0;
213
222
  margin-right: var(--o-gap-5);
214
223
  font-weight: 500;
224
+ @include respond('laptop') {
225
+ margin-right: var(--o-gap-4);
226
+ }
227
+ @include respond('pad_h') {
228
+ margin-right: var(--o-gap-3);
229
+ }
215
230
  @include respond('pad_v') {
216
231
  margin-right: var(--o-gap-4);
217
232
  }
@@ -219,7 +234,6 @@ const list = computed(() => {
219
234
  margin-right: var(--o-gap-4);
220
235
  }
221
236
  }
222
-
223
237
  .o-toggle {
224
238
  --toggle-size: 32px;
225
239
  --toggle-padding: 3px 15px;
@@ -253,6 +267,14 @@ const list = computed(() => {
253
267
  grid-template-columns: repeat(1, 1fr);
254
268
  container-type: inline-size;
255
269
  }
270
+ @include respond('laptop') {
271
+ margin-top: var(--o-gap-5);
272
+ gap: var(--o-gap-5);
273
+ }
274
+ @include respond('pad_h') {
275
+ margin-top: var(--o-gap-4);
276
+ gap: var(--o-gap-4);
277
+ }
256
278
  @include respond('pad_v') {
257
279
  margin-top: var(--o-gap-4);
258
280
  gap: var(--o-gap-3);
@@ -322,6 +344,10 @@ const list = computed(() => {
322
344
  @include respond('<=pad_v') {
323
345
  --tag-padding: var(--o-gap-1);
324
346
  }
347
+ @include respond('phone') {
348
+ top: var(--o-gap-2);
349
+ right: var(--o-gap-2);
350
+ }
325
351
  }
326
352
 
327
353
  .event-name {
@@ -351,6 +377,12 @@ const list = computed(() => {
351
377
  }
352
378
 
353
379
  @include text1;
380
+ @include respond('laptop') {
381
+ margin-top: var(--o-gap-4);
382
+ }
383
+ @include respond('pad_h') {
384
+ margin-top: var(--o-gap-3);
385
+ }
354
386
  @include respond('pad_v') {
355
387
  margin-top: var(--o-gap-2);
356
388
  }
@@ -382,6 +414,19 @@ const list = computed(() => {
382
414
  --pagination-item-bg-color-current: var(--o-color-primary1);
383
415
  --pagination-item-color-current: #fff;
384
416
 
417
+ @include respond('laptop') {
418
+ margin-top: var(--o-gap-5);
419
+ }
420
+ @include respond('pad_h') {
421
+ margin-top: var(--o-gap-4);
422
+ }
423
+ @include respond('pad_v') {
424
+ margin-top: var(--o-gap-4);
425
+ }
426
+ @include respond('phone') {
427
+ margin-top: var(--o-gap-4);
428
+ }
429
+
385
430
  .o-pagination-wrap {
386
431
  justify-content: flex-end;
387
432
  }
@@ -1,7 +1,7 @@
1
1
  <script setup lang="ts">
2
2
  import { ODivider } from '@opensig/opendesign';
3
3
 
4
- import ContentWrapper from './common/ContentWrapper.vue';
4
+ import ContentWrapper from '../common/ContentWrapper.vue';
5
5
 
6
6
  const props = withDefaults(defineProps<{
7
7
  simple: any;
@@ -34,9 +34,9 @@ const props = withDefaults(defineProps<{
34
34
  <ContentWrapper v-if="$slots.atom || props.atom">
35
35
  <slot name="atom">
36
36
  <div v-if="props.atom" class="atom">
37
- <p class="atom-text">{{ props.atom[props.lang].title }}</p>
38
- <a :href="props.atom[props.lang].href" target="_blank">
39
- <img :src="props.atom[props.lang].img" class="atom-logo" alt="" />
37
+ <p class="atom-text">{{ props.atom[props.lang]?.title }}</p>
38
+ <a :href="props.atom[props.lang]?.href" target="_blank">
39
+ <img :src="props.atom[props.lang]?.img" class="atom-logo" alt="" />
40
40
  </a>
41
41
  </div>
42
42
  <ODivider class="atom-divider" />
@@ -0,0 +1,10 @@
1
+ import _OFooter from './OFooter.vue';
2
+ import type { App } from 'vue';
3
+
4
+ const OFooter = Object.assign(_OFooter, {
5
+ install(app: App) {
6
+ app.component('OFooter', _OFooter);
7
+ },
8
+ });
9
+
10
+ export { OFooter };
@@ -7,10 +7,12 @@ const OHeader = Object.assign(_OHeader, {
7
7
  app.component('OHeader', _OHeader);
8
8
  },
9
9
  });
10
+
10
11
  const OHeaderMobile = Object.assign(_OHeaderMobile, {
11
12
  install(app: App) {
12
13
  app.component('OHeaderMobile', _OHeaderMobile);
13
14
  },
14
15
  });
15
16
 
17
+ export * from './types';
16
18
  export { OHeader, OHeaderMobile };
@@ -0,0 +1,10 @@
1
+ import _OHeaderLanguageSwitcher from './OHeaderLanguageSwitcher.vue';
2
+ import type { App } from 'vue';
3
+
4
+ const OHeaderLanguageSwitcher = Object.assign(_OHeaderLanguageSwitcher, {
5
+ install(app: App) {
6
+ app.component('OHeaderLanguageSwitcher', _OHeaderLanguageSwitcher);
7
+ },
8
+ });
9
+
10
+ export { OHeaderLanguageSwitcher };
@@ -4,15 +4,15 @@ import { OIcon } from '@opensig/opendesign';
4
4
  import { onClickOutside, useDebounceFn } from '@vueuse/core';
5
5
  import { useScreen } from '@opendesign-plus/composables';
6
6
 
7
- import SearchImageInput from './search/internal/SearchImageInput.vue';
8
- import SearchPanel from './search/internal/SearchPanel.vue';
9
- import { useSearchHistory } from './search/composables/useSearchHistory';
7
+ import SearchImageInput from '../search/internal/SearchImageInput.vue';
8
+ import SearchPanel from '../search/internal/SearchPanel.vue';
9
+ import { useSearchHistory } from '../search/composables/useSearchHistory';
10
10
  import { useI18n } from '@/i18n';
11
11
  import type {
12
12
  OSearchPayload,
13
13
  OSearchRecommendItem,
14
14
  OSearchUploadImageFn,
15
- } from './search/types';
15
+ } from '../search/types';
16
16
 
17
17
  import IconSearch from '~icons/components/icon-header-search.svg';
18
18
  import IconBack from '~icons/components/icon-header-back.svg';
@@ -0,0 +1,10 @@
1
+ import _OHeaderSearch from './OHeaderSearch.vue';
2
+ import type { App } from 'vue';
3
+
4
+ const OHeaderSearch = Object.assign(_OHeaderSearch, {
5
+ install(app: App) {
6
+ app.component('OHeaderSearch', _OHeaderSearch);
7
+ },
8
+ });
9
+
10
+ export { OHeaderSearch };
@@ -4,14 +4,14 @@ import { OIcon, ODropdown, ODropdownItem } from '@opensig/opendesign';
4
4
 
5
5
  import IconChevronDown from '~icons/components/icon-chevron-down.svg';
6
6
 
7
- interface CodeItemT {
7
+ export interface CodeItemT {
8
8
  label: string;
9
9
  href: string;
10
10
  icon?: string;
11
11
  target?: string;
12
12
  }
13
13
 
14
- interface CodePropsT {
14
+ export interface CodePropsT {
15
15
  title?: string;
16
16
  options?: CodeItemT[];
17
17
  href?: string;
@@ -0,0 +1,10 @@
1
+ import _OHeaderSourceCode from './OHeaderSourceCode.vue';
2
+ import type { App } from 'vue';
3
+
4
+ const OHeaderSourceCode = Object.assign(_OHeaderSourceCode, {
5
+ install(app: App) {
6
+ app.component('OHeaderSourceCode', _OHeaderSourceCode);
7
+ },
8
+ });
9
+
10
+ export { OHeaderSourceCode };
@@ -6,7 +6,7 @@ import { useScreen } from '@opendesign-plus/composables';
6
6
  import IconSun from '~icons/components/icon-sun.svg';
7
7
  import IconMoon from '~icons/components/icon-moon.svg';
8
8
 
9
- export interface OThemeSwitcherPropsT {
9
+ export interface OHeaderThemePropsT {
10
10
  theme?: string;
11
11
  type?: 'auto' | 'common' | 'mobile';
12
12
  lightValue?: string;
@@ -14,12 +14,12 @@ export interface OThemeSwitcherPropsT {
14
14
  disabled?: boolean;
15
15
  }
16
16
 
17
- export interface OThemeSwitcherEmitsT {
17
+ export interface OHeaderThemeEmitsT {
18
18
  (e: 'update:theme', value: string): void;
19
19
  (e: 'change', val: string): void;
20
20
  }
21
21
 
22
- const props = withDefaults(defineProps<OThemeSwitcherPropsT>(), {
22
+ const props = withDefaults(defineProps<OHeaderThemePropsT>(), {
23
23
  theme: 'light',
24
24
  type: 'auto',
25
25
  lightValue: 'light',
@@ -27,7 +27,7 @@ const props = withDefaults(defineProps<OThemeSwitcherPropsT>(), {
27
27
  disabled: false,
28
28
  });
29
29
 
30
- const emit = defineEmits<OThemeSwitcherEmitsT>();
30
+ const emit = defineEmits<OHeaderThemeEmitsT>();
31
31
 
32
32
  const { gtPhone } = useScreen();
33
33
 
@@ -0,0 +1,10 @@
1
+ import _OHeaderTheme from './OHeaderTheme.vue';
2
+ import type { App } from 'vue';
3
+
4
+ const OHeaderTheme = Object.assign(_OHeaderTheme, {
5
+ install(app: App) {
6
+ app.component('OHeaderTheme', _OHeaderTheme);
7
+ },
8
+ });
9
+
10
+ export { OHeaderTheme };