# ReputationTimeline

**Slug:** `reputation-timeline`  
**Import:** `import { ReputationTimeline } from "@p4n/erc8004-ui"`

> **NOTE — unofficial library.** `@p4n/erc8004-ui` is an independent, community-built project. It is not affiliated with, maintained by, or endorsed by the authors of ERC-8004. It reads the standard's on-chain data through public subgraphs; it does not speak for the standard.

## Description

Sparkline chart showing how the agent's feedback scores have trended over time. Pure SVG, no external charting library.

## Usage

```tsx
import { ReputationTimeline } from "@p4n/erc8004-ui"
<ReputationTimeline agentRegistry="eip155:8453:0x8004A169FB4a3325136EB29fA0ceB6D2e539a432" agentId={888} />
```

## Examples

### Smooth Curve

Draw a smooth monotone curve instead of straight segments. The curve never overshoots its data points, so it can't imply a score outside 0-100.

```tsx
<ReputationTimeline agentRegistry="eip155:8453:0x8004...a432" agentId={888} curve="monotone" />
```

### Last 90 Days

Filter the timeline to only show feedback from the last 90 days.

```tsx
<ReputationTimeline agentRegistry="eip155:8453:0x8004...a432" agentId={888} range="90d" />
```

### With Data Points

Show individual score dots on the chart.

```tsx
<ReputationTimeline agentRegistry="eip155:8453:0x8004...a432" agentId={888} showDataPoints />
```

### Points Only (No Trend Line)

Show only the data point dots without the connecting trend line.

```tsx
<ReputationTimeline agentRegistry="eip155:8453:0x8004...a432" agentId={888} showTrendLine={false} showDataPoints />
```

## In Context

ReputationTimeline alongside ReputationDistribution for a complete reputation view.

```tsx
<AgentProvider agentRegistry="eip155:8453:0x8004...a432" agentId={888}>
  <ReputationTimeline />
  <ReputationDistribution />
</AgentProvider>
```

## API Reference

| Prop | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `agentRegistry` | `string` | no | — | Agent registry in the format "eip155:{chainId}:{contractAddress}". Required unless inside an <AgentProvider>. |
| `agentId` | `number` | no | — | ERC-721 token ID of the agent. Required unless inside an <AgentProvider>. |
| `className` | `string` | no | — | Optional CSS classes merged onto the component root for layout, spacing, or custom styling (e.g. Tailwind). |
| `range` | `"7d" \| "30d" \| "90d" \| "all"` | no | `"all"` | Time range filter for displayed feedback. |
| `curve` | `"linear" \| "monotone"` | no | `"linear"` | Trend line shape. "linear" draws straight segments between points; "monotone" draws a smooth curve that never overshoots its data points. |
| `showTrendLine` | `boolean` | no | `true` | Show the connecting line between data points. |
| `maxPoints` | `number` | no | `40` | Maximum dots to plot. Longer series are evenly thinned to this many so points stay distinguishable and hoverable; the review count still reports the true total. |
| `showDataPoints` | `boolean` | no | `true` | Show individual score dots on the chart. |
| `headingLevel` | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | no | `3` | Heading level for this component's title. The default is the level it was previously hardcoded to, so leaving it alone renders exactly as before. Set it to keep the component from breaking the surrounding page's heading order. |

## States

This component handles loading, error, empty, and not-found states internally. A skeleton placeholder is shown while fetching, an error message with details appears if the Subgraph is unreachable, and a short message is displayed when no data exists for this agent.

## Reference

- Live preview & full docs: https://erc8004-ui.vercel.app/docs/components/reputation-timeline
- Markdown source: https://erc8004-ui.vercel.app/docs/components/reputation-timeline.md
