({ line }: { line: LogLine })
| 162 | } |
| 163 | |
| 164 | function LogRow({ line }: { line: LogLine }) { |
| 165 | const fieldKeys = Object.keys(line.fields); |
| 166 | return ( |
| 167 | <div className="flex items-start gap-2 border-b border-border/40 px-3 py-[3px] font-mono text-[11px] hover:bg-surface-1"> |
| 168 | <span className="w-[68px] shrink-0 text-fg-3 tabular" title={line.time ?? ''}> |
| 169 | {line.time ? formatWallClock(Date.parse(line.time)) : '—'} |
| 170 | </span> |
| 171 | <span className="w-[52px] shrink-0"> |
| 172 | {line.level ? ( |
| 173 | <Pill tone={levelTone(line.level)} variant="outline">{line.level}</Pill> |
| 174 | ) : null} |
| 175 | </span> |
| 176 | <span className="min-w-0 flex-1 break-words text-fg-1"> |
| 177 | {line.message} |
| 178 | {fieldKeys.length > 0 ? ( |
| 179 | <span className="ml-2 text-fg-3"> |
| 180 | {fieldKeys.map((k) => ( |
| 181 | <span key={k} className="mr-2"> |
| 182 | <span className="text-fg-2">{k}</span>=<span className="text-[var(--color-sev-info)]">{line.fields[k]}</span> |
| 183 | </span> |
| 184 | ))} |
| 185 | </span> |
| 186 | ) : null} |
| 187 | </span> |
| 188 | </div> |
| 189 | ); |
| 190 | } |
nothing calls this directly
no test coverage detected