legend — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited legend (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Chart legends for identifying data series. DiscreteLegend for categorical series; SequentialLegend for continuous color scales.
import {
DiscreteLegend,
DiscreteLegendEntry,
DiscreteLegendSymbol,
SequentialLegend
} from 'reaviz';| Prop | Type | Default | Description | |
|---|---|---|---|---|
entries | ReactElement<DiscreteLegendEntryProps>[] | — | Legend entries (required) | |
orientation | `'horizontal' \ | 'vertical'` | 'vertical' | Layout direction |
className | string | — | CSS class | |
style | React.CSSProperties | — | Inline styles |
| Prop | Type | Default | Description | |
|---|---|---|---|---|
label | string | — | Entry label (required) | |
color | string | — | Entry color (required) | |
symbol | `ReactElement \ | ReactNode` | <DiscreteLegendSymbol /> | Symbol element |
title | string | — | HTML title attribute | |
className | string | — | CSS class | |
style | React.CSSProperties | — | Inline styles | |
onClick | (event) => void | — | Click handler | |
onMouseEnter | (event) => void | — | Mouse enter handler | |
onMouseLeave | (event) => void | — | Mouse leave handler |
| Prop | Type | Default | Description |
|---|---|---|---|
color | string | — | Symbol color (set by entry) |
className | string | — | CSS class |
| Prop | Type | Default | Description | |
|---|---|---|---|---|
data | ChartDataShape[] | — | Data for scale extent (required) | |
colorScheme | string[] | ['rgba(28,107,86,0.5)', '#2da283'] | Color range | |
orientation | `'horizontal' \ | 'vertical'` | 'vertical' | Layout direction |
className | string | — | CSS class | |
gradientClassName | string | — | CSS class for gradient element | |
style | any | — | Inline styles |
<DiscreteLegend
orientation="horizontal"
entries={[
<DiscreteLegendEntry label="Series A" color="#2d60e8" />,
<DiscreteLegendEntry label="Series B" color="#26efb5" />,
<DiscreteLegendEntry label="Series C" color="#ff5722" />,
]}
/><DiscreteLegend
orientation="vertical"
entries={[
<DiscreteLegendEntry label="Revenue" color="#2d60e8" />,
<DiscreteLegendEntry label="Costs" color="#ff5722" />,
]}
/>const [active, setActive] = useState(['A', 'B']);
<DiscreteLegend
entries={series.map((s) => (
<DiscreteLegendEntry
key={s.key}
label={s.key}
color={s.color}
style={{ opacity: active.includes(s.key) ? 1 : 0.3 }}
onClick={() =>
setActive((prev) =>
prev.includes(s.key)
? prev.filter((k) => k !== s.key)
: [...prev, s.key]
)
}
/>
))}
/><SequentialLegend
data={heatmapData}
colorScheme={['#f0f9e8', '#08589e']}
orientation="vertical"
/><SequentialLegend
data={data}
orientation="horizontal"
colorScheme={['rgba(28,107,86,0.5)', '#2da283']}
/>DiscreteLegend renders HTML elements (not SVG), so place it outside the chart SVGSequentialLegend renders a gradient bar with min/max labels from the data extent~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.