返回 DeepSeek-Reasonix
StateDot.css
1 /* Ported from DeepSeek Harness c291e7961a (MIT). */
2 /* Ongoing blue has no alias token (state-business-primary is the 500 step,
3 * not this 450) — component-level var pinned to the static scale instead. */
4 .dsh-StateDot-dot,
5 .dsh-StateDot-matrix {
6 --dsh-state-ongoing: var(--dsw-static-deepseek-450);
7 }
8
9 /* Solid states: same-color halo via a 0.10-opacity outer layer (::before)
10 * with a 6/10-scale solid core. Layer color rides currentColor set per state. */
11 .dsh-StateDot-dot {
12 position: relative;
13 display: inline-block;
14 flex: none;
15 }
16
17 .dsh-StateDot-dot::before {
18 content: '';
19 position: absolute;
20 inset: 0;
21 border-radius: 50%;
22 corner-shape: round;
23 background: currentColor;
24 opacity: 0.1;
25 }
26
27 .dsh-StateDot-dot::after {
28 content: '';
29 position: absolute;
30 inset: 20%;
31 border-radius: 50%;
32 corner-shape: round;
33 background: currentColor;
34 }
35
36 .dsh-StateDot-dot[data-state='done'] {
37 color: var(--dsw-alias-state-success-primary);
38 }
39
40 .dsh-StateDot-dot[data-state='warning'] {
41 color: var(--dsw-alias-state-warn-primary);
42 }
43
44 .dsh-StateDot-dot[data-state='error'] {
45 color: var(--dsw-alias-state-error-primary);
46 }
47
48 /* Idle is the absence of activity, not a fourth outcome: it stays on the
49 * tertiary label color so it recedes beside the three outcome colors. */
50 .dsh-StateDot-dot[data-state='idle'] {
51 color: var(--dsw-alias-label-tertiary);
52 }
53
54 /* Pixel chase: each outer cell holds a discrete brightness step (flat keyframe
55 * holds, no tweening — the retro feel), peaking when the chase hits it and
56 * decaying over the next three cells. Phase offsets come from per-rect
57 * animation-delay (index * -125ms) set inline by the component. */
58 .dsh-StateDot-matrix {
59 flex: none;
60 color: var(--dsh-state-ongoing);
61 }
62
63 .dsh-StateDot-cell {
64 fill: currentColor;
65 opacity: 0.15;
66 animation: dsh-state-dot-chase 1s infinite;
67 }
68
69 @keyframes dsh-state-dot-chase {
70 0%, 12.4% { opacity: 1; }
71 12.5%, 24.9% { opacity: 0.6; }
72 25%, 37.4% { opacity: 0.35; }
73 37.5%, 100% { opacity: 0.15; }
74 }
75
75 lines CSS