Skip to content

pastetaste

Goal Trend Bars

DataInteraction

A bar trend against a dashed goal line: bars on goal are solid, bars below are hatched, the picked bar carries a value chip, and an average / best / on-goal summary follows the series you switch to.

Paste it into Claude Code: it installs the component, asks for your brand and content, and places it on the page you name.

Install

Or by hand, in a Next.js project with shadcn set up. It writes components/pastetaste/goal-trend-bars.tsx.

npx shadcn@latest add https://pastetaste.com/r/goal-trend-bars.json

Prompt

Install the pastetaste component "Goal Trend Bars" (goal-trend-bars) into this Next.js project and use it.

What it is: A bar trend against a dashed goal line: bars on goal are solid, bars below are hatched, the picked bar carries a value chip, and an average / best / on-goal summary follows the series you switch to.

Before you place it, ask me (one short message, in my language; "skip" = sensible default): which page and section it goes in, my brand colour (hex), the text, labels or images it should show, and whether I want my logo or my own copy in the demo content. Then:

Steps:
1. If the project has no components.json, run: npx shadcn@latest init -y -d. Then run: npx shadcn@latest add https://pastetaste.com/r/goal-trend-bars.json
   (it writes components/pastetaste/goal-trend-bars.tsx; install any npm packages it reports).
2. Import it: import { GoalTrendBars } from "@/components/pastetaste/goal-trend-bars" (check the file for the exact named export).
3. Put it where it fits on the page I name, keep the rest of the page untouched, and pass props for my colours instead of editing the installed file.
4. It does not depend on Tailwind; colours come from CSS variables (--pt-*) or props.
5. It supports prefers-reduced-motion with a still state; do not remove it.

Props (all optional unless the type has no default):
- series: TrendSeries[] — { id, label, values, goal, max?, format? } per dataset; two or more show a switch.
- labels: (string | number)[] — One label per bar.
- title: string = 'Trend' — Card heading.
- selected / defaultSelected: number = last bar — Controlled or initial selected bar.
- onSelect: (index) => void — Called when a bar is picked.
- unit: string = 'weeks' — Plural word for one bar in the summary.
- goalLabel: string = 'Goal' — Text on the goal line.
- className / style: string / CSSProperties — On the root.

Live preview: https://pastetaste.com/c/goal-trend-bars
Then run the dev server, check it in the browser at desktop and mobile width, and tell me the page URL.

Props 8

PropTypeDefaultDescription
seriesTrendSeries[]-{ id, label, values, goal, max?, format? } per dataset; two or more show a switch.
labels(string | number)[]-One label per bar.
titlestring'Trend'Card heading.
selected / defaultSelectednumberlast barControlled or initial selected bar.
onSelect(index) => void-Called when a bar is picked.
unitstring'weeks'Plural word for one bar in the summary.
goalLabelstring'Goal'Text on the goal line.
className / stylestring / CSSProperties-On the root.
View all →