Docs Components Advanced

LogStream

React example follows below.
ts
const logStreamFixture = {
id: "log-stream",
title: "ledger-api · production",
intervalMs: 1900,
prefill: 3,
maxLines: 60,
filters: true,
paused: true,
source: [
{ level: "INFO" as const, message: "GET /v2/ledger/entries 200 · 42ms", ts: "10:14:03.100" },
{ level: "WARN" as const, message: "retry queue depth 12 - approaching threshold", ts: "10:14:05.000" },
{ level: "ERR" as const, message: "analytics-ingest connection refused · retrying", ts: "10:14:07.400" },
],
};
import { LogStream } from "@grassroot/ui-react/advanced";
export default function LogStreamDemo() {
const { id: _id, ...props } = logStreamFixture;
return (
<div>
<LogStream {...props} />
</div>
);
}
ts
<script setup lang="ts">
const logStreamFixture = {
id: "log-stream",
title: "ledger-api · production",
intervalMs: 1900,
prefill: 3,
maxLines: 60,
filters: true,
paused: true,
source: [
{ level: "INFO" as const, message: "GET /v2/ledger/entries 200 · 42ms", ts: "10:14:03.100" },
{ level: "WARN" as const, message: "retry queue depth 12 - approaching threshold", ts: "10:14:05.000" },
{ level: "ERR" as const, message: "analytics-ingest connection refused · retrying", ts: "10:14:07.400" },
],
};
import { LogStream } from "@grassroot/ui-vue";
</script>
<template>
<div>
<LogStream
:source="logStreamFixture.source"
:title="logStreamFixture.title"
:interval-ms="logStreamFixture.intervalMs"
:prefill="logStreamFixture.prefill"
:max-lines="logStreamFixture.maxLines"
:filters="logStreamFixture.filters"
:paused="logStreamFixture.paused"
/>
</div>
</template>
ts
import { Component } from "@angular/core";
const logStreamFixture = {
id: "log-stream",
title: "ledger-api · production",
intervalMs: 1900,
prefill: 3,
maxLines: 60,
filters: true,
paused: true,
source: [
{ level: "INFO" as const, message: "GET /v2/ledger/entries 200 · 42ms", ts: "10:14:03.100" },
{ level: "WARN" as const, message: "retry queue depth 12 - approaching threshold", ts: "10:14:05.000" },
{ level: "ERR" as const, message: "analytics-ingest connection refused · retrying", ts: "10:14:07.400" },
],
};
import { GrassrootLogStream } from "@grassroot/ui-angular";
@Component({
selector: "app-log-stream-demo",
standalone: true,
imports: [GrassrootLogStream],
template: `
<div>
<grassroot-log-stream
[source]="fixture.source"
[title]="fixture.title"
[intervalMs]="fixture.intervalMs"
[prefill]="fixture.prefill"
[maxLines]="fixture.maxLines"
[filters]="fixture.filters"
[paused]="fixture.paused"
/>
</div>
`,
})
export class LogStreamDemoComponent {
protected readonly fixture = logStreamFixture;
}
export default LogStreamDemoComponent;
ts
<script lang="ts">
const logStreamFixture = {
id: "log-stream",
title: "ledger-api · production",
intervalMs: 1900,
prefill: 3,
maxLines: 60,
filters: true,
paused: true,
source: [
{ level: "INFO" as const, message: "GET /v2/ledger/entries 200 · 42ms", ts: "10:14:03.100" },
{ level: "WARN" as const, message: "retry queue depth 12 - approaching threshold", ts: "10:14:05.000" },
{ level: "ERR" as const, message: "analytics-ingest connection refused · retrying", ts: "10:14:07.400" },
],
};
import { LogStream } from "@grassroot/ui-svelte";
</script>
<div>
<LogStream
source={logStreamFixture.source}
title={logStreamFixture.title}
intervalMs={logStreamFixture.intervalMs}
prefill={logStreamFixture.prefill}
maxLines={logStreamFixture.maxLines}
filters={logStreamFixture.filters}
paused={logStreamFixture.paused}
/>
</div>
ts
/** @jsxImportSource solid-js */
const logStreamFixture = {
id: "log-stream",
title: "ledger-api · production",
intervalMs: 1900,
prefill: 3,
maxLines: 60,
filters: true,
paused: true,
source: [
{ level: "INFO" as const, message: "GET /v2/ledger/entries 200 · 42ms", ts: "10:14:03.100" },
{ level: "WARN" as const, message: "retry queue depth 12 - approaching threshold", ts: "10:14:05.000" },
{ level: "ERR" as const, message: "analytics-ingest connection refused · retrying", ts: "10:14:07.400" },
],
};
import { LogStream } from "@grassroot/ui-solid";
export default function LogStreamDemo() {
return (
<div>
<LogStream
source={logStreamFixture.source}
title={logStreamFixture.title}
intervalMs={logStreamFixture.intervalMs}
prefill={logStreamFixture.prefill}
maxLines={logStreamFixture.maxLines}
filters={logStreamFixture.filters}
paused={logStreamFixture.paused}
/>
</div>
);
}

Installation

API Reference

Import

import { LogStream } from "@grassroot/ui-react/advanced";

Props

Prop
Type
Default
Requirement
Description
source
LogEntry[]
required
Lines to stream, cycled in order.
title
string | undefined
"stream"
optional
Terminal title shown in the bar.
intervalMs
number | undefined
1900
optional
Append interval in ms.
prefill
number | undefined
8
optional
How many lines to seed immediately on mount.
maxLines
number | undefined
60
optional
Max retained lines (oldest dropped).
filters
boolean | undefined
true
optional
Show the per-level filter chips.
paused
boolean | undefined
false
optional
Pause streaming.
Prop
source
Type
LogEntry[]
Default
Requirement
required
Description
Lines to stream, cycled in order.
Prop
title
Type
string | undefined
Default
"stream"
Requirement
optional
Description
Terminal title shown in the bar.
Prop
intervalMs
Type
number | undefined
Default
1900
Requirement
optional
Description
Append interval in ms.
Prop
prefill
Type
number | undefined
Default
8
Requirement
optional
Description
How many lines to seed immediately on mount.
Prop
maxLines
Type
number | undefined
Default
60
Requirement
optional
Description
Max retained lines (oldest dropped).
Prop
filters
Type
boolean | undefined
Default
true
Requirement
optional
Description
Show the per-level filter chips.
Prop
paused
Type
boolean | undefined
Default
false
Requirement
optional
Description
Pause streaming.

Native attributes

Standard DOM and ARIA attributes not listed above spread onto the root element.

Import

import { LogStream } from "@grassroot/ui-vue";

Props

Prop
Type
Default
Requirement
source
readonly LogEntry[]
required
title
string | undefined
logStreamDefaultTitle
optional
intervalMs
number | undefined
logStreamDefaultIntervalMs
optional
prefill
number | undefined
logStreamDefaultPrefill
optional
maxLines
number | undefined
logStreamDefaultMaxLines
optional
filters
boolean | undefined
logStreamDefaultFilters
optional
paused
boolean | undefined
logStreamDefaultPaused
optional
className
string | undefined
optional
Prop
source
Type
readonly LogEntry[]
Default
Requirement
required
Prop
title
Type
string | undefined
Default
logStreamDefaultTitle
Requirement
optional
Prop
intervalMs
Type
number | undefined
Default
logStreamDefaultIntervalMs
Requirement
optional
Prop
prefill
Type
number | undefined
Default
logStreamDefaultPrefill
Requirement
optional
Prop
maxLines
Type
number | undefined
Default
logStreamDefaultMaxLines
Requirement
optional
Prop
filters
Type
boolean | undefined
Default
logStreamDefaultFilters
Requirement
optional
Prop
paused
Type
boolean | undefined
Default
logStreamDefaultPaused
Requirement
optional
Prop
className
Type
string | undefined
Default
Requirement
optional

Import

import { Component } from "@angular/core";
import { GrassrootLogStream } from "@grassroot/ui-angular";

Props

Prop
Type
Default
Requirement
source
readonly LogEntry[]
required
title
string
logStreamDefaultTitle
optional
intervalMs
number
logStreamDefaultIntervalMs
optional
prefill
number
logStreamDefaultPrefill
optional
maxLines
number
logStreamDefaultMaxLines
optional
filters
boolean
logStreamDefaultFilters
optional
paused
boolean
logStreamDefaultPaused
optional
className
string
optional
Prop
source
Type
readonly LogEntry[]
Default
Requirement
required
Prop
title
Type
string
Default
logStreamDefaultTitle
Requirement
optional
Prop
intervalMs
Type
number
Default
logStreamDefaultIntervalMs
Requirement
optional
Prop
prefill
Type
number
Default
logStreamDefaultPrefill
Requirement
optional
Prop
maxLines
Type
number
Default
logStreamDefaultMaxLines
Requirement
optional
Prop
filters
Type
boolean
Default
logStreamDefaultFilters
Requirement
optional
Prop
paused
Type
boolean
Default
logStreamDefaultPaused
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Import

import { LogStream } from "@grassroot/ui-svelte";

Props

Prop
Type
Default
Requirement
source
readonly LogEntry[]
required
title
string
optional
intervalMs
number
optional
prefill
number
optional
maxLines
number
optional
filters
boolean
optional
paused
boolean
optional
className
string
optional
Prop
source
Type
readonly LogEntry[]
Default
Requirement
required
Prop
title
Type
string
Default
Requirement
optional
Prop
intervalMs
Type
number
Default
Requirement
optional
Prop
prefill
Type
number
Default
Requirement
optional
Prop
maxLines
Type
number
Default
Requirement
optional
Prop
filters
Type
boolean
Default
Requirement
optional
Prop
paused
Type
boolean
Default
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional

Import

import { LogStream } from "@grassroot/ui-solid";

Props

Prop
Type
Default
Requirement
source
readonly LogEntry[]
required
title
string
optional
intervalMs
number
optional
prefill
number
optional
maxLines
number
optional
filters
boolean
optional
paused
boolean
optional
className
string
optional
Prop
source
Type
readonly LogEntry[]
Default
Requirement
required
Prop
title
Type
string
Default
Requirement
optional
Prop
intervalMs
Type
number
Default
Requirement
optional
Prop
prefill
Type
number
Default
Requirement
optional
Prop
maxLines
Type
number
Default
Requirement
optional
Prop
filters
Type
boolean
Default
Requirement
optional
Prop
paused
Type
boolean
Default
Requirement
optional
Prop
className
Type
string
Default
Requirement
optional