@taskon/widget-react 0.0.1-beta.3 → 0.0.1-beta.5

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 (44) hide show
  1. package/README.md +1 -1
  2. package/dist/CommunityTaskList.css +1340 -1292
  3. package/dist/EligibilityInfo.css +512 -332
  4. package/dist/LeaderboardWidget.css +355 -152
  5. package/dist/Quest.css +911 -629
  6. package/dist/TaskOnProvider.css +35 -16
  7. package/dist/UserCenterWidget.css +116 -71
  8. package/dist/UserCenterWidget2.css +1285 -748
  9. package/dist/chunks/{CommunityTaskList-C9mPl_31.js → CommunityTaskList-CrMvOB8w.js} +784 -452
  10. package/dist/chunks/{EligibilityInfo-DGBffKN8.js → EligibilityInfo-Beww12QX.js} +1569 -597
  11. package/dist/chunks/{LeaderboardWidget-DPOQVXkT.js → LeaderboardWidget-DwuSpVl0.js} +2 -2
  12. package/dist/chunks/{PageBuilder-WCZvxL2j.js → PageBuilder-DsX6Tv0N.js} +5 -5
  13. package/dist/chunks/{Quest-DjGH_8bx.js → Quest-CuD2LElS.js} +713 -484
  14. package/dist/chunks/{TaskOnProvider-iannERG1.js → TaskOnProvider-xUeP2Nro.js} +78 -65
  15. package/dist/chunks/{ThemeProvider-DNJqI2lD.js → ThemeProvider-Bt4UZ33y.js} +33 -9
  16. package/dist/chunks/{UserCenterWidget-CAhgp46j.js → UserCenterWidget-CB0hnj-L.js} +69 -31
  17. package/dist/chunks/{UserCenterWidget-B0O-f_xl.js → UserCenterWidget-CvU6K4AC.js} +21 -7
  18. package/dist/chunks/communitytask-es-1zawvXEX.js +311 -0
  19. package/dist/chunks/communitytask-ja-CmW6nP-L.js +311 -0
  20. package/dist/chunks/communitytask-ko-BD0hzQSi.js +311 -0
  21. package/dist/chunks/communitytask-ru-DhySaZL8.js +311 -0
  22. package/dist/chunks/createLocaleLoader-BameiEhU.js +65 -0
  23. package/dist/chunks/{dynamic-import-helper-B2j_dZ4V.js → dynamic-import-helper-WmIF58Sb.js} +1 -1
  24. package/dist/chunks/quest-es-D-b5xcme.js +948 -0
  25. package/dist/chunks/quest-ja-Dxd2vqBF.js +948 -0
  26. package/dist/chunks/quest-ko-CSmRWgK_.js +948 -0
  27. package/dist/chunks/quest-ru-CkEKv1_F.js +948 -0
  28. package/dist/chunks/taskwidget-es-Do9b3Mqw.js +245 -0
  29. package/dist/chunks/taskwidget-ja-CqSu-yWA.js +245 -0
  30. package/dist/chunks/taskwidget-ko-EHgXFV4B.js +245 -0
  31. package/dist/chunks/taskwidget-ru-CMbLQDK4.js +245 -0
  32. package/dist/community-task.js +1 -1
  33. package/dist/core.d.ts +17 -5
  34. package/dist/core.js +8 -7
  35. package/dist/dynamic-import-helper.css +424 -303
  36. package/dist/index.d.ts +56 -5
  37. package/dist/index.js +18 -16
  38. package/dist/leaderboard.js +2 -2
  39. package/dist/page-builder.js +1 -1
  40. package/dist/quest.d.ts +682 -0
  41. package/dist/quest.js +3 -1
  42. package/dist/user-center.d.ts +3 -1
  43. package/dist/user-center.js +5 -5
  44. package/package.json +7 -1
@@ -5,48 +5,6 @@
5
5
  * 前缀: taskon-leaderboard
6
6
  */
7
7
 
8
- /* ============================================================================
9
- CSS 变量定义
10
- ============================================================================ */
11
-
12
- .taskon-leaderboard {
13
- /* 颜色系统 - 与 Quest Widget 保持一致 */
14
- --taskon-leaderboard-bg-body: #111111;
15
- --taskon-leaderboard-text-lightest: #ffffff;
16
- --taskon-leaderboard-text-lighter: rgba(255, 255, 255, 0.8);
17
- --taskon-leaderboard-text-light: rgba(255, 255, 255, 0.6);
18
- --taskon-leaderboard-text-dark: rgba(255, 255, 255, 0.4);
19
- --taskon-leaderboard-text-darkest: rgba(255, 255, 255, 0.1);
20
- --taskon-leaderboard-text-invisible: rgba(255, 255, 255, 0.04);
21
- --taskon-leaderboard-primary: #cbff01;
22
- --taskon-leaderboard-secondary: #1affab;
23
- --taskon-leaderboard-link: #58afff;
24
- --taskon-leaderboard-error: #ef4444;
25
-
26
- /* 排名徽章颜色 */
27
- --taskon-leaderboard-rank-gold: #ffbf29;
28
- --taskon-leaderboard-rank-gold-stroke: #ffd465;
29
- --taskon-leaderboard-rank-silver: #c0c0c0;
30
- --taskon-leaderboard-rank-silver-stroke: #d8d8d8;
31
- --taskon-leaderboard-rank-bronze: #cd7f32;
32
- --taskon-leaderboard-rank-bronze-stroke: #e0a060;
33
-
34
- /* 间距系统 */
35
- --taskon-leaderboard-spacing-xxs: 4px;
36
- --taskon-leaderboard-spacing-xs: 8px;
37
- --taskon-leaderboard-spacing-s: 12px;
38
- --taskon-leaderboard-spacing-m: 16px;
39
- --taskon-leaderboard-spacing-l: 20px;
40
- --taskon-leaderboard-spacing-xl: 24px;
41
- --taskon-leaderboard-spacing-xxl: 32px;
42
-
43
- /* 圆角系统 */
44
- --taskon-leaderboard-radius-s: 4px;
45
- --taskon-leaderboard-radius-m: 6px;
46
- --taskon-leaderboard-radius-l: 8px;
47
- --taskon-leaderboard-radius-xl: 12px;
48
- }
49
-
50
8
  /* ============================================================================
51
9
  容器
52
10
  ============================================================================ */
@@ -54,8 +12,8 @@
54
12
  .taskon-leaderboard {
55
13
  font-size: 16px;
56
14
  line-height: 1.5;
57
- color: var(--taskon-leaderboard-text-lightest);
58
- background-color: var(--taskon-leaderboard-bg-body);
15
+ color: var(--taskon-color-text);
16
+ background-color: var(--taskon-color-bg-canvas);
59
17
  overflow: hidden;
60
18
  }
61
19
 
@@ -68,30 +26,30 @@
68
26
  display: flex;
69
27
  flex-direction: column;
70
28
  align-items: center;
71
- gap: var(--taskon-leaderboard-spacing-s);
29
+ gap: var(--taskon-spacing-sm);
72
30
  }
73
31
 
74
32
  .taskon-leaderboard__error-text {
75
- color: var(--taskon-leaderboard-error);
33
+ color: var(--taskon-color-error);
76
34
  font-size: 14px;
77
35
  margin: 0;
78
36
  }
79
37
 
80
38
  .taskon-leaderboard__retry-btn {
81
- padding: var(--taskon-leaderboard-spacing-xs) var(--taskon-leaderboard-spacing-m);
39
+ padding: var(--taskon-spacing-sm) var(--taskon-spacing-md);
82
40
  font-size: 14px;
83
41
  font-weight: 500;
84
- color: var(--taskon-leaderboard-primary);
42
+ color: var(--taskon-color-primary);
85
43
  background-color: transparent;
86
- border: 1px solid var(--taskon-leaderboard-primary);
87
- border-radius: var(--taskon-leaderboard-radius-m);
44
+ border: 1px solid var(--taskon-color-primary);
45
+ border-radius: var(--taskon-border-radius);
88
46
  cursor: pointer;
89
47
  transition: all 0.2s ease;
90
48
  }
91
49
 
92
50
  .taskon-leaderboard__retry-btn:hover {
93
- background-color: var(--taskon-leaderboard-primary);
94
- color: var(--taskon-leaderboard-bg-body);
51
+ background-color: var(--taskon-color-primary);
52
+ color: var(--taskon-color-text-on-primary);
95
53
  }
96
54
 
97
55
  /* ============================================================================
@@ -103,40 +61,44 @@
103
61
  flex-wrap: wrap;
104
62
  align-items: center;
105
63
  justify-content: flex-start;
106
- gap: var(--taskon-leaderboard-spacing-s);
107
- padding: var(--taskon-leaderboard-spacing-m) var(--taskon-leaderboard-spacing-l) var(--taskon-leaderboard-spacing-xs);
64
+ gap: var(--taskon-spacing-sm);
65
+ padding: var(--taskon-spacing-md) var(--taskon-spacing-md)
66
+ var(--taskon-spacing-sm);
108
67
  background-color: transparent;
109
68
  }
110
69
 
111
70
  /* Tab 按钮 - 默认状态:透明背景 (text-invisible) */
71
+
112
72
  .taskon-leaderboard-tabs__tab {
113
- padding: var(--taskon-leaderboard-spacing-xs) var(--taskon-leaderboard-spacing-m);
73
+ padding: var(--taskon-spacing-sm) var(--taskon-spacing-md);
114
74
  font-size: 14px;
115
75
  font-weight: 500;
116
76
  line-height: 20px;
117
- color: var(--taskon-leaderboard-text-lightest);
118
- background-color: var(--taskon-leaderboard-text-invisible);
77
+ color: var(--taskon-color-text);
78
+ background-color: var(--taskon-color-bg-surface-subtle);
119
79
  border: 1px solid transparent;
120
- border-radius: var(--taskon-leaderboard-radius-l);
80
+ border-radius: var(--taskon-border-radius);
121
81
  cursor: pointer;
122
82
  transition: all 0.2s ease;
123
83
  }
124
84
 
125
85
  /* Tab 悬停状态:较亮背景 (text-darkest) */
86
+
126
87
  .taskon-leaderboard-tabs__tab:hover {
127
- background-color: var(--taskon-leaderboard-text-darkest);
88
+ background-color: var(--taskon-color-bg-surface-strong);
128
89
  }
129
90
 
130
91
  /* Tab 激活状态:白色背景,黑色文字,边框 */
92
+
131
93
  .taskon-leaderboard-tabs__tab--active {
132
- background-color: var(--taskon-leaderboard-text-lightest);
133
- color: #0d0d0d;
134
- border-color: rgba(13, 13, 13, 0.1);
94
+ background-color: var(--taskon-color-text);
95
+ color: var(--taskon-color-bg-canvas);
96
+ border-color: var(--taskon-color-border);
135
97
  }
136
98
 
137
99
  .taskon-leaderboard-tabs__tab--active:hover {
138
- background-color: var(--taskon-leaderboard-text-lightest);
139
- color: #0d0d0d;
100
+ background-color: var(--taskon-color-text);
101
+ color: var(--taskon-color-bg-canvas);
140
102
  }
141
103
 
142
104
  /* ============================================================================
@@ -146,76 +108,84 @@
146
108
  .taskon-leaderboard-header {
147
109
  display: flex;
148
110
  flex-direction: column;
149
- gap: var(--taskon-leaderboard-spacing-xxs);
150
- padding: var(--taskon-leaderboard-spacing-xs) var(--taskon-leaderboard-spacing-l) var(--taskon-leaderboard-spacing-s);
111
+ gap: var(--taskon-spacing-xs);
112
+ padding: var(--taskon-spacing-sm) var(--taskon-spacing-md)
113
+ var(--taskon-spacing-sm);
151
114
  }
152
115
 
153
116
  /* 状态和时间容器 */
117
+
154
118
  .taskon-leaderboard-header__info {
155
119
  display: flex;
156
120
  align-items: center;
157
- gap: var(--taskon-leaderboard-spacing-s);
121
+ gap: var(--taskon-spacing-sm);
158
122
  }
159
123
 
160
124
  /* 状态徽章 - 11px SemiBold,绿色文字,深色背景 */
125
+
161
126
  .taskon-leaderboard-header__status {
162
127
  display: inline-flex;
163
128
  align-items: center;
164
129
  justify-content: center;
165
130
  height: 20px;
166
- padding: 0 var(--taskon-leaderboard-spacing-xs);
131
+ padding: 0 var(--taskon-spacing-sm);
167
132
  font-size: 11px;
168
133
  font-weight: 600;
169
134
  line-height: 12px;
170
- border-radius: var(--taskon-leaderboard-radius-s);
171
- background-color: var(--taskon-leaderboard-text-darkest);
135
+ border-radius: var(--taskon-border-radius-sm);
136
+ background-color: var(--taskon-color-border);
172
137
  }
173
138
 
174
139
  .taskon-leaderboard-header__status--ongoing {
175
- color: var(--taskon-leaderboard-secondary);
140
+ color: var(--taskon-color-secondary);
176
141
  }
177
142
 
178
143
  .taskon-leaderboard-header__status--ended {
179
- color: var(--taskon-leaderboard-error);
144
+ color: var(--taskon-color-error);
180
145
  }
181
146
 
182
147
  .taskon-leaderboard-header__status--upcoming {
183
- color: var(--taskon-leaderboard-primary);
148
+ color: var(--taskon-color-primary);
184
149
  }
185
150
 
186
151
  /* 时间范围 - 16px Regular,80% 白色 */
152
+
187
153
  .taskon-leaderboard-header__time {
188
154
  font-size: 16px;
189
155
  font-weight: 400;
190
156
  line-height: 24px;
191
- color: var(--taskon-leaderboard-text-lighter);
157
+ color: var(--taskon-color-text-secondary);
192
158
  }
193
159
 
194
160
  /* 分隔线 - 竖线 */
161
+
195
162
  .taskon-leaderboard-header__separator {
196
163
  width: 1px;
197
164
  height: 16px;
198
- background-color: var(--taskon-leaderboard-text-dark);
165
+ background-color: var(--taskon-color-text-disabled);
199
166
  }
200
167
 
201
168
  /* 参与人数容器 */
169
+
202
170
  .taskon-leaderboard-header__participants {
203
171
  display: flex;
204
172
  align-items: center;
205
- gap: var(--taskon-leaderboard-spacing-xs);
173
+ gap: var(--taskon-spacing-sm);
206
174
  font-size: 16px;
207
175
  font-weight: 500;
208
176
  line-height: 24px;
209
177
  }
210
178
 
211
179
  /* 参与人数标签 - 60% 白色 */
180
+
212
181
  .taskon-leaderboard-header__participants-label {
213
- color: var(--taskon-leaderboard-text-light);
182
+ color: var(--taskon-color-text-tertiary);
214
183
  }
215
184
 
216
185
  /* 参与人数值 - 80% 白色 */
186
+
217
187
  .taskon-leaderboard-header__participants-value {
218
- color: var(--taskon-leaderboard-text-lighter);
188
+ color: var(--taskon-color-text-secondary);
219
189
  }
220
190
 
221
191
  /* ============================================================================
@@ -225,69 +195,74 @@
225
195
  .taskon-leaderboard-header__title-row {
226
196
  display: flex;
227
197
  align-items: center;
228
- gap: var(--taskon-leaderboard-spacing-s);
229
- margin-bottom: var(--taskon-leaderboard-spacing-xs);
198
+ gap: var(--taskon-spacing-sm);
199
+ margin-bottom: var(--taskon-spacing-sm);
230
200
  }
231
201
 
232
202
  .taskon-leaderboard-header__title {
233
203
  margin: 0;
234
204
  font-size: 18px;
235
205
  font-weight: 600;
236
- color: var(--taskon-leaderboard-text-lightest);
206
+ color: var(--taskon-color-text);
237
207
  }
238
208
 
239
209
  /* 奖励信息容器 - 参考 Figma 设计:水平布局,16px 间距 */
210
+
240
211
  .taskon-leaderboard-header__reward-info {
241
212
  display: flex;
242
213
  align-items: center;
243
- gap: var(--taskon-leaderboard-spacing-m);
214
+ gap: var(--taskon-spacing-md);
244
215
  }
245
216
 
246
217
  /* 奖励项 - 水平布局,8px 间距 */
218
+
247
219
  .taskon-leaderboard-header__reward-item {
248
220
  display: flex;
249
221
  align-items: center;
250
- gap: var(--taskon-leaderboard-spacing-xs);
222
+ gap: var(--taskon-spacing-sm);
251
223
  font-size: 16px;
252
224
  line-height: 24px;
253
225
  white-space: nowrap;
254
226
  }
255
227
 
256
228
  /* 奖励标签 - 16px Regular 白色 */
229
+
257
230
  .taskon-leaderboard-header__reward-label {
258
231
  font-weight: 400;
259
- color: var(--taskon-leaderboard-text-lightest);
232
+ color: var(--taskon-color-text);
260
233
  }
261
234
 
262
235
  /* 奖励数值 - 16px SemiBold 主色 */
236
+
263
237
  .taskon-leaderboard-header__reward-value {
264
238
  font-weight: 600;
265
- color: var(--taskon-leaderboard-primary);
239
+ color: var(--taskon-color-primary);
266
240
  }
267
241
 
268
242
  /* 奖励分隔线 - 12px 高度 */
243
+
269
244
  .taskon-leaderboard-header__reward-separator {
270
245
  width: 1px;
271
246
  height: 12px;
272
- background-color: var(--taskon-leaderboard-text-darkest);
247
+ background-color: var(--taskon-color-border);
273
248
  }
274
249
 
275
250
  .taskon-leaderboard-header__reward-rules-btn {
276
251
  margin-left: auto;
277
- padding: var(--taskon-leaderboard-spacing-xxs) var(--taskon-leaderboard-spacing-s);
252
+ padding: var(--taskon-spacing-xs) var(--taskon-spacing-sm);
278
253
  font-size: 13px;
279
254
  font-weight: 500;
280
- color: var(--taskon-leaderboard-primary);
255
+ color: var(--taskon-color-primary);
281
256
  background-color: transparent;
282
- border: 1px solid var(--taskon-leaderboard-primary);
283
- border-radius: var(--taskon-leaderboard-radius-m);
257
+ border: 1px solid var(--taskon-color-primary);
258
+ border-radius: var(--taskon-border-radius);
284
259
  cursor: pointer;
285
260
  transition: all 0.2s ease;
286
261
  }
287
262
 
288
263
  .taskon-leaderboard-header__reward-rules-btn:hover {
289
- background-color: var(--taskon-leaderboard-primary);
290
- color: var(--taskon-leaderboard-bg-body);
264
+ background-color: var(--taskon-color-primary);
265
+ color: var(--taskon-color-text-on-primary);
291
266
  }
292
267
 
293
268
  /* ============================================================================
@@ -295,7 +270,50 @@
295
270
  ============================================================================ */
296
271
 
297
272
  .taskon-leaderboard-table {
298
- padding: 0 var(--taskon-leaderboard-spacing-l);
273
+ padding: 0 var(--taskon-spacing-md);
274
+ }
275
+
276
+ /* Bridge generic Table defaults to unified theme tokens inside Leaderboard. */
277
+
278
+ .taskon-leaderboard .taskon-table__header {
279
+ color: var(--taskon-color-text-disabled);
280
+ background-color: var(--taskon-color-bg-surface-subtle);
281
+ }
282
+
283
+ .taskon-leaderboard .taskon-table__row:hover {
284
+ background-color: var(--taskon-color-bg-surface-subtle);
285
+ }
286
+
287
+ .taskon-leaderboard .taskon-table--striped .taskon-table__row:nth-child(even) {
288
+ background-color: var(--taskon-color-bg-surface-subtle);
289
+ }
290
+
291
+ .taskon-leaderboard .taskon-table--bordered .taskon-table__row td {
292
+ border-top: 1px solid var(--taskon-color-border-secondary);
293
+ border-bottom: 1px solid var(--taskon-color-border-secondary);
294
+ }
295
+
296
+ .taskon-leaderboard .taskon-table__cell {
297
+ color: var(--taskon-color-text);
298
+ }
299
+
300
+ .taskon-leaderboard .taskon-table__loading,
301
+ .taskon-leaderboard .taskon-table__empty,
302
+ .taskon-leaderboard .taskon-table__empty-desc {
303
+ color: var(--taskon-color-text-disabled);
304
+ }
305
+
306
+ .taskon-leaderboard .taskon-table__empty-title {
307
+ color: var(--taskon-color-text);
308
+ }
309
+
310
+ .taskon-leaderboard .taskon-table__loading-spinner {
311
+ border: 2px solid var(--taskon-color-text-disabled);
312
+ border-top-color: var(--taskon-color-primary);
313
+ }
314
+
315
+ .taskon-leaderboard .taskon-table__loading-overlay {
316
+ background-color: var(--taskon-color-bg-mask);
299
317
  }
300
318
 
301
319
  /* ============================================================================
@@ -303,29 +321,33 @@
303
321
  ============================================================================ */
304
322
 
305
323
  /* 奖励显示 - 参考 Figma 设计:16px SemiBold 白色 */
324
+
306
325
  .taskon-leaderboard-table__reward {
307
326
  display: inline-flex;
308
327
  align-items: center;
309
- gap: var(--taskon-leaderboard-spacing-xs);
328
+ gap: var(--taskon-spacing-sm);
310
329
  font-size: 16px;
311
330
  font-weight: 600;
312
331
  line-height: 24px;
313
- color: var(--taskon-leaderboard-text-lightest);
332
+ color: var(--taskon-color-text);
314
333
  white-space: nowrap;
315
334
  flex-wrap: nowrap;
316
335
  }
317
336
 
318
337
  /* 奖励类型标签(如 "积分名:") */
338
+
319
339
  .taskon-leaderboard-table__reward-type {
320
- color: var(--taskon-leaderboard-text-lightest);
340
+ color: var(--taskon-color-text);
321
341
  }
322
342
 
323
343
  /* 奖励值(高亮显示) */
344
+
324
345
  .taskon-leaderboard-table__reward-value {
325
- color: var(--taskon-leaderboard-secondary);
346
+ color: var(--taskon-color-secondary);
326
347
  }
327
348
 
328
349
  /* 奖励图标 */
350
+
329
351
  .taskon-leaderboard-table__reward-icon {
330
352
  width: 18px;
331
353
  height: 18px;
@@ -333,62 +355,67 @@
333
355
  }
334
356
 
335
357
  /* 潜在奖励(尚未获得) */
358
+
336
359
  .taskon-leaderboard-table__reward--potential {
337
360
  opacity: 0.8;
338
361
  }
339
362
 
340
363
  /* 链信息 */
364
+
341
365
  .taskon-leaderboard-table__reward-chain {
342
366
  font-size: 14px;
343
367
  font-weight: 400;
344
- color: var(--taskon-leaderboard-text-dark);
368
+ color: var(--taskon-color-text-disabled);
345
369
  }
346
370
 
347
371
  /* 未达标状态 - Not Qualified: rgba(255,255,255,0.6) */
372
+
348
373
  .taskon-leaderboard-table__reward--not-qualified {
349
374
  font-size: 16px;
350
375
  font-weight: 600;
351
376
  line-height: 24px;
352
- color: var(--taskon-leaderboard-text-light);
377
+ color: var(--taskon-color-text-tertiary);
353
378
  }
354
379
 
355
380
  /* 禁用提示文本 */
381
+
356
382
  .taskon-leaderboard-table__disabled-tip {
357
383
  width: 100%;
358
- padding-top: var(--taskon-leaderboard-spacing-xs);
384
+ padding-top: var(--taskon-spacing-sm);
359
385
  font-size: 14px;
360
386
  font-weight: 500;
361
387
  line-height: 20px;
362
- color: var(--taskon-leaderboard-text-lightest);
388
+ color: var(--taskon-color-text);
363
389
  }
364
390
 
365
391
  .taskon-leaderboard-table__disabled-link {
366
- color: var(--taskon-leaderboard-primary);
392
+ color: var(--taskon-color-link);
367
393
  text-decoration: underline;
368
394
  cursor: pointer;
369
395
  }
370
396
 
371
397
  /* 操作按钮 */
398
+
372
399
  .taskon-leaderboard-table__action-btn {
373
400
  display: inline-flex;
374
401
  align-items: center;
375
402
  justify-content: center;
376
403
  height: 34px;
377
- padding: var(--taskon-leaderboard-spacing-xs) var(--taskon-leaderboard-spacing-l);
404
+ padding: var(--taskon-spacing-sm) var(--taskon-spacing-md);
378
405
  font-size: 14px;
379
406
  font-weight: 500;
380
407
  line-height: 20px;
381
- color: var(--taskon-leaderboard-text-lightest);
408
+ color: var(--taskon-color-text);
382
409
  background-color: transparent;
383
- border: 1px solid var(--taskon-leaderboard-text-darkest);
384
- border-radius: var(--taskon-leaderboard-radius-m);
410
+ border: 1px solid var(--taskon-color-border);
411
+ border-radius: var(--taskon-border-radius);
385
412
  cursor: pointer;
386
413
  transition: all 0.2s ease;
387
414
  }
388
415
 
389
416
  .taskon-leaderboard-table__action-btn:hover:not(:disabled) {
390
- background-color: var(--taskon-leaderboard-text-invisible);
391
- border-color: var(--taskon-leaderboard-text-dark);
417
+ background-color: var(--taskon-color-bg-surface-subtle);
418
+ border-color: var(--taskon-color-text-disabled);
392
419
  }
393
420
 
394
421
  .taskon-leaderboard-table__action-btn:disabled {
@@ -410,10 +437,11 @@
410
437
  font-size: 16px;
411
438
  font-weight: 500;
412
439
  line-height: normal;
413
- color: var(--taskon-leaderboard-text-lightest);
440
+ color: var(--taskon-color-text);
414
441
  }
415
442
 
416
443
  /* 六边形徽章样式 */
444
+
417
445
  .taskon-leaderboard-rank--badge {
418
446
  position: relative;
419
447
  width: 27px;
@@ -425,29 +453,35 @@
425
453
  }
426
454
 
427
455
  /* 六边形路径 - 通过 CSS 变量控制颜色 */
456
+
428
457
  .taskon-leaderboard-rank__hexagon-path {
429
458
  stroke-width: 1;
430
459
  }
431
460
 
432
461
  /* 金色徽章 - 第1名 */
462
+
433
463
  .taskon-leaderboard-rank--gold .taskon-leaderboard-rank__hexagon-path {
434
- fill: var(--taskon-leaderboard-rank-gold);
435
- stroke: var(--taskon-leaderboard-rank-gold-stroke);
464
+ /* Decorative medal colors are intentionally fixed. */
465
+ fill: #ffbf29;
466
+ stroke: #ffd465;
436
467
  }
437
468
 
438
469
  /* 银色徽章 - 第2名 */
470
+
439
471
  .taskon-leaderboard-rank--silver .taskon-leaderboard-rank__hexagon-path {
440
- fill: var(--taskon-leaderboard-rank-silver);
441
- stroke: var(--taskon-leaderboard-rank-silver-stroke);
472
+ fill: #c0c0c0;
473
+ stroke: #d8d8d8;
442
474
  }
443
475
 
444
476
  /* 铜色徽章 - 第3名 */
477
+
445
478
  .taskon-leaderboard-rank--bronze .taskon-leaderboard-rank__hexagon-path {
446
- fill: var(--taskon-leaderboard-rank-bronze);
447
- stroke: var(--taskon-leaderboard-rank-bronze-stroke);
479
+ fill: #cd7f32;
480
+ stroke: #e0a060;
448
481
  }
449
482
 
450
483
  /* 徽章上的数字 */
484
+
451
485
  .taskon-leaderboard-rank__number-overlay {
452
486
  position: absolute;
453
487
  top: 50%;
@@ -455,17 +489,19 @@
455
489
  transform: translate(-50%, -50%);
456
490
  font-size: 14px;
457
491
  font-weight: 600;
458
- color: var(--taskon-leaderboard-text-lightest);
492
+ color: var(--taskon-color-text);
459
493
  text-align: center;
460
494
  }
461
495
 
462
496
  /* 未排名状态 */
497
+
463
498
  .taskon-leaderboard-rank--na,
464
499
  .taskon-leaderboard-rank--unranked {
465
- color: var(--taskon-leaderboard-text-light);
500
+ color: var(--taskon-color-text-tertiary);
466
501
  }
467
502
 
468
503
  /* 普通数字排名 */
504
+
469
505
  .taskon-leaderboard-rank--number {
470
506
  font-size: 16px;
471
507
  font-weight: 500;
@@ -491,11 +527,12 @@
491
527
  }
492
528
 
493
529
  /* 用户名 - 16px SemiBold 白色 */
530
+
494
531
  .taskon-leaderboard-user__name {
495
532
  font-size: 16px;
496
533
  font-weight: 600;
497
534
  line-height: 24px;
498
- color: var(--taskon-leaderboard-text-lightest);
535
+ color: var(--taskon-color-text);
499
536
  white-space: nowrap;
500
537
  overflow: hidden;
501
538
  text-overflow: ellipsis;
@@ -503,11 +540,12 @@
503
540
  }
504
541
 
505
542
  /* YOU 标签 - 16px SemiBold 绿色 (#1affab) */
543
+
506
544
  .taskon-leaderboard-user__you-badge {
507
545
  font-size: 16px;
508
546
  font-weight: 600;
509
547
  line-height: normal;
510
- color: var(--taskon-leaderboard-secondary);
548
+ color: var(--taskon-color-secondary);
511
549
  text-transform: uppercase;
512
550
  }
513
551
 
@@ -519,12 +557,13 @@
519
557
  display: flex;
520
558
  align-items: center;
521
559
  justify-content: center;
522
- gap: var(--taskon-leaderboard-spacing-m);
523
- padding: var(--taskon-leaderboard-spacing-l) var(--taskon-leaderboard-spacing-m);
560
+ gap: var(--taskon-spacing-md);
561
+ padding: var(--taskon-spacing-md) var(--taskon-spacing-md);
524
562
  border-top: none;
525
563
  }
526
564
 
527
565
  /* 分页按钮 - 圆形 30px */
566
+
528
567
  .taskon-leaderboard-pagination .taskon-pagination-btn {
529
568
  width: 30px;
530
569
  height: 30px;
@@ -535,14 +574,14 @@
535
574
  align-items: center;
536
575
  justify-content: center;
537
576
  background-color: transparent;
538
- border: 1px solid var(--taskon-leaderboard-text-darkest);
539
- color: var(--taskon-leaderboard-text-lightest);
577
+ border: 1px solid var(--taskon-color-border);
578
+ color: var(--taskon-color-text);
540
579
  transition: all 0.2s ease;
541
580
  }
542
581
 
543
582
  .taskon-leaderboard-pagination .taskon-pagination-btn:hover:not(:disabled) {
544
- background-color: var(--taskon-leaderboard-text-invisible);
545
- border-color: var(--taskon-leaderboard-text-dark);
583
+ background-color: var(--taskon-color-bg-surface-subtle);
584
+ border-color: var(--taskon-color-text-disabled);
546
585
  }
547
586
 
548
587
  .taskon-leaderboard-pagination .taskon-pagination-btn:disabled {
@@ -551,12 +590,14 @@
551
590
  }
552
591
 
553
592
  /* 分页图标 */
593
+
554
594
  .taskon-leaderboard-pagination .taskon-pagination-icon {
555
595
  width: 16px;
556
596
  height: 16px;
557
597
  }
558
598
 
559
599
  /* 页码信息 - 16px Regular,格式:1 / 5 */
600
+
560
601
  .taskon-leaderboard-pagination .taskon-pagination-info {
561
602
  display: flex;
562
603
  align-items: center;
@@ -565,17 +606,20 @@
565
606
  }
566
607
 
567
608
  /* 当前页码 - 白色 */
609
+
568
610
  .taskon-leaderboard-pagination .taskon-pagination-info-current {
569
- color: var(--taskon-leaderboard-text-lightest);
611
+ color: var(--taskon-color-text);
570
612
  }
571
613
 
572
614
  /* 分隔符和总页数 - 灰色 */
615
+
573
616
  .taskon-leaderboard-pagination .taskon-pagination-info-separator,
574
617
  .taskon-leaderboard-pagination .taskon-pagination-info-total {
575
- color: var(--taskon-leaderboard-text-dark);
618
+ color: var(--taskon-color-text-disabled);
576
619
  }
577
620
 
578
621
  /* 隐藏范围文字 */
622
+
579
623
  .taskon-leaderboard-pagination .taskon-pagination-range {
580
624
  display: none;
581
625
  }
@@ -591,8 +635,8 @@
591
635
  display: flex;
592
636
  align-items: center;
593
637
  justify-content: center;
594
- padding: var(--taskon-leaderboard-spacing-l);
595
- background-color: rgba(0, 0, 0, 0.5);
638
+ padding: var(--taskon-spacing-md);
639
+ background-color: var(--taskon-color-bg-mask);
596
640
  }
597
641
 
598
642
  .taskon-leaderboard-modal {
@@ -600,8 +644,8 @@
600
644
  width: 100%;
601
645
  max-width: 520px;
602
646
  max-height: 80vh;
603
- background-color: var(--taskon-leaderboard-bg-body);
604
- border-radius: var(--taskon-leaderboard-radius-xl);
647
+ background-color: var(--taskon-color-bg-canvas);
648
+ border-radius: var(--taskon-border-radius-lg);
605
649
  overflow: hidden;
606
650
  display: flex;
607
651
  flex-direction: column;
@@ -611,17 +655,18 @@
611
655
  display: flex;
612
656
  align-items: center;
613
657
  justify-content: space-between;
614
- padding: var(--taskon-leaderboard-spacing-m) var(--taskon-leaderboard-spacing-l);
615
- border-bottom: 1px solid var(--taskon-leaderboard-text-darkest);
658
+ padding: var(--taskon-spacing-md) var(--taskon-spacing-md);
659
+ border-bottom: 1px solid var(--taskon-color-border);
616
660
  }
617
661
 
618
662
  /* 弹窗标题 - 24px SemiBold 白色 */
663
+
619
664
  .taskon-leaderboard-modal__title {
620
665
  margin: 0;
621
666
  font-size: 24px;
622
667
  font-weight: 600;
623
668
  line-height: 32px;
624
- color: var(--taskon-leaderboard-text-lightest);
669
+ color: var(--taskon-color-text);
625
670
  }
626
671
 
627
672
  .taskon-leaderboard-modal__close {
@@ -633,15 +678,15 @@
633
678
  padding: 0;
634
679
  background-color: transparent;
635
680
  border: none;
636
- border-radius: var(--taskon-leaderboard-radius-m);
681
+ border-radius: var(--taskon-border-radius);
637
682
  cursor: pointer;
638
- color: var(--taskon-leaderboard-text-dark);
683
+ color: var(--taskon-color-text-disabled);
639
684
  transition: all 0.2s ease;
640
685
  }
641
686
 
642
687
  .taskon-leaderboard-modal__close:hover {
643
- background-color: var(--taskon-leaderboard-text-darkest);
644
- color: var(--taskon-leaderboard-text-lightest);
688
+ background-color: var(--taskon-color-border);
689
+ color: var(--taskon-color-text);
645
690
  }
646
691
 
647
692
  .taskon-leaderboard-modal__close svg {
@@ -650,81 +695,90 @@
650
695
  }
651
696
 
652
697
  /* 弹窗内容容器 - gap 20px */
698
+
653
699
  .taskon-leaderboard-modal__content {
654
700
  display: flex;
655
701
  flex-direction: column;
656
- gap: var(--taskon-leaderboard-spacing-l);
657
- padding: var(--taskon-leaderboard-spacing-l);
702
+ gap: var(--taskon-spacing-md);
703
+ padding: var(--taskon-spacing-md);
658
704
  overflow-y: auto;
659
705
  }
660
706
 
661
707
  /* 描述文本 - 16px Regular 暗色 */
708
+
662
709
  .taskon-leaderboard-modal__desc {
663
710
  margin: 0;
664
711
  font-size: 16px;
665
712
  font-weight: 400;
666
713
  line-height: 24px;
667
- color: var(--taskon-leaderboard-text-dark);
714
+ color: var(--taskon-color-text-disabled);
668
715
  }
669
716
 
670
717
  /* 章节容器 - gap 8px */
718
+
671
719
  .taskon-leaderboard-modal__section {
672
720
  display: flex;
673
721
  flex-direction: column;
674
- gap: var(--taskon-leaderboard-spacing-xs);
722
+ gap: var(--taskon-spacing-sm);
675
723
  }
676
724
 
677
725
  /* 章节标题 - 16px Regular 稍亮暗色 */
726
+
678
727
  .taskon-leaderboard-modal__section-title {
679
728
  margin: 0;
680
729
  font-size: 16px;
681
730
  font-weight: 400;
682
731
  line-height: 24px;
683
- color: var(--taskon-leaderboard-text-light);
732
+ color: var(--taskon-color-text-tertiary);
684
733
  }
685
734
 
686
735
  /* 时间范围 - 14px Medium 白色 */
736
+
687
737
  .taskon-leaderboard-modal__period {
688
738
  margin: 0;
689
739
  font-size: 14px;
690
740
  font-weight: 500;
691
741
  line-height: normal;
692
- color: var(--taskon-leaderboard-text-lightest);
742
+ color: var(--taskon-color-text);
693
743
  text-overflow: ellipsis;
694
744
  overflow: hidden;
695
745
  }
696
746
 
697
747
  /* 奖励层级列表 - 无背景无边框,紧凑列表 */
748
+
698
749
  .taskon-leaderboard-modal__tiers {
699
750
  display: flex;
700
751
  flex-direction: column;
701
- gap: var(--taskon-leaderboard-spacing-xs);
752
+ gap: var(--taskon-spacing-sm);
702
753
  }
703
754
 
704
755
  /* 奖励层级行 - flex 布局,gap 20px */
756
+
705
757
  .taskon-leaderboard-modal__tier {
706
758
  display: flex;
707
759
  align-items: center;
708
- gap: var(--taskon-leaderboard-spacing-l);
760
+ gap: var(--taskon-spacing-md);
709
761
  padding: 0;
710
762
  background-color: transparent;
711
763
  border-radius: 0;
712
764
  }
713
765
 
714
766
  /* 排名范围 - 14px Regular 白色 */
767
+
715
768
  .taskon-leaderboard-modal__tier-rank {
716
769
  flex-shrink: 0;
717
770
  min-width: 70px;
718
771
  font-size: 14px;
719
772
  font-weight: 400;
720
773
  line-height: 20px;
721
- color: var(--taskon-leaderboard-text-lightest);
774
+ color: var(--taskon-color-text);
722
775
  text-overflow: ellipsis;
723
776
  overflow: hidden;
724
777
  white-space: nowrap;
725
778
  }
726
779
 
727
780
  /* 奖励内容容器 */
781
+
728
782
  .taskon-leaderboard-modal__tier-reward {
729
783
  display: flex;
730
784
  align-items: center;
@@ -732,25 +786,28 @@
732
786
  font-size: 16px;
733
787
  font-weight: 600;
734
788
  line-height: 24px;
735
- color: var(--taskon-leaderboard-text-lightest);
789
+ color: var(--taskon-color-text);
736
790
  }
737
791
 
738
792
  /* 分配方式文本 - 16px SemiBold 白色 */
793
+
739
794
  .taskon-leaderboard-modal__tier-distribute {
740
795
  font-size: 16px;
741
796
  font-weight: 600;
742
797
  line-height: 24px;
743
- color: var(--taskon-leaderboard-text-lightest);
798
+ color: var(--taskon-color-text);
744
799
  }
745
800
 
746
801
  /* Token 图标容器 */
802
+
747
803
  .taskon-leaderboard-modal__tier-token {
748
804
  display: flex;
749
805
  align-items: center;
750
- gap: var(--taskon-leaderboard-spacing-xs);
806
+ gap: var(--taskon-spacing-sm);
751
807
  }
752
808
 
753
809
  /* Token 图标 */
810
+
754
811
  .taskon-leaderboard-modal__tier-token-icon {
755
812
  width: 26px;
756
813
  height: 24px;
@@ -758,6 +815,7 @@
758
815
  }
759
816
 
760
817
  /* 奖励金额 - 数字绿色,单位白色 */
818
+
761
819
  .taskon-leaderboard-modal__tier-amount {
762
820
  font-size: 16px;
763
821
  font-weight: 600;
@@ -765,14 +823,15 @@
765
823
  }
766
824
 
767
825
  .taskon-leaderboard-modal__tier-amount-value {
768
- color: var(--taskon-leaderboard-primary);
826
+ color: var(--taskon-color-primary);
769
827
  }
770
828
 
771
829
  .taskon-leaderboard-modal__tier-amount-symbol {
772
- color: var(--taskon-leaderboard-text-lightest);
830
+ color: var(--taskon-color-text);
773
831
  }
774
832
 
775
833
  /* 隐藏旧的 tier-header 和 tier-count */
834
+
776
835
  .taskon-leaderboard-modal__tier-header {
777
836
  display: none;
778
837
  }
@@ -786,23 +845,167 @@
786
845
  ============================================================================ */
787
846
 
788
847
  @media (max-width: 640px) {
848
+ .taskon-leaderboard {
849
+ font-size: 14px;
850
+ }
851
+
789
852
  .taskon-leaderboard-tabs {
853
+ flex-wrap: nowrap;
854
+ gap: var(--taskon-spacing-xs);
855
+ padding: var(--taskon-spacing-sm);
790
856
  overflow-x: auto;
791
857
  -webkit-overflow-scrolling: touch;
792
858
  }
793
859
 
794
860
  .taskon-leaderboard-tabs__tab {
861
+ flex-shrink: 0;
862
+ padding: var(--taskon-spacing-xs) var(--taskon-spacing-sm);
863
+ font-size: 12px;
864
+ line-height: 18px;
795
865
  white-space: nowrap;
796
866
  }
797
867
 
868
+ .taskon-leaderboard-header {
869
+ gap: var(--taskon-spacing-sm);
870
+ padding: 0 var(--taskon-spacing-sm) var(--taskon-spacing-sm);
871
+ }
872
+
873
+ .taskon-leaderboard-header__info {
874
+ flex-wrap: wrap;
875
+ gap: var(--taskon-spacing-xs);
876
+ }
877
+
878
+ .taskon-leaderboard-header__time {
879
+ width: 100%;
880
+ font-size: 12px;
881
+ line-height: 18px;
882
+ }
883
+
884
+ .taskon-leaderboard-header__separator,
885
+ .taskon-leaderboard-header__reward-separator {
886
+ display: none;
887
+ }
888
+
889
+ .taskon-leaderboard-header__participants {
890
+ font-size: 13px;
891
+ line-height: 18px;
892
+ }
893
+
798
894
  .taskon-leaderboard-header__reward-info {
799
895
  flex-direction: column;
800
896
  align-items: flex-start;
897
+ gap: var(--taskon-spacing-xs);
898
+ }
899
+
900
+ .taskon-leaderboard-header__reward-item {
901
+ font-size: 13px;
902
+ line-height: 18px;
801
903
  }
802
904
 
803
905
  .taskon-leaderboard-header__reward-rules-btn {
804
906
  margin-left: 0;
805
907
  width: 100%;
908
+ justify-content: center;
909
+ }
910
+
911
+ .taskon-leaderboard-table {
912
+ padding: 0 var(--taskon-spacing-sm);
913
+ }
914
+
915
+ .taskon-leaderboard .taskon-table__header,
916
+ .taskon-leaderboard .taskon-table__cell {
917
+ padding: var(--taskon-spacing-xs) var(--taskon-spacing-sm);
918
+ font-size: 13px;
919
+ line-height: 18px;
920
+ }
921
+
922
+ .taskon-leaderboard .taskon-table__row {
923
+ height: 60px;
924
+ }
925
+
926
+ .taskon-leaderboard-user__name,
927
+ .taskon-leaderboard-user__you-badge,
928
+ .taskon-leaderboard-table__reward,
929
+ .taskon-leaderboard-table__reward--not-qualified {
930
+ font-size: 13px;
931
+ line-height: 18px;
932
+ }
933
+
934
+ .taskon-leaderboard-table__reward {
935
+ white-space: normal;
936
+ }
937
+
938
+ .taskon-leaderboard-table__reward-chain {
939
+ font-size: 12px;
940
+ line-height: 16px;
941
+ }
942
+
943
+ .taskon-leaderboard-pagination {
944
+ gap: var(--taskon-spacing-sm);
945
+ padding: var(--taskon-spacing-sm);
946
+ }
947
+
948
+ .taskon-leaderboard-pagination .taskon-pagination-btn {
949
+ width: 28px;
950
+ height: 28px;
951
+ min-width: 28px;
952
+ }
953
+
954
+ .taskon-leaderboard-pagination .taskon-pagination-info {
955
+ font-size: 14px;
956
+ }
957
+
958
+ .taskon-leaderboard-modal {
959
+ max-height: 88vh;
960
+ }
961
+
962
+ .taskon-leaderboard-modal__content {
963
+ gap: var(--taskon-spacing-sm);
964
+ padding: var(--taskon-spacing-sm);
965
+ }
966
+
967
+ .taskon-leaderboard-modal__title {
968
+ font-size: 20px;
969
+ line-height: 28px;
970
+ }
971
+
972
+ .taskon-leaderboard-modal__desc,
973
+ .taskon-leaderboard-modal__section-title,
974
+ .taskon-leaderboard-modal__tier-distribute,
975
+ .taskon-leaderboard-modal__tier-amount {
976
+ font-size: 14px;
977
+ line-height: 20px;
978
+ }
979
+
980
+ .taskon-leaderboard-modal__period {
981
+ font-size: 12px;
982
+ line-height: 18px;
983
+ }
984
+
985
+ .taskon-leaderboard-modal__tier {
986
+ align-items: flex-start;
987
+ flex-wrap: wrap;
988
+ gap: var(--taskon-spacing-xs);
989
+ }
990
+
991
+ .taskon-leaderboard-modal__tier-rank {
992
+ min-width: 0;
993
+ width: 100%;
994
+ font-size: 12px;
995
+ line-height: 18px;
996
+ }
997
+
998
+ .taskon-leaderboard-modal__tier-reward {
999
+ width: 100%;
1000
+ flex-wrap: wrap;
1001
+ gap: var(--taskon-spacing-xs);
1002
+ font-size: 14px;
1003
+ line-height: 20px;
1004
+ }
1005
+
1006
+ .taskon-leaderboard-modal__tier-token-icon {
1007
+ width: 20px;
1008
+ height: 20px;
806
1009
  }
807
1010
 
808
1011
  .taskon-leaderboard-pagination {