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

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 (27) hide show
  1. package/README.md +1 -1
  2. package/dist/CommunityTaskList.css +1222 -1174
  3. package/dist/EligibilityInfo.css +443 -263
  4. package/dist/LeaderboardWidget.css +355 -152
  5. package/dist/Quest.css +690 -408
  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-C9Gv8KOF.js} +65 -17
  10. package/dist/chunks/{EligibilityInfo-DGBffKN8.js → EligibilityInfo-D-Fuy9GE.js} +4 -4
  11. package/dist/chunks/{LeaderboardWidget-DPOQVXkT.js → LeaderboardWidget-BV2D2q1N.js} +2 -2
  12. package/dist/chunks/{PageBuilder-WCZvxL2j.js → PageBuilder-DQoU4Mwf.js} +5 -5
  13. package/dist/chunks/{Quest-DjGH_8bx.js → Quest-B5NyVr3o.js} +56 -15
  14. package/dist/chunks/{TaskOnProvider-iannERG1.js → TaskOnProvider-93UxARFo.js} +1 -1
  15. package/dist/chunks/{ThemeProvider-DNJqI2lD.js → ThemeProvider-CPI_roeh.js} +3 -3
  16. package/dist/chunks/{UserCenterWidget-CAhgp46j.js → UserCenterWidget-BRtigY_S.js} +6 -5
  17. package/dist/chunks/{UserCenterWidget-B0O-f_xl.js → UserCenterWidget-cADBSVg7.js} +21 -7
  18. package/dist/chunks/{dynamic-import-helper-B2j_dZ4V.js → dynamic-import-helper-DwXlQC0S.js} +1 -1
  19. package/dist/community-task.js +1 -1
  20. package/dist/core.js +2 -2
  21. package/dist/dynamic-import-helper.css +424 -303
  22. package/dist/index.js +9 -9
  23. package/dist/leaderboard.js +2 -2
  24. package/dist/page-builder.js +1 -1
  25. package/dist/quest.js +1 -1
  26. package/dist/user-center.js +5 -5
  27. package/package.json +4 -1
@@ -4,7 +4,21 @@
4
4
  * 使用 taskon-dialog-* 命名空间
5
5
  */
6
6
 
7
+ /*
8
+ * Responsive base styles
9
+ *
10
+ * Keep mobile breakpoints and fallback patterns centralized here.
11
+ * Components should reuse these mixins instead of duplicating query logic.
12
+ */
13
+
14
+ /*
15
+ * Desktop-up mixin:
16
+ * 1) Enable desktop enhancement in wider containers
17
+ * 2) Keep viewport media query as fallback
18
+ */
19
+
7
20
  /* ==================== 遮罩层 ==================== */
21
+
8
22
  .taskon-dialog-overlay {
9
23
  position: fixed;
10
24
  inset: 0;
@@ -40,6 +54,7 @@
40
54
  }
41
55
 
42
56
  /* ==================== 弹窗内容 ==================== */
57
+
43
58
  .taskon-dialog-content {
44
59
  position: fixed;
45
60
  top: 50%;
@@ -48,14 +63,14 @@
48
63
  z-index: 9999;
49
64
 
50
65
  /* 尺寸 */
51
- width: 90vw;
66
+ width: 95vw;
52
67
  max-width: 500px;
53
- max-height: 85vh;
68
+ max-height: 90vh;
54
69
 
55
70
  /* 弹层统一使用 floating 背景 token */
56
71
  background-color: var(--taskon-color-bg-floating);
57
72
  color: var(--taskon-color-text);
58
- border-radius: var(--taskon-border-radius-lg);
73
+ border-radius: var(--taskon-border-radius);
59
74
  box-shadow: 0 25px 50px -12px var(--taskon-color-bg-mask);
60
75
 
61
76
  /* 布局 */
@@ -97,6 +112,7 @@
97
112
  }
98
113
 
99
114
  /* ==================== 无障碍标题/描述(屏幕阅读器可见) ==================== */
115
+
100
116
  .taskon-dialog-title--sr-only,
101
117
  .taskon-dialog-description--sr-only {
102
118
  position: absolute;
@@ -111,10 +127,11 @@
111
127
  }
112
128
 
113
129
  /* ==================== 头部操作区 ==================== */
130
+
114
131
  .taskon-dialog-header {
115
132
  position: absolute;
116
- top: 16px;
117
- right: 16px;
133
+ top: 12px;
134
+ right: 12px;
118
135
  z-index: 1;
119
136
 
120
137
  display: flex;
@@ -128,6 +145,7 @@
128
145
  }
129
146
 
130
147
  /* ==================== 关闭按钮 ==================== */
148
+
131
149
  .taskon-dialog-close {
132
150
  display: flex;
133
151
  align-items: center;
@@ -157,361 +175,435 @@
157
175
  }
158
176
 
159
177
  /* ==================== 主体内容 ==================== */
178
+
160
179
  .taskon-dialog-body {
161
180
  flex: 1;
162
181
  overflow-y: auto;
163
- padding: 24px;
182
+ padding: 20px;
164
183
  }
165
184
 
166
185
  .taskon-dialog-body--no-padding {
167
186
  padding: 0;
168
187
  }
169
188
 
170
- /* ==================== 响应式 ==================== */
171
- @media (max-width: 750px) {
189
+ /* ==================== Desktop 增强 ==================== */
190
+
191
+ @supports (container-type: inline-size) {
192
+ @container (min-width: 751px) {
172
193
  .taskon-dialog-content {
173
- width: 95vw;
174
- max-height: 90vh;
175
- border-radius: var(--taskon-border-radius);
194
+ width: 90vw;
195
+ max-height: 85vh;
196
+ border-radius: var(--taskon-border-radius-lg);
176
197
  }
177
198
 
178
199
  .taskon-dialog-body {
179
- padding: 20px;
200
+ padding: 24px;
180
201
  }
181
202
 
182
203
  .taskon-dialog-header {
183
- top: 12px;
184
- right: 12px;
204
+ top: 16px;
205
+ right: 16px;
206
+ }
207
+ }
208
+ }
209
+
210
+ @supports not (container-type: inline-size) {
211
+ @media (min-width: 751px) {
212
+ .taskon-dialog-content {
213
+ width: 90vw;
214
+ max-height: 85vh;
215
+ border-radius: var(--taskon-border-radius-lg);
185
216
  }
217
+
218
+ .taskon-dialog-body {
219
+ padding: 24px;
220
+ }
221
+
222
+ .taskon-dialog-header {
223
+ top: 16px;
224
+ right: 16px;
225
+ }
226
+ }
227
+ }
228
+ /**
229
+ * Pagination 通用分页组件样式
230
+ * @description 使用 taskon-pagination 命名空间
231
+ *
232
+ * 设计参考 Figma: node-id=4000-1995
233
+ * - 按钮: 30x30px 圆形
234
+ * - 页码: 16px Regular
235
+ * - 当前页: 高强调文字
236
+ * - 分隔符+总页数: 次级文字
237
+ */
238
+
239
+ /*
240
+ * Responsive base styles
241
+ *
242
+ * Keep mobile breakpoints and fallback patterns centralized here.
243
+ * Components should reuse these mixins instead of duplicating query logic.
244
+ */
245
+
246
+ /*
247
+ * Desktop-up mixin:
248
+ * 1) Enable desktop enhancement in wider containers
249
+ * 2) Keep viewport media query as fallback
250
+ */
251
+
252
+ /* ==================== 容器 ==================== */
253
+
254
+ .taskon-pagination {
255
+ display: flex;
256
+ align-items: center;
257
+ justify-content: center;
258
+ width: 100%;
259
+ gap: var(--taskon-spacing-sm);
260
+ padding: 12px 0;
186
261
  }
187
- /**
188
- * Pagination 通用分页组件样式
189
- * @description 使用 taskon-pagination 命名空间
190
- *
191
- * 设计参考 Figma: node-id=4000-1995
192
- * - 按钮: 30x30px 圆形
193
- * - 页码: 16px Regular
194
- * - 当前页: 白色
195
- * - 分隔符+总页数: rgba(255,255,255,0.4)
196
- */
197
-
198
- /* ==================== 容器 ==================== */
199
- .taskon-pagination {
200
- display: flex;
201
- align-items: center;
202
- justify-content: center;
203
- width: 100%;
204
- gap: 16px;
205
- padding: 12px 0;
206
- }
207
-
208
- /* ==================== 范围信息 ==================== */
209
- .taskon-pagination-range {
210
- font-size: 14px;
211
- color: var(--taskon-color-text-secondary, rgba(255, 255, 255, 0.4));
212
- }
213
-
214
- /* ==================== 控制区 ==================== */
215
- .taskon-pagination-controls {
216
- display: flex;
217
- align-items: center;
218
- gap: 16px;
219
- }
220
-
221
- /* ==================== 页码信息 - 基于 Figma 设计 ==================== */
222
- .taskon-pagination-info {
223
- display: flex;
224
- align-items: center;
225
- font-size: 16px;
226
- font-weight: 400;
227
- white-space: nowrap;
228
- }
229
-
230
- /* 当前页码 - 白色 */
231
- .taskon-pagination-info-current {
232
- color: var(--taskon-color-text-lightest, #ffffff);
233
- }
234
-
235
- /* 分隔符 - 灰色 */
236
- .taskon-pagination-info-separator {
237
- color: var(--taskon-color-text-dark, rgba(255, 255, 255, 0.4));
238
- }
239
-
240
- /* 总页数 - 灰色 */
241
- .taskon-pagination-info-total {
242
- color: var(--taskon-color-text-dark, rgba(255, 255, 255, 0.4));
243
- }
244
-
245
- /* ==================== 图标 ==================== */
246
- .taskon-pagination-icon {
247
- width: 16px;
248
- height: 16px;
249
- }
250
-
251
- /* ==================== 按钮样式 - 圆形按钮 ==================== */
252
- .taskon-pagination-btn {
253
- display: inline-flex;
254
- align-items: center;
262
+
263
+ /* ==================== 范围信息 ==================== */
264
+
265
+ .taskon-pagination-range {
266
+ font-size: 14px;
267
+ color: var(--taskon-color-text-secondary);
268
+ }
269
+
270
+ /* ==================== 控制区 ==================== */
271
+
272
+ .taskon-pagination-controls {
273
+ display: flex;
274
+ align-items: center;
275
+ gap: 16px;
276
+ }
277
+
278
+ /* ==================== 页码信息 - 基于 Figma 设计 ==================== */
279
+
280
+ .taskon-pagination-info {
281
+ display: flex;
282
+ align-items: center;
283
+ font-size: 16px;
284
+ font-weight: 400;
285
+ white-space: nowrap;
286
+ }
287
+
288
+ /* 当前页码 */
289
+
290
+ .taskon-pagination-info-current {
291
+ color: var(--taskon-color-text);
292
+ }
293
+
294
+ /* 分隔符 */
295
+
296
+ .taskon-pagination-info-separator {
297
+ color: var(--taskon-color-text-disabled);
298
+ }
299
+
300
+ /* 总页数 */
301
+
302
+ .taskon-pagination-info-total {
303
+ color: var(--taskon-color-text-disabled);
304
+ }
305
+
306
+ /* ==================== 图标 ==================== */
307
+
308
+ .taskon-pagination-icon {
309
+ width: 16px;
310
+ height: 16px;
311
+ }
312
+
313
+ /* ==================== 按钮样式 - 圆形按钮 ==================== */
314
+
315
+ .taskon-pagination-btn {
316
+ display: inline-flex;
317
+ align-items: center;
255
318
  justify-content: center;
256
319
  width: 30px;
257
320
  height: 30px;
258
- min-width: 30px !important;
259
- padding: 0 !important;
260
- border-radius: 50% !important;
261
- background-color: transparent !important;
262
- border: 1px solid var(--taskon-color-border, rgba(255, 255, 255, 0.1)) !important;
263
- color: var(--taskon-color-text-lightest, #ffffff) !important;
264
- transition: all 0.2s ease;
265
- }
266
-
267
- .taskon-pagination-btn:hover:not(:disabled) {
268
- background-color: var(--taskon-color-bg-hover, rgba(255, 255, 255, 0.04)) !important;
269
- border-color: var(--taskon-color-border-hover, rgba(255, 255, 255, 0.2)) !important;
270
- }
271
-
321
+ min-width: 30px !important;
322
+ padding: 0 !important;
323
+ border-radius: 50% !important;
324
+ background-color: transparent !important;
325
+ border: 1px solid var(--taskon-color-border-secondary) !important;
326
+ color: var(--taskon-color-text) !important;
327
+ transition: all 0.2s ease;
328
+ }
329
+
330
+ .taskon-pagination-btn:hover:not(:disabled) {
331
+ background-color: var(--taskon-color-bg-surface-subtle) !important;
332
+ border-color: var(--taskon-color-border) !important;
333
+ }
334
+
272
335
  .taskon-pagination-btn:disabled {
273
336
  opacity: 0.4;
274
337
  cursor: not-allowed;
275
- }
276
-
277
- /* ==================== 尺寸变体 ==================== */
338
+ }
339
+
340
+ /* ==================== 尺寸变体 ==================== */
341
+
278
342
  .taskon-pagination--small .taskon-pagination-range {
279
343
  font-size: 12px;
280
- }
281
-
344
+ }
345
+
282
346
  .taskon-pagination--small .taskon-pagination-info {
283
347
  font-size: 14px;
284
- }
285
-
348
+ }
349
+
286
350
  .taskon-pagination--small .taskon-pagination-icon {
287
351
  width: 14px;
288
352
  height: 14px;
289
- }
290
-
291
- .taskon-pagination--small .taskon-pagination-btn {
292
- width: 24px;
293
- height: 24px;
294
- min-width: 24px !important;
295
- }
296
-
297
- /* ==================== 响应式 ==================== */
298
- @media (max-width: 750px) {
299
- .taskon-pagination {
300
- gap: 12px;
301
- }
302
-
303
- .taskon-pagination-range {
304
- font-size: 3.2vw;
305
- }
306
-
307
- .taskon-pagination-info {
308
- font-size: 14px;
309
- }
310
- }
311
- /**
312
- * Table 通用表格组件样式
313
- *
353
+ }
354
+
355
+ .taskon-pagination--small .taskon-pagination-btn {
356
+ width: 24px;
357
+ height: 24px;
358
+ min-width: 24px !important;
359
+ }
360
+
361
+ /* ==================== Desktop 增强 ==================== */
362
+
363
+ @supports (container-type: inline-size) {
364
+ @container (min-width: 751px) {
365
+ .taskon-pagination {
366
+ gap: var(--taskon-spacing-md);
367
+ }
368
+ }
369
+ }
370
+
371
+ @supports not (container-type: inline-size) {
372
+ @media (min-width: 751px) {
373
+ .taskon-pagination {
374
+ gap: var(--taskon-spacing-md);
375
+ }
376
+ }
377
+ }
378
+ /**
379
+ * Table 通用表格组件样式
380
+ *
314
381
  * 采用 BEM 命名规范
315
382
  * 前缀: taskon-table
316
383
  *
317
384
  * 设计参考 Figma: node-id=4000-1908
318
385
  * - 表头: 半透明背景、圆角、暗色文字
319
- * - 行: 边框分隔、悬停效果、交替背景
320
- * - 单元格: 可配置宽度和对齐方式
321
- */
322
-
386
+ * - 行: 边框分隔、悬停效果、交替背景
387
+ * - 单元格: 可配置宽度和对齐方式
388
+ */
389
+
390
+ /*
391
+ * Responsive base styles
392
+ *
393
+ * Keep mobile breakpoints and fallback patterns centralized here.
394
+ * Components should reuse these mixins instead of duplicating query logic.
395
+ */
396
+
397
+ /*
398
+ * Desktop-up mixin:
399
+ * 1) Enable desktop enhancement in wider containers
400
+ * 2) Keep viewport media query as fallback
401
+ */
402
+
323
403
  /* ============================================================================
324
404
  容器
325
- ============================================================================ */
326
-
405
+ ============================================================================ */
406
+
327
407
  .taskon-table-container {
328
408
  width: 100%;
329
409
  overflow-x: auto;
330
410
  position: relative;
331
- }
332
-
411
+ }
412
+
333
413
  .taskon-table {
334
414
  width: 100%;
335
415
  border-collapse: separate;
336
416
  border-spacing: 0;
337
- }
338
-
417
+ }
418
+
339
419
  /* ============================================================================
340
420
  表头 - 参考 Figma 设计:45px 高度,深色半透明背景,无圆角
341
- ============================================================================ */
342
-
421
+ ============================================================================ */
422
+
343
423
  .taskon-table__head {
344
424
  /* 不在 thead 上设置背景,由 th 元素控制 */
345
- }
346
-
425
+ }
426
+
347
427
  .taskon-table__head tr {
348
428
  height: 45px;
349
- }
350
-
351
- /* 表头单元格 - 16px Regular,深色半透明背景 */
352
- .taskon-table__header {
353
- padding: 10px 20px;
354
- font-size: 16px;
355
- font-weight: 400;
356
- text-align: left;
357
- line-height: 24px;
358
- color: var(--taskon-color-text-dark, rgba(255, 255, 255, 0.4));
359
- white-space: nowrap;
360
- vertical-align: middle;
361
- background-color: var(--taskon-color-table-header-bg, rgba(255, 255, 255, 0.04));
362
- }
363
-
364
- /* 表头对齐方式 */
429
+ }
430
+
431
+ /* 表头单元格 - 16px Regular,深色半透明背景 */
432
+
433
+ .taskon-table__header {
434
+ padding: var(--taskon-spacing-sm) 12px;
435
+ font-size: 16px;
436
+ font-weight: 400;
437
+ text-align: left;
438
+ line-height: 24px;
439
+ color: var(--taskon-color-text-disabled);
440
+ white-space: nowrap;
441
+ vertical-align: middle;
442
+ background-color: var(--taskon-color-bg-surface-subtle);
443
+ }
444
+
445
+ /* 表头对齐方式 */
446
+
365
447
  .taskon-table__header--left {
366
448
  text-align: left;
367
- }
368
-
449
+ }
450
+
369
451
  .taskon-table__header--center {
370
452
  text-align: center;
371
- }
372
-
453
+ }
454
+
373
455
  .taskon-table__header--right {
374
456
  text-align: right;
375
- }
376
-
457
+ }
458
+
377
459
  /* ============================================================================
378
460
  表体
379
- ============================================================================ */
380
-
461
+ ============================================================================ */
462
+
381
463
  .taskon-table__body {
382
464
  /* 默认样式 */
383
- }
384
-
465
+ }
466
+
385
467
  /* ============================================================================
386
468
  数据行 - 参考 Figma 设计:更大行高(76px),无边框
387
- ============================================================================ */
388
-
469
+ ============================================================================ */
470
+
389
471
  .taskon-table__row {
390
472
  transition: background-color 0.2s ease;
391
473
  height: 76px;
392
- }
393
-
394
- /* 行边框 - 默认不显示,使用 borderless 类控制 */
474
+ }
475
+
476
+ /* 行边框 - 默认不显示,使用 borderless 类控制 */
477
+
395
478
  .taskon-table__row td {
396
479
  border-top: none;
397
480
  border-bottom: none;
398
- }
399
-
400
- /* 需要边框时的样式 */
401
- .taskon-table--bordered .taskon-table__row td {
402
- border-top: 1px solid var(--taskon-color-table-border, rgba(255, 255, 255, 0.04));
403
- border-bottom: 1px solid var(--taskon-color-table-border, rgba(255, 255, 255, 0.04));
404
- }
405
-
406
- /* 悬停效果 */
407
- .taskon-table__row:hover {
408
- background-color: var(--taskon-color-table-row-hover, rgba(255, 255, 255, 0.04));
409
- }
410
-
411
- /* 交替行背景 (striped) */
412
- .taskon-table--striped .taskon-table__row:nth-child(even) {
413
- background-color: var(--taskon-color-table-row-alt, rgba(255, 255, 255, 0.04));
414
- }
415
-
416
- /* 高亮行 */
417
- .taskon-table__row--highlighted {
418
- background-color: var(--taskon-color-primary-bg, rgba(99, 102, 241, 0.1));
419
- }
420
-
421
- .taskon-table__row--highlighted:hover {
422
- background-color: var(--taskon-color-primary-bg-hover, rgba(99, 102, 241, 0.15));
423
- }
424
-
425
- /* 禁用行 */
481
+ }
482
+
483
+ /* 需要边框时的样式 */
484
+
485
+ .taskon-table--bordered .taskon-table__row td {
486
+ border-top: 1px solid var(--taskon-color-border-secondary);
487
+ border-bottom: 1px solid var(--taskon-color-border-secondary);
488
+ }
489
+
490
+ /* 悬停效果 */
491
+
492
+ .taskon-table__row:hover {
493
+ background-color: var(--taskon-color-bg-surface-strong);
494
+ }
495
+
496
+ /* 交替行背景 (striped) */
497
+
498
+ .taskon-table--striped .taskon-table__row:nth-child(even) {
499
+ background-color: var(--taskon-color-bg-surface-subtle);
500
+ }
501
+
502
+ /* 高亮行 */
503
+
504
+ .taskon-table__row--highlighted {
505
+ background-color: var(--taskon-color-primary-bg);
506
+ }
507
+
508
+ .taskon-table__row--highlighted:hover {
509
+ background-color: var(--taskon-color-primary-bg);
510
+ }
511
+
512
+ /* 禁用行 */
513
+
426
514
  .taskon-table__row--disabled {
427
515
  opacity: 0.4;
428
- }
429
-
430
- /* 可点击行 */
516
+ }
517
+
518
+ /* 可点击行 */
519
+
431
520
  .taskon-table__row--clickable {
432
521
  cursor: pointer;
433
- }
434
-
522
+ }
523
+
435
524
  /* ============================================================================
436
525
  单元格 - 参考 Figma 设计:16px SemiBold,白色文字
437
- ============================================================================ */
438
-
439
- .taskon-table__cell {
440
- padding: 16px 20px;
441
- font-size: 16px;
442
- font-weight: 600;
443
- line-height: 24px;
444
- color: var(--taskon-color-text-lightest, #ffffff);
445
- vertical-align: middle;
446
- }
447
-
448
- /* 单元格对齐方式 */
526
+ ============================================================================ */
527
+
528
+ .taskon-table__cell {
529
+ padding: var(--taskon-spacing-sm) 12px;
530
+ font-size: 16px;
531
+ font-weight: 600;
532
+ line-height: 24px;
533
+ color: var(--taskon-color-text);
534
+ vertical-align: middle;
535
+ }
536
+
537
+ /* 单元格对齐方式 */
538
+
449
539
  .taskon-table__cell--left {
450
540
  text-align: left;
451
- }
452
-
541
+ }
542
+
453
543
  .taskon-table__cell--center {
454
544
  text-align: center;
455
- }
456
-
545
+ }
546
+
457
547
  .taskon-table__cell--right {
458
548
  text-align: right;
459
- }
460
-
461
- /* 单元格文本溢出 */
549
+ }
550
+
551
+ /* 单元格文本溢出 */
552
+
462
553
  .taskon-table__cell--ellipsis {
463
554
  text-overflow: ellipsis;
464
555
  overflow: hidden;
465
556
  white-space: nowrap;
466
- }
467
-
557
+ }
558
+
468
559
  /* ============================================================================
469
560
  空状态和加载状态
470
- ============================================================================ */
471
-
472
- .taskon-table__loading,
473
- .taskon-table__empty {
474
- padding: 40px 16px;
475
- text-align: center;
476
- color: var(--taskon-color-text-dark, rgba(255, 255, 255, 0.4));
477
- }
478
-
561
+ ============================================================================ */
562
+
563
+ .taskon-table__loading,
564
+ .taskon-table__empty {
565
+ padding: 40px 16px;
566
+ text-align: center;
567
+ color: var(--taskon-color-text-disabled);
568
+ }
569
+
479
570
  .taskon-table__empty-content {
480
571
  display: flex;
481
572
  flex-direction: column;
482
573
  align-items: center;
483
574
  gap: 8px;
484
- }
485
-
575
+ }
576
+
486
577
  .taskon-table__empty-icon {
487
578
  font-size: 48px;
488
579
  opacity: 0.5;
489
- }
490
-
491
- .taskon-table__empty-title {
492
- font-size: 16px;
493
- font-weight: 600;
494
- color: var(--taskon-color-text-lightest, #ffffff);
495
- margin: 0;
496
- }
497
-
498
- .taskon-table__empty-desc {
499
- font-size: 14px;
500
- color: var(--taskon-color-text-dark, rgba(255, 255, 255, 0.4));
501
- margin: 0;
502
- }
503
-
504
- /* 加载指示器 */
505
- .taskon-table__loading-spinner {
506
- display: inline-block;
507
- width: 24px;
508
- height: 24px;
509
- border: 2px solid var(--taskon-color-text-dark, rgba(255, 255, 255, 0.4));
510
- border-top-color: var(--taskon-color-primary, #6366f1);
511
- border-radius: 50%;
512
- animation: taskon-table-spin 0.8s linear infinite;
513
- }
514
-
580
+ }
581
+
582
+ .taskon-table__empty-title {
583
+ font-size: 16px;
584
+ font-weight: 600;
585
+ color: var(--taskon-color-text);
586
+ margin: 0;
587
+ }
588
+
589
+ .taskon-table__empty-desc {
590
+ font-size: 14px;
591
+ color: var(--taskon-color-text-disabled);
592
+ margin: 0;
593
+ }
594
+
595
+ /* 加载指示器 */
596
+
597
+ .taskon-table__loading-spinner {
598
+ display: inline-block;
599
+ width: 24px;
600
+ height: 24px;
601
+ border: 2px solid var(--taskon-color-text-disabled);
602
+ border-top-color: var(--taskon-color-primary);
603
+ border-radius: 50%;
604
+ animation: taskon-table-spin 0.8s linear infinite;
605
+ }
606
+
515
607
  @keyframes taskon-table-spin {
516
608
  from {
517
609
  transform: rotate(0deg);
@@ -519,10 +611,11 @@
519
611
  to {
520
612
  transform: rotate(360deg);
521
613
  }
522
- }
523
-
524
- /* Overlay loading - 覆盖在表格数据上方 */
525
- .taskon-table__loading-overlay {
614
+ }
615
+
616
+ /* Overlay loading - 覆盖在表格数据上方 */
617
+
618
+ .taskon-table__loading-overlay {
526
619
  position: absolute;
527
620
  top: 0;
528
621
  left: 0;
@@ -531,45 +624,73 @@
531
624
  display: flex;
532
625
  align-items: center;
533
626
  justify-content: center;
534
- background-color: var(--taskon-color-overlay-bg, rgba(0, 0, 0, 0.5));
535
- backdrop-filter: blur(2px);
536
- z-index: 10;
537
- border-radius: 4px;
538
- }
539
-
627
+ background-color: var(--taskon-color-bg-mask);
628
+ backdrop-filter: blur(2px);
629
+ z-index: 10;
630
+ border-radius: var(--taskon-border-radius-sm);
631
+ }
632
+
540
633
  /* ============================================================================
541
634
  紧凑模式
542
- ============================================================================ */
543
-
544
- .taskon-table--compact .taskon-table__header {
545
- padding: 4px 12px;
546
- }
547
-
548
- .taskon-table--compact .taskon-table__cell {
549
- padding: 12px;
550
- }
551
-
635
+ ============================================================================ */
636
+
637
+ .taskon-table--compact .taskon-table__header {
638
+ padding: var(--taskon-spacing-xs) var(--taskon-spacing-sm);
639
+ }
640
+
641
+ .taskon-table--compact .taskon-table__cell {
642
+ padding: var(--taskon-spacing-xs) var(--taskon-spacing-sm);
643
+ }
644
+
552
645
  /* ============================================================================
553
646
  无边框模式
554
- ============================================================================ */
555
-
647
+ ============================================================================ */
648
+
556
649
  .taskon-table--borderless .taskon-table__row td {
557
650
  border-top: none;
558
651
  border-bottom: none;
559
- }
560
-
561
- /* ============================================================================
562
- 响应式
563
- ============================================================================ */
564
-
565
- @media (max-width: 640px) {
566
- .taskon-table__header,
567
- .taskon-table__cell {
568
- padding: 8px 12px;
569
- }
570
-
571
- .taskon-table--compact .taskon-table__header,
572
- .taskon-table--compact .taskon-table__cell {
573
- padding: 4px 8px;
574
- }
575
- }
652
+ }
653
+
654
+ /* ============================================================================
655
+ Desktop 增强
656
+ ============================================================================ */
657
+
658
+ @supports (container-type: inline-size) {
659
+ @container (min-width: 751px) {
660
+ .taskon-table__header {
661
+ padding: 10px 20px;
662
+ }
663
+
664
+ .taskon-table__cell {
665
+ padding: var(--taskon-spacing-md) 20px;
666
+ }
667
+
668
+ .taskon-table--compact .taskon-table__header {
669
+ padding: var(--taskon-spacing-xs) 12px;
670
+ }
671
+
672
+ .taskon-table--compact .taskon-table__cell {
673
+ padding: 12px;
674
+ }
675
+ }
676
+ }
677
+
678
+ @supports not (container-type: inline-size) {
679
+ @media (min-width: 751px) {
680
+ .taskon-table__header {
681
+ padding: 10px 20px;
682
+ }
683
+
684
+ .taskon-table__cell {
685
+ padding: var(--taskon-spacing-md) 20px;
686
+ }
687
+
688
+ .taskon-table--compact .taskon-table__header {
689
+ padding: var(--taskon-spacing-xs) 12px;
690
+ }
691
+
692
+ .taskon-table--compact .taskon-table__cell {
693
+ padding: 12px;
694
+ }
695
+ }
696
+ }