The philosophy of this library is to take care of rendering, while leaving all data handling to the developer. In practice:
- rendering, in particular providing the glue between react and D3
 - managing chart pixel dimensions, specifically scale ranges
 - managing chart svg positioning, for example css transforms
 
- data transforms, such as x and y accessor functions
 - scale domains and interpolation methods
 - DOM interaction
 
Yard is built to be highly composable, breaking components down into small pieces that can be easily customized and combined to make complex visualizations. E.g, to create a multi-series line chart with axes and a simple horizontal grid:
const data = [
  {
    "date": new Date("2011-10-01T04:00:00.000Z"),
    "New York": 63.4,
    "San Francisco": 62.7
  },
  {
    "date": new Date("2011-10-02T04:00:00.000Z"),
    "New York": 58,
    "San Francisco": 59.9
  }, ...
];
const nyY = d => d['New York'];
const sfY = d => d['San Francisco'];
const x = d => d.date;
const xScale = d3.scaleTime()
  .domain(d3.extent(data, x));
const yScale = d3.scaleLinear()
  .domain([10, 100]);
<Chart
  width="600"
  height="300"
  xScale={xScale}
  yScale={yScale}
>
  <YGrid strokeDasharray={'2, 3'} />
  <XAxis />
  <YAxis />
  <LineChart
    data={data}
    x={x}
    y={nyY}
    stroke="red"
  />
  <LineChart
    data={data}
    x={x}
    y={sfY}
    stroke="blue"
  />
</Chart>npm run dev