@jx3box/jx3box-ui 2.0.5 → 2.0.6

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 (226) hide show
  1. package/.storybook/preview.js +22 -13
  2. package/.storybook/storybookMocks.js +191 -0
  3. package/README.md +6 -19
  4. package/assets/css/bread/admin.less +20 -2
  5. package/assets/css/bread/breadcrumb.less +5 -2
  6. package/assets/css/comment/quick-reply.less +1 -1
  7. package/assets/css/common/left-sidebar.less +1 -1
  8. package/assets/css/interact/like2.less +5 -2
  9. package/assets/css/single/author.less +15 -10
  10. package/assets/css/single/cms-single.less +1 -0
  11. package/assets/css/single/thx.less +34 -11
  12. package/assets/data/nav.json +344 -10
  13. package/assets/img/comment/comment.svg +1 -1
  14. package/assets/img/comment/heart_1.svg +1 -1
  15. package/assets/img/comment/hide.svg +1 -1
  16. package/assets/img/leftsidebar/medal.svg +1 -1
  17. package/assets/img/leftsidebar/post.svg +27 -46
  18. package/i18n/messages/en-US.js +357 -22
  19. package/i18n/messages/vi.js +350 -22
  20. package/i18n/messages/zh-CN.js +469 -20
  21. package/i18n/messages/zh-TW.js +350 -22
  22. package/index.js +19 -7
  23. package/package.json +8 -5
  24. package/service/cms.js +22 -0
  25. package/service/commit-history.js +18 -0
  26. package/service/community.js +60 -0
  27. package/service/fav.js +5 -6
  28. package/src/App.vue +154 -80
  29. package/src/Breadcrumb.vue +24 -11
  30. package/src/CommonFooter.vue +2 -2
  31. package/src/Footer.vue +13 -5
  32. package/src/LeftSideToggle.vue +10 -3
  33. package/src/LeftSidebar.vue +19 -5
  34. package/src/Main.vue +9 -2
  35. package/src/RightSidebar.vue +12 -3
  36. package/src/SuspendCommon.vue +52 -38
  37. package/src/author/AuthorFans.vue +7 -5
  38. package/src/author/AuthorFollow.vue +14 -7
  39. package/src/author/AuthorGift.vue +25 -17
  40. package/src/author/AuthorInfo.vue +46 -19
  41. package/src/author/AuthorLink.vue +3 -1
  42. package/src/author/AuthorMedals.vue +5 -2
  43. package/src/author/AuthorPosts.vue +31 -13
  44. package/src/author/AuthorRss.vue +7 -3
  45. package/src/author/AuthorTeams.vue +3 -1
  46. package/src/author/UserPop.vue +29 -17
  47. package/src/bread/Admin.vue +55 -32
  48. package/src/bread/AdminDirectMessage.vue +15 -8
  49. package/src/bread/AdminDrop.vue +124 -45
  50. package/src/bread/CommunityAdmin.vue +527 -0
  51. package/src/bread/DesignTask.vue +30 -26
  52. package/src/bread/ListAdmin.vue +199 -0
  53. package/src/bread/MigrateCommunity.vue +192 -0
  54. package/src/bread/MoveToCommunityDialog.vue +234 -0
  55. package/src/comment/Avatar.vue +18 -24
  56. package/src/comment/CommentContent.vue +57 -37
  57. package/src/comment/CommentContentSimple.vue +61 -63
  58. package/src/comment/CommentInputForm.vue +45 -34
  59. package/src/comment/CommentWithReply.vue +9 -6
  60. package/src/comment/QuickReply.vue +5 -1
  61. package/src/comment/ReplyForReply.vue +6 -4
  62. package/src/comment/ReplyList.vue +28 -18
  63. package/src/comment/Upload.vue +24 -6
  64. package/src/filters/clientBy.vue +10 -8
  65. package/src/filters/markBy.vue +35 -31
  66. package/src/filters/menuBy.vue +20 -22
  67. package/src/filters/orderBy.vue +17 -11
  68. package/src/filters/tagBy.vue +4 -2
  69. package/src/filters/topicBy.vue +12 -10
  70. package/src/filters/versionBy.vue +5 -3
  71. package/src/filters/zlpBy.vue +29 -25
  72. package/src/footer/copyright.vue +5 -5
  73. package/src/footer/links.vue +2 -2
  74. package/src/footer/official.vue +1 -1
  75. package/src/footer/resource.vue +6 -6
  76. package/src/header/alternate.vue +35 -18
  77. package/src/header/asset.vue +9 -19
  78. package/src/header/box.vue +20 -8
  79. package/src/header/box2.vue +16 -9
  80. package/src/header/client.vue +7 -7
  81. package/src/header/lang.vue +41 -6
  82. package/src/header/logo.vue +2 -3
  83. package/src/header/manage.vue +2 -2
  84. package/src/header/message.vue +3 -3
  85. package/src/header/nav.vue +26 -23
  86. package/src/header/publish.vue +2 -2
  87. package/src/header/search.vue +2 -2
  88. package/src/header/shop.vue +2 -2
  89. package/src/header/user.vue +4 -4
  90. package/src/header/userInfo.vue +22 -24
  91. package/src/header/vip.vue +2 -2
  92. package/src/interact/BoxcoinAdmin.vue +30 -16
  93. package/src/interact/BoxcoinRecords.vue +28 -11
  94. package/src/interact/BoxcoinUser.vue +33 -17
  95. package/src/interact/Fav.vue +5 -1
  96. package/src/interact/Homework.vue +318 -0
  97. package/src/interact/Like.vue +4 -2
  98. package/src/interact/Rss.vue +10 -4
  99. package/src/interact/Share.vue +18 -19
  100. package/src/interact/WatchLater.vue +5 -1
  101. package/src/main.js +1 -0
  102. package/src/single/Author.vue +5 -1
  103. package/src/single/CmsSingle.vue +29 -15
  104. package/src/single/Collection.vue +36 -26
  105. package/src/single/Comment.vue +19 -13
  106. package/src/single/Creators.vue +5 -3
  107. package/src/single/PostCollection.vue +158 -0
  108. package/src/single/PostDirectory.vue +0 -126
  109. package/src/single/PostGuide.vue +93 -0
  110. package/src/single/PostHeader.vue +39 -17
  111. package/src/single/PostTopic.vue +3 -3
  112. package/src/single/PostVersion.vue +219 -0
  113. package/src/single/RightAffix.vue +160 -0
  114. package/src/single/SimpleThx.vue +4 -2
  115. package/src/single/Thx.vue +14 -2
  116. package/src/single/VersionDialog.vue +238 -0
  117. package/src/stories/components/StoryPropsTable.vue +137 -0
  118. package/src/stories/filters/FilterGallery.stories.js +110 -0
  119. package/src/stories/filters/clientBy.stories.js +24 -0
  120. package/src/stories/filters/markBy.stories.js +6 -0
  121. package/src/stories/filters/menuBy.stories.js +6 -0
  122. package/src/stories/filters/orderBy.stories.js +6 -0
  123. package/src/stories/filters/tagBy.stories.js +6 -0
  124. package/src/stories/filters/topicBy.stories.js +6 -0
  125. package/src/stories/filters/versionBy.stories.js +6 -0
  126. package/src/stories/filters/zlpBy.stories.js +6 -0
  127. package/src/stories/layout/BaseShell.stories.js +38 -0
  128. package/src/stories/layout/Breadcrumb.stories.js +40 -0
  129. package/src/stories/layout/CommonFooter.stories.js +1 -1
  130. package/src/stories/layout/CommonHeader.stories.js +1 -1
  131. package/src/stories/layout/LeftSideToggle.stories.js +78 -0
  132. package/src/stories/layout/LeftSidebar.stories.js +40 -0
  133. package/src/stories/layout/Main.stories.js +41 -0
  134. package/src/stories/layout/RightSidebar.stories.js +36 -0
  135. package/src/stories/layout/StorybookShell.vue +271 -0
  136. package/src/stories/layout/SuspendCommon.stories.js +67 -0
  137. package/src/stories/layout/SuspendCommonStage.vue +143 -0
  138. package/src/stories/mockData.js +275 -0
  139. package/src/stories/other/UserPop.stories.js +51 -0
  140. package/src/stories/single/Author.stories.js +19 -0
  141. package/src/stories/single/AuthorStoryStage.vue +103 -0
  142. package/src/stories/single/CmsSingle.stories.js +19 -0
  143. package/src/stories/single/CmsSingleStoryStage.vue +118 -0
  144. package/src/stories/single/Collection.stories.js +34 -0
  145. package/src/stories/single/Comment.stories.js +36 -0
  146. package/src/stories/single/Creators.stories.js +34 -0
  147. package/src/stories/single/PostCollection.stories.js +34 -0
  148. package/src/stories/single/PostDirectory.stories.js +31 -0
  149. package/src/stories/single/PostGuide.stories.js +47 -0
  150. package/src/stories/single/PostHeader.stories.js +39 -0
  151. package/src/stories/single/PostVersion.stories.js +41 -0
  152. package/src/stories/single/RightAffix.stories.js +84 -0
  153. package/src/stories/single/SimpleThx.stories.js +39 -0
  154. package/src/stories/single/SingleGallery.stories.js +207 -0
  155. package/src/stories/single/Thx.stories.js +38 -0
  156. package/vue.config.js +2 -12
  157. package/assets/css/common/bottom.less +0 -25
  158. package/assets/css/editor/article.less +0 -36
  159. package/assets/css/editor/combo.less +0 -362
  160. package/assets/css/editor/resource.less +0 -399
  161. package/assets/css/editor/tinymce.less +0 -100
  162. package/assets/css/editor/upload.less +0 -136
  163. package/assets/css/module/author.less +0 -231
  164. package/assets/css/module/buff.less +0 -88
  165. package/assets/css/module/directory.less +0 -165
  166. package/assets/css/module/icon.less +0 -25
  167. package/assets/css/module/item.less +0 -279
  168. package/assets/css/module/item_simple.less +0 -58
  169. package/assets/css/module/jx3_element.less +0 -5
  170. package/assets/css/module/macro.less +0 -89
  171. package/assets/css/module/npc.less +0 -265
  172. package/assets/css/module/resource.less +0 -93
  173. package/assets/css/module/skill.less +0 -74
  174. package/assets/css/module/talent.less +0 -495
  175. package/assets/js/a.js +0 -46
  176. package/assets/js/code.js +0 -13
  177. package/assets/js/combo.js +0 -40
  178. package/assets/js/directory.js +0 -114
  179. package/assets/js/filter2.js +0 -186
  180. package/assets/js/fold.js +0 -11
  181. package/assets/js/gallery.js +0 -14
  182. package/assets/js/hljs_languages.js +0 -177
  183. package/assets/js/iframe.js +0 -38
  184. package/assets/js/img.js +0 -23
  185. package/assets/js/item/attribute_percent.js +0 -88
  186. package/assets/js/item/bind.js +0 -18
  187. package/assets/js/item/border.js +0 -19
  188. package/assets/js/item/border_quest.js +0 -12
  189. package/assets/js/item/color.js +0 -25
  190. package/assets/js/item/hljs_languages.js +0 -177
  191. package/assets/js/item/icon_url.js +0 -15
  192. package/assets/js/item/second_format.js +0 -19
  193. package/assets/js/jx3_element.js +0 -73
  194. package/assets/js/katex.js +0 -181
  195. package/assets/js/macro.js +0 -16
  196. package/assets/js/nextpage.js +0 -4
  197. package/assets/js/pswp.js +0 -67
  198. package/assets/js/pswp_template.js +0 -66
  199. package/assets/js/pz_iframe.js +0 -30
  200. package/assets/js/qixue.js +0 -28
  201. package/assets/js/renderImgPreview.js +0 -18
  202. package/assets/js/script.js +0 -6
  203. package/assets/js/stat.js +0 -107
  204. package/assets/js/talent2.js +0 -21
  205. package/assets/js/tex-mml-chtml.js +0 -36310
  206. package/assets/js/voice.js +0 -238
  207. package/assets/js/xss.js +0 -130
  208. package/src/editor/Article.vue +0 -230
  209. package/src/editor/BoxResource.vue +0 -441
  210. package/src/editor/Resource.vue +0 -623
  211. package/src/editor/Tinymce.vue +0 -204
  212. package/src/editor/Upload.vue +0 -277
  213. package/src/editor/UploadAlum.vue +0 -176
  214. package/src/editor/UploadBanner.vue +0 -156
  215. package/src/editor/components/Author.vue +0 -322
  216. package/src/editor/components/Avatar.vue +0 -95
  217. package/src/editor/components/Buff.vue +0 -80
  218. package/src/editor/components/Combo.vue +0 -259
  219. package/src/editor/components/Equip.vue +0 -299
  220. package/src/editor/components/GameText.vue +0 -242
  221. package/src/editor/components/Item.vue +0 -325
  222. package/src/editor/components/ItemSimple.vue +0 -134
  223. package/src/editor/components/Medal.vue +0 -43
  224. package/src/editor/components/Npc.vue +0 -215
  225. package/src/editor/components/PostAuthor.vue +0 -102
  226. package/src/editor/components/Skill.vue +0 -71
@@ -4,9 +4,11 @@ import zhCn from 'element-plus/es/locale/lang/zh-cn';
4
4
  import * as ElementPlusIconsVue from '@element-plus/icons-vue';
5
5
  import axios from 'axios';
6
6
 
7
+ import { install } from '../index';
7
8
  import { Jx3boxUiI18n } from '../i18n';
8
9
  import navData from '../assets/data/nav.json';
9
10
  import boxData from '../assets/data/box.json';
11
+ import { resolveAdapter, resolveStorybookMock } from './storybookMocks';
10
12
 
11
13
  import '@jx3box/jx3box-common/css/normalize.css';
12
14
  import '@jx3box/jx3box-common/css/font.css';
@@ -18,14 +20,26 @@ let axiosPatched = false;
18
20
  function patchAxiosForStorybook() {
19
21
  if (axiosPatched) return;
20
22
 
23
+ const originalCreate = axios.create.bind(axios);
21
24
  const originalGet = axios.get.bind(axios);
25
+
26
+ const withMockAdapter = (instance) => {
27
+ const defaultAdapter = resolveAdapter(axios, instance.defaults.adapter);
28
+ instance.defaults.adapter = async (config) => {
29
+ const mocked = resolveStorybookMock(config);
30
+ if (mocked) return mocked;
31
+ if (defaultAdapter) return defaultAdapter(config);
32
+ throw new Error(`Unmocked request in Storybook: ${config?.url || ''}`);
33
+ };
34
+ return instance;
35
+ };
36
+
37
+ axios.create = (...args) => withMockAdapter(originalCreate(...args));
22
38
  axios.get = (url, ...args) => {
23
- if (typeof url === 'string' && url.includes('/config/global.json')) {
24
- return Promise.resolve({
25
- data: {
26
- token_version: 'storybook',
27
- },
28
- });
39
+ const config = { method: 'get', url, ...(args[0] || {}) };
40
+ const mocked = resolveStorybookMock(config);
41
+ if (mocked) {
42
+ return Promise.resolve(mocked);
29
43
  }
30
44
  return originalGet(url, ...args);
31
45
  };
@@ -57,6 +71,7 @@ function bootstrapRuntimeData() {
57
71
  setup((app) => {
58
72
  app.use(Jx3boxUiI18n, { locale: 'zh-CN' });
59
73
  app.use(ElementPlus, { locale: zhCn });
74
+ install(app);
60
75
 
61
76
  for (const [name, component] of Object.entries(ElementPlusIconsVue)) {
62
77
  app.component(name, component);
@@ -64,13 +79,7 @@ setup((app) => {
64
79
  });
65
80
 
66
81
  patchAxiosForStorybook();
67
-
68
- export const decorators = [
69
- (story) => {
70
- bootstrapRuntimeData();
71
- return story();
72
- },
73
- ];
82
+ bootstrapRuntimeData();
74
83
 
75
84
  export const parameters = {
76
85
  actions: { argTypesRegex: '^on[A-Z].*' },
@@ -0,0 +1,191 @@
1
+ import {
2
+ mockBoxcoinConfig,
3
+ mockBoxcoinRecords,
4
+ mockCommitHistories,
5
+ mockCollection,
6
+ mockCommentPage,
7
+ mockCommentPower,
8
+ mockCreators,
9
+ mockHonor,
10
+ mockMedals,
11
+ mockSearchUser,
12
+ mockTeams,
13
+ mockUserInfo,
14
+ mockUserPosts,
15
+ } from '../src/stories/mockData';
16
+
17
+ function resolveAdapter(axiosModule, adapter) {
18
+ if (!adapter) return null;
19
+ if (typeof adapter === 'function') return adapter;
20
+ if (typeof axiosModule?.getAdapter === 'function') {
21
+ return axiosModule.getAdapter(adapter);
22
+ }
23
+ return null;
24
+ }
25
+
26
+ function normalizePath(config) {
27
+ const rawUrl = config?.url || '';
28
+ const baseURL = config?.baseURL || '';
29
+ const base = baseURL
30
+ ? new URL(baseURL, 'https://storybook.local').toString()
31
+ : 'https://storybook.local';
32
+ const url = rawUrl.startsWith('http') ? new URL(rawUrl) : new URL(rawUrl || '/', base);
33
+ return url.pathname.replace(/^\/__proxy\/[^/]+/, '');
34
+ }
35
+
36
+ function respond(config, data, status = 200) {
37
+ return {
38
+ data,
39
+ status,
40
+ statusText: 'OK',
41
+ headers: {},
42
+ config,
43
+ request: {},
44
+ };
45
+ }
46
+
47
+ function mockCmsConfig(key) {
48
+ if (key === 'boxcoin') return { val: 1 };
49
+ if (key === 'admin_boxcoin_visible') return { val: 1 };
50
+ if (key === 'level_has_gift_permission') return { val: 0 };
51
+ if (key === 'comment_strict') return { val: 0 };
52
+ return { val: '' };
53
+ }
54
+
55
+ export function resolveStorybookMock(config) {
56
+ const method = String(config?.method || 'get').toLowerCase();
57
+ const path = normalizePath(config);
58
+ const params = config?.params || {};
59
+
60
+ if (path.includes('/config/global.json')) {
61
+ return respond(config, { token_version: 'storybook' });
62
+ }
63
+
64
+ if (method === 'get' && path === '/api/cms/config') {
65
+ return respond(config, { data: mockCmsConfig(params.key) });
66
+ }
67
+
68
+ if (method === 'get' && path.match(/^\/api\/cms\/post\/\d+\/authors$/)) {
69
+ return respond(config, { data: mockCreators });
70
+ }
71
+
72
+ if (method === 'get' && path.match(/^\/api\/cms\/post\/collection\/\d+$/)) {
73
+ return respond(config, { data: mockCollection });
74
+ }
75
+
76
+ if (method === 'get' && path.match(/^\/api\/cms\/user\/\d+\/info$/)) {
77
+ return respond(config, { data: mockUserInfo });
78
+ }
79
+
80
+ if (method === 'get' && path.match(/^\/api\/cms\/user\/honor\/\d+\/using$/)) {
81
+ return respond(config, { data: mockHonor });
82
+ }
83
+
84
+ if (method === 'get' && path === '/api/cms/user/search') {
85
+ return respond(config, { data: mockSearchUser });
86
+ }
87
+
88
+ if (method === 'get' && path.match(/^\/api\/cms\/posts\/user\/\d+\/latest$/)) {
89
+ return respond(config, { data: { list: mockUserPosts } });
90
+ }
91
+
92
+ if (method === 'get' && path === '/api/cms/user/decoration') {
93
+ return respond(config, { data: [] });
94
+ }
95
+
96
+ if (method === 'get' && path === '/api/cms/account/permission/i') {
97
+ return respond(config, { data: { permission: [{ action: 'manage_boxcoin_bbs' }] } });
98
+ }
99
+
100
+ if (method === 'get' && path.match(/^\/api\/next2\/user\/\d+\/medals$/)) {
101
+ return respond(config, { data: mockMedals });
102
+ }
103
+
104
+ if (method === 'get' && path === '/api/team/relation/public') {
105
+ return respond(config, { data: mockTeams });
106
+ }
107
+
108
+ if (method === 'get' && path.match(/^\/api\/next2\/rss\/overview\/author\/\d+$/)) {
109
+ return respond(config, { data: { total: 128, subscribed: false } });
110
+ }
111
+
112
+ if (method === 'get' && path.match(/^\/api\/inspire\/article\/.+\/boxcoin\/limit$/)) {
113
+ return respond(config, { data: mockBoxcoinConfig });
114
+ }
115
+
116
+ if (method === 'get' && path.match(/^\/api\/inspire\/article\/.+\/history$/)) {
117
+ return respond(config, { data: mockBoxcoinRecords });
118
+ }
119
+
120
+ if (method === 'get' && path.match(/^\/api\/next2\/comment\/.+\/i-am-author$/)) {
121
+ return respond(config, mockCommentPower);
122
+ }
123
+
124
+ if (method === 'get' && path.match(/^\/api\/next2\/comment\/.+\/comment\/page\/\d+$/)) {
125
+ return respond(config, mockCommentPage);
126
+ }
127
+
128
+ if (method === 'get' && path.match(/^\/api\/next2\/comment\/.+\/comment\/\d+\/reply\/page\/\d+$/)) {
129
+ return respond(config, mockCommentPage);
130
+ }
131
+
132
+ if (method === 'get' && path.match(/^\/api\/next2\/userdata\/commit-history\/content-meta\/\d+\/commit\/history$/)) {
133
+ return respond(config, {
134
+ data: {
135
+ list: mockCommitHistories.map(({ content, ...item }) => item),
136
+ page: {
137
+ total: mockCommitHistories.length,
138
+ },
139
+ },
140
+ });
141
+ }
142
+
143
+ if (method === 'get' && path.match(/^\/api\/next2\/userdata\/commit-history\/content-meta\/\d+\/commit\/by-hash\/.+$/)) {
144
+ const hash = path.split('/').pop();
145
+ const matched = mockCommitHistories.find((item) => item.commit_hash === hash) || mockCommitHistories[0];
146
+ return respond(config, {
147
+ data: {
148
+ content: matched?.content || '',
149
+ },
150
+ });
151
+ }
152
+
153
+ if (['post', 'put', 'delete'].includes(method) && path.startsWith('/api/next2/comment/')) {
154
+ return respond(config, { code: 0, data: {} });
155
+ }
156
+
157
+ if (['post', 'delete'].includes(method) && path.startsWith('/api/next2/rss/')) {
158
+ return respond(config, { code: 0, data: { subscribed: method === 'post' } });
159
+ }
160
+
161
+ if (['post', 'delete', 'get'].includes(method) && path.startsWith('/api/article/favorites/')) {
162
+ return respond(config, { code: 0, data: { id: 1, totalFavorites: 12 } });
163
+ }
164
+
165
+ if (method === 'get' && path === '/api/vip/i') {
166
+ return respond(config, {
167
+ data: {
168
+ was_vip: 0,
169
+ expire_date: '1970-02-02T16:00:00.000Z',
170
+ total_day: 0,
171
+ was_pro: 0,
172
+ pro_expire_date: '1970-02-02T16:00:00.000Z',
173
+ pro_total_day: 0,
174
+ rename_card_count: 0,
175
+ had_renamed: 0,
176
+ namespace_card_count: 0,
177
+ box_coin: 300,
178
+ points: 16800,
179
+ experience: 16800,
180
+ },
181
+ });
182
+ }
183
+
184
+ if (method === 'post' && path === '/api/next2/userdata/watch-later/item') {
185
+ return respond(config, { code: 0, data: {} });
186
+ }
187
+
188
+ return null;
189
+ }
190
+
191
+ export { resolveAdapter };
package/README.md CHANGED
@@ -25,10 +25,13 @@
25
25
  - PostHeader 创作信息
26
26
  - Creators 联合创作
27
27
  - Collection 小册
28
- - Article 文章内容
29
28
  - Thx 交互组件
30
29
  - SimpleThx 交互组件简化版(仅PVP栏目使用,需要手动引入)
31
30
  - Comment 评论
31
+ - RightAffix 固钉
32
+ - PostGuide 快速跳转至上下篇
33
+ - PostVersion 修改历史
34
+ - PostCollection 关联小册
32
35
 
33
36
  ### 筛选模块 list
34
37
 
@@ -43,21 +46,5 @@
43
46
  - versionBy 版本筛选
44
47
  - zlpBy 资料片筛选
45
48
 
46
- ### 个人模块 author
47
-
48
- 一般用于文章详情的左侧边栏,个人主页等
49
-
50
- - Avatar 头像
51
- - AuthorFans 粉丝榜
52
- - AuthorFollow 关注用户(区分rss,此处用户更新不会收到消息)
53
- - AuthorGift 打赏用户
54
- - AuthorHonor 用户称号
55
- - AuthorInfo 用户基础信息
56
- - AuthorLink 用户绑定平台账号(微博,github,直播间)
57
- - AuthorMedals 用户勋章
58
- - AuthorPosts 用户作品
59
- - AuthorRss 订阅用户
60
- - AuthorTeams 所在团队
61
- - UserPop 搜索用户弹窗
62
-
63
-
49
+ ### 其他
50
+ - UserPop 搜索用户弹窗
@@ -43,6 +43,10 @@
43
43
  /* assets/css/bread/admin.less */
44
44
  margin-left: 10px;;
45
45
  }
46
+ .m-status-op {
47
+ .flex;
48
+ align-items: center;
49
+ }
46
50
  }
47
51
 
48
52
  .c-admin-highlight-checkbox {
@@ -64,7 +68,7 @@
64
68
  /* assets/css/bread/admin.less */
65
69
  .u-banner {
66
70
  /* assets/css/bread/admin.less */
67
- .mt(5px);
71
+ .mt(10px);
68
72
  }
69
73
  .u-btn {
70
74
  /* assets/css/bread/admin.less */
@@ -82,6 +86,20 @@
82
86
  box-sizing: border-box;
83
87
  }
84
88
  overflow: hidden;
89
+
90
+ background-color: #fbfdff;
91
+ border: 1px dashed #c0ccda;
92
+ border-radius: 6px;
93
+ box-sizing: border-box;
94
+ width: 148px;
95
+ height: 148px;
96
+ line-height: 146px;
97
+ vertical-align: top;
98
+
99
+ &:hover {
100
+ /* assets/css/bread/admin.less */
101
+ border-color: #409eff;
102
+ }
85
103
  }
86
104
 
87
105
  .c-admin-info {
@@ -116,7 +134,7 @@
116
134
  }
117
135
  .el-select {
118
136
  /* assets/css/bread/admin.less */
119
- .el-input__wrapper {
137
+ .el-select__wrapper {
120
138
  /* assets/css/bread/admin.less */
121
139
  border-top-left-radius: 0;
122
140
  border-bottom-left-radius: 0;
@@ -41,11 +41,11 @@
41
41
  /* assets/css/bread/breadcrumb.less */
42
42
  .u-title {
43
43
  /* assets/css/bread/breadcrumb.less */
44
- color: @darkblue;
44
+ color: var(--el-color-primary);
45
45
  }
46
46
  .u-channel-logo svg {
47
47
  /* assets/css/bread/breadcrumb.less */
48
- fill: @darkblue;
48
+ fill: var(--el-color-primary);
49
49
  }
50
50
  }
51
51
 
@@ -122,6 +122,9 @@
122
122
  /* assets/css/bread/breadcrumb.less */
123
123
  .pa;
124
124
  .rt(10px);
125
+ .flex(y);gap:10px;
126
+
127
+ .el-button{margin:0 !important;}
125
128
  }
126
129
  }
127
130
  .c-breadcrumb.isOverlay {
@@ -4,8 +4,8 @@
4
4
  /* assets/css/comment/quick-reply.less */
5
5
  cursor: pointer;
6
6
  position: relative;
7
- top: 8px;
8
7
  margin-left: 10px;
8
+ color:#555;
9
9
  }
10
10
  }
11
11
  .c-jx3box-reply-pop {
@@ -6,7 +6,7 @@
6
6
  .pf;
7
7
  .z(600);
8
8
  left: 0;
9
- top: @header-height + @bread-height;
9
+ top: @header-height + @bread-height + 1px;
10
10
  bottom: 0;
11
11
  background-color: @bg-light;
12
12
  border-right: 1px solid #eee;
@@ -12,8 +12,6 @@
12
12
  /* assets/css/interact/like2.less */
13
13
  color: #888;
14
14
  .ml(10px);
15
- .pr;
16
- top: 4px;
17
15
  }
18
16
 
19
17
  &.disabled {
@@ -21,4 +19,9 @@
21
19
  .tm(0.5);
22
20
  cursor: default;
23
21
  }
22
+
23
+ .w-like2__trigger {
24
+ .flex;
25
+ align-items: center;
26
+ }
24
27
  }
@@ -15,13 +15,13 @@
15
15
  i,
16
16
  svg {
17
17
  /* assets/css/single/author.less */
18
- .size(16px);
18
+ .size(18px);
19
19
  .mr(5px);
20
20
  }
21
21
  span {
22
22
  /* assets/css/single/author.less */
23
23
  .fz(12px);
24
- .bold;
24
+ font-weight: 500;
25
25
  }
26
26
  // border-bottom: 1px solid @border;
27
27
  }
@@ -85,6 +85,11 @@
85
85
  .mt(5px);
86
86
  display: flex;
87
87
  align-items: center;
88
+ gap:8px;
89
+
90
+ .el-button{
91
+ margin:0;
92
+ }
88
93
  }
89
94
  .u-links {
90
95
  /* assets/css/single/author.less */
@@ -92,16 +97,16 @@
92
97
  }
93
98
  .u-block {
94
99
  /* assets/css/single/author.less */
95
- .mt(20px);
100
+ .mt(22px);
96
101
  }
97
102
 
98
- .u-btn {
99
- /* assets/css/single/author.less */
100
- &:hover {
101
- /* assets/css/single/author.less */
102
- color: @primary;
103
- }
104
- }
103
+ // .u-btn {
104
+ // /* assets/css/single/author.less */
105
+ // &:hover {
106
+ // /* assets/css/single/author.less */
107
+ // color: @primary;
108
+ // }
109
+ // }
105
110
  }
106
111
 
107
112
  .c-sidebar-left .c-author {
@@ -11,6 +11,7 @@
11
11
  @media screen and (max-width: @phone) {
12
12
  /* assets/css/single/cms-single.less */
13
13
  .m-single-box {
14
+ --el-color-primary: @primary;
14
15
  /* assets/css/single/cms-single.less */
15
16
  padding: 0 15px;
16
17
  }
@@ -1,14 +1,14 @@
1
1
  .w-thx {
2
2
  /* assets/css/single/thx.less */
3
- .w-like2,
4
- .w-fav2,
5
- .w-boxcoin-user,
6
- .w-share2,
7
- .w-rss,
8
- .w-boxcoin-admin {
9
- /* assets/css/single/thx.less */
10
- .mr(20px);
11
- }
3
+ // .w-like2,
4
+ // .w-fav2,
5
+ // .w-boxcoin-user,
6
+ // .w-share2,
7
+ // .w-rss,
8
+ // .w-boxcoin-admin {
9
+ // /* assets/css/single/thx.less */
10
+ // .mr(20px);
11
+ // }
12
12
  .x;
13
13
 
14
14
  .u-record-icon {
@@ -26,6 +26,7 @@
26
26
  .flex;
27
27
  align-items: center;
28
28
  justify-content: center;
29
+ gap: 20px
29
30
  }
30
31
  .w-thx-copyright {
31
32
  /* assets/css/single/thx.less */
@@ -67,7 +68,7 @@
67
68
 
68
69
  .el-dialog__body {
69
70
  /* assets/css/single/thx.less */
70
- padding: 10px 20px;
71
+ //padding: 10px 20px;
71
72
 
72
73
  .fz(14px,2);
73
74
 
@@ -148,6 +149,9 @@
148
149
  }
149
150
 
150
151
  .w-boxcoin-records-list {
152
+
153
+ --el-color-primary: @primary;
154
+
151
155
  /* assets/css/single/thx.less */
152
156
  max-width: 960px;
153
157
  border: 1px solid #eee;
@@ -172,6 +176,10 @@
172
176
  }
173
177
  display: flex;
174
178
  white-space: nowrap;
179
+
180
+ a {
181
+ color: var(--el-color-primary);
182
+ }
175
183
  }
176
184
  .u-meta {
177
185
  /* assets/css/single/thx.less */
@@ -183,10 +191,12 @@
183
191
  .w(40px);
184
192
  .db;
185
193
  padding-right: 10px;
194
+ .flex;
195
+ align-items: center;
196
+ justify-content: center;
186
197
  svg {
187
198
  /* assets/css/single/thx.less */
188
199
  .size(24px);
189
- .mt(4px);
190
200
  .db;
191
201
  .auto(x);
192
202
  }
@@ -196,12 +206,19 @@
196
206
  /* assets/css/single/thx.less */
197
207
  .w(120px);
198
208
  .nobreak;
209
+ .flex;
210
+ align-items: center;
199
211
  &:hover {
200
212
  /* assets/css/single/thx.less */
201
213
  text-decoration: underline;
202
214
  }
203
215
  .mr(20px);
204
216
  }
217
+ .u-default {
218
+ &:hover{
219
+ text-decoration: none;
220
+ }
221
+ }
205
222
  .u-user-avatar {
206
223
  /* assets/css/single/thx.less */
207
224
  .y;
@@ -229,6 +246,7 @@
229
246
  /* assets/css/single/thx.less */
230
247
  .nobreak;
231
248
  .w(280px);
249
+ color:@color;
232
250
  }
233
251
  .u-time {
234
252
  /* assets/css/single/thx.less */
@@ -253,6 +271,11 @@
253
271
  margin-left: 5px;
254
272
  color: #09f;
255
273
  }
274
+
275
+ }
276
+ .w-boxcoin-records-pages {
277
+ justify-content: center;
278
+ padding-top: 2px;
256
279
  }
257
280
 
258
281
  @media screen and (max-width: @phone) {