返回 DeepSeek-Reasonix
ToolRow.css
1 /* Ported from DeepSeek Harness c291e7961a; MIT, see LICENSE. */
2 /* Tool summary row (figma 122:9479): 24px single line at the default size —
3 [16 leading] gap6 [title 13/24] gap8 [2x2 dot] gap8 [summary FILL truncate].
4 The Settings font-size preference rides the body-published axis: the shared
5 DisclosureRow chrome scales the row height and leading glyph by the body px
6 delta; the title and the summary texts here read the secondary tier
7 (--dsh-content-font-size-secondary: one step under the body — setting −1 at
8 ≤14, setting −2 above), matching think text. */
9
10 .dsh-ToolRow-root {
11 display: flex;
12 flex-direction: column;
13 }
14
15 .dsh-ToolRow-row {
16 position: relative; /* sweep-glare overlay anchor */
17 overflow: hidden;
18 }
19
20 /* Running sweep (deepsuite ShimmerText pattern): a fixed-width glare band —
21 theme background at 60% — glides over the row content from off-left to
22 off-right, washing glyphs and icon toward the background as it passes.
23 ease-out with a 10% end hold gives each pass a beat before the next. */
24 .dsh-ToolRow-root[data-state='running'] .dsh-ToolRow-row::after {
25 content: '';
26 position: absolute;
27 top: 0;
28 bottom: 0;
29 left: 0;
30 width: 300px;
31 background: linear-gradient(
32 90deg,
33 transparent 0%,
34 color-mix(in srgb, var(--dsw-alias-bg-base) 60%, transparent) 55%,
35 transparent 100%
36 );
37 animation: dsh-tool-row-sweep 2.6s ease-out infinite;
38 pointer-events: none;
39 }
40
41 @keyframes dsh-tool-row-sweep {
42 0% { left: -300px; }
43 90%, 100% { left: 100%; }
44 }
45
46 .dsh-ToolRow-leading {
47 flex-shrink: 0;
48 }
49
50 .dsh-ToolRow-chevron {
51 color: var(--dsw-alias-label-secondary);
52 }
53
54 .dsh-ToolRow-title {
55 font-weight: 400;
56 }
57
58 .dsh-ToolRow-sep {
59 flex: none;
60 width: 2px;
61 height: 2px;
62 border-radius: 1px;
63 margin: 0 8px;
64 background: var(--dsw-alias-label-caption);
65 }
66
67 .dsh-ToolRow-summary {
68 flex: 1 1 auto;
69 min-width: 0;
70 overflow: hidden;
71 text-overflow: ellipsis;
72 white-space: nowrap;
73 font-size: var(--dsh-content-font-size-secondary, 13px);
74 line-height: calc(24px + var(--dsh-content-font-delta, 0px));
75 color: var(--dsw-alias-label-tertiary);
76 }
77
78 /* Error row's collapsed summary: the failure's first line in the error color. */
79 .dsh-ToolRow-errorSummary {
80 color: var(--dsw-alias-state-error-primary);
81 }
82
83 /* Expanded body + Inspect pill wrapper (sibling of .dsh-ToolRow-row: clicks never toggle). */
84 .dsh-ToolRow-bodyWrap {
85 display: flex;
86 flex-direction: column;
87 }
88
89 /* Hover-revealed jump to the trajectory record: a small pill in real flow
90 under the expanded body's bottom-left corner (it reserves its line, so
91 revealing never shifts layout); revealed by hovering anywhere on the tool
92 call — title row included — or by keyboard focus. */
93 .dsh-ToolRow-inspectButton {
94 display: inline-flex;
95 align-self: flex-start;
96 align-items: center;
97 gap: 4px;
98 margin: 4px 0 2px 4px;
99 padding: 2px 8px;
100 border: 0.5px solid var(--dsw-alias-border-l3);
101 border-radius: 999px;
102 corner-shape: round;
103 /* Base background, not bg-overlay: the overlay token is a raised dark
104 surface and reads too heavy for a quiet in-flow affordance. */
105 background: var(--dsw-alias-bg-base);
106 color: var(--dsw-alias-label-secondary);
107 font-size: 11px;
108 line-height: 16px;
109 cursor: pointer;
110 opacity: 0;
111 transition: opacity 100ms ease;
112 }
113
114 .dsh-ToolRow-root:hover .dsh-ToolRow-inspectButton,
115 .dsh-ToolRow-inspectButton:focus-visible {
116 opacity: 1;
117 }
118
119 /* Solid hover fill (a translucent token would let content bleed through). */
120 .dsh-ToolRow-inspectButton:hover {
121 background: var(--dsw-alias-interactive-bg-hover-solid);
122 color: var(--dsw-alias-label-primary);
123 }
124
124 lines CSS