├── .codesandbox └── ci.json ├── .editorconfig ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── stale.yml └── workflows │ └── ci.yml ├── .gitignore ├── .npmrc ├── .nvmrc ├── .prettierrc ├── CONTRIBUTING.md ├── LICENSE.md ├── Makefile ├── Procfile ├── README.md ├── api ├── LICENSE.md ├── README.md ├── app.ts ├── nodemon.json ├── package.json └── tsconfig.json ├── babel.config.js ├── branding └── nivo-logo.ai ├── conf ├── base.yaml └── rollup.config.mjs ├── cypress ├── cypress.config.ts ├── cypress.d.ts ├── cypress │ └── support │ │ ├── commands.js │ │ ├── component-index.html │ │ └── component.js ├── package.json ├── src │ ├── components │ │ ├── bar │ │ │ ├── Bar.cy.tsx │ │ │ └── BarCanvas.cy.tsx │ │ ├── boxplot │ │ │ └── BoxPlot.cy.tsx │ │ ├── bullet │ │ │ └── Bullet.cy.tsx │ │ ├── bump │ │ │ ├── AreaBump.cy.tsx │ │ │ └── Bump.cy.tsx │ │ ├── chord │ │ │ ├── Chord.cy.tsx │ │ │ └── ChordCanvas.cy.tsx │ │ ├── circle-packing │ │ │ ├── CirclePacking.cy.tsx │ │ │ ├── CirclePackingCanvas.cy.tsx │ │ │ ├── CirclePackingHtml.cy.tsx │ │ │ └── shared.ts │ │ ├── heatmap │ │ │ ├── HeatMap.cy.tsx │ │ │ ├── HeatMapCanvas.cy.tsx │ │ │ └── shared.ts │ │ ├── icicle │ │ │ ├── Icicle.cy.tsx │ │ │ └── IcicleHtml.cy.tsx │ │ ├── line │ │ │ ├── Line.cy.tsx │ │ │ ├── LineCanvas.cy.tsx │ │ │ └── shared.ts │ │ ├── marimekko │ │ │ └── Marimekko.cy.tsx │ │ ├── network │ │ │ ├── Network.cy.tsx │ │ │ ├── NetworkCanvas.cy.tsx │ │ │ └── shared.ts │ │ ├── pie │ │ │ ├── Pie.cy.tsx │ │ │ ├── PieCanvas.cy.tsx │ │ │ └── shared.ts │ │ ├── polar-bar │ │ │ └── PolarBar.cy.tsx │ │ ├── radar │ │ │ └── Radar.cy.tsx │ │ ├── radial-bar │ │ │ └── RadialBar.cy.tsx │ │ ├── sankey │ │ │ └── Sankey.cy.tsx │ │ ├── stream │ │ │ └── Stream.cy.tsx │ │ ├── tree │ │ │ ├── Tree.cy.tsx │ │ │ ├── TreeCanvas.cy.tsx │ │ │ └── shared.ts │ │ ├── treemap │ │ │ ├── TreeMap.cy.tsx │ │ │ ├── TreeMapCanvas.cy.tsx │ │ │ ├── TreeMapHtml.cy.tsx │ │ │ └── shared.ts │ │ └── waffle │ │ │ ├── Waffle.cy.tsx │ │ │ ├── WaffleCanvas.cy.tsx │ │ │ └── WaffleHtml.cy.tsx │ └── helpers │ │ └── responsive.tsx ├── tsconfig.json └── vite.config.ts ├── eslint.config.mjs ├── examples └── codesandbox │ ├── package.json │ ├── public │ └── index.html │ ├── src │ ├── App.tsx │ ├── ChartContainer.tsx │ ├── Navigation.tsx │ ├── charts │ │ ├── Bar.tsx │ │ ├── Bullet.tsx │ │ ├── Bump.tsx │ │ ├── Calendar.tsx │ │ ├── Chord.tsx │ │ ├── Choropleth.tsx │ │ ├── CirclePacking.tsx │ │ ├── Funnel.tsx │ │ ├── GeoMap.tsx │ │ ├── HeatMap.tsx │ │ ├── Line.tsx │ │ ├── Marimekko.tsx │ │ ├── Network.tsx │ │ ├── ParallelCoordinates.tsx │ │ ├── Pie.tsx │ │ ├── Radar.tsx │ │ ├── Sankey.tsx │ │ ├── ScatterPlot.tsx │ │ ├── Stream.tsx │ │ ├── Sunburst.tsx │ │ ├── SwarmPlot.tsx │ │ ├── TreeMap.tsx │ │ ├── Voronoi.tsx │ │ ├── Waffle.tsx │ │ └── index.ts │ ├── contexts.ts │ ├── data │ │ ├── index.ts │ │ └── world_countries.json │ ├── global.css │ ├── hooks.ts │ ├── index.tsx │ └── utils.ts │ └── tsconfig.json ├── lerna.json ├── nivo.png ├── package.json ├── packages ├── annotations │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Annotation.tsx │ │ ├── AnnotationLink.tsx │ │ ├── AnnotationNote.tsx │ │ ├── CircleAnnotationOutline.tsx │ │ ├── DotAnnotationOutline.tsx │ │ ├── RectAnnotationOutline.tsx │ │ ├── canvas.ts │ │ ├── compute.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.ts │ │ ├── types.ts │ │ └── utils.ts │ └── tsconfig.json ├── arcs │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── ArcLine.tsx │ │ ├── ArcShape.tsx │ │ ├── ArcsLayer.tsx │ │ ├── arcTransitionMode.ts │ │ ├── arc_labels │ │ │ ├── ArcLabel.tsx │ │ │ ├── ArcLabelsLayer.tsx │ │ │ ├── canvas.ts │ │ │ ├── index.ts │ │ │ ├── props.ts │ │ │ └── useArcLabels.ts │ │ ├── arc_link_labels │ │ │ ├── ArcLinkLabel.tsx │ │ │ ├── ArcLinkLabelsLayer.tsx │ │ │ ├── canvas.ts │ │ │ ├── compute.ts │ │ │ ├── index.ts │ │ │ ├── props.ts │ │ │ ├── types.ts │ │ │ ├── useArcLinkLabels.ts │ │ │ ├── useArcLinkLabelsTransition.ts │ │ │ └── useArcLinks.ts │ │ ├── boundingBox.ts │ │ ├── centers.ts │ │ ├── index.ts │ │ ├── interactivity.ts │ │ ├── interpolateArc.ts │ │ ├── types.ts │ │ ├── useAnimatedArc.ts │ │ ├── useArcGenerator.ts │ │ ├── useArcsTransition.ts │ │ └── utils.ts │ ├── tests │ │ └── boundingBox.test.ts │ └── tsconfig.json ├── axes │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── canvas.ts │ │ ├── components │ │ │ ├── Axes.tsx │ │ │ ├── Axis.tsx │ │ │ ├── AxisTick.tsx │ │ │ ├── Grid.tsx │ │ │ ├── GridLine.tsx │ │ │ ├── GridLines.tsx │ │ │ └── index.ts │ │ ├── compute.ts │ │ ├── defaults.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── types.ts │ ├── tests │ │ ├── __snapshots__ │ │ │ └── compute.test.tsx.snap │ │ └── compute.test.tsx │ └── tsconfig.json ├── bar │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Bar.tsx │ │ ├── BarAnnotations.tsx │ │ ├── BarCanvas.tsx │ │ ├── BarItem.tsx │ │ ├── BarLegends.tsx │ │ ├── BarTooltip.tsx │ │ ├── BarTotals.tsx │ │ ├── ResponsiveBar.tsx │ │ ├── ResponsiveBarCanvas.tsx │ │ ├── compute │ │ │ ├── common.ts │ │ │ ├── grouped.ts │ │ │ ├── index.ts │ │ │ ├── legends.ts │ │ │ ├── stacked.ts │ │ │ └── totals.ts │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── renderBar.ts │ │ └── types.ts │ ├── tests │ │ └── Bar.test.tsx │ └── tsconfig.json ├── boxplot │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── BoxPlot.tsx │ │ ├── BoxPlotAnnotations.tsx │ │ ├── BoxPlotItem.tsx │ │ ├── BoxPlotLegends.tsx │ │ ├── BoxPlotTooltip.tsx │ │ ├── ResponsiveBoxPlot.tsx │ │ ├── compute │ │ │ ├── common.ts │ │ │ ├── generation.ts │ │ │ ├── index.ts │ │ │ ├── legends.ts │ │ │ └── stratification.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── types.ts │ ├── tests │ │ └── BoxPlot.test.tsx │ └── tsconfig.json ├── bullet │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Bullet.tsx │ │ ├── BulletItem.tsx │ │ ├── BulletMarkers.tsx │ │ ├── BulletMarkersItem.tsx │ │ ├── BulletRects.tsx │ │ ├── BulletRectsItem.tsx │ │ ├── BulletTooltip.tsx │ │ ├── ResponsiveBullet.tsx │ │ ├── compute.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── types.ts │ ├── tests │ │ └── Bullet.test.tsx │ └── tsconfig.json ├── bump │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── area-bump │ │ │ ├── Area.tsx │ │ │ ├── AreaBump.tsx │ │ │ ├── AreaTooltip.tsx │ │ │ ├── AreasLabels.tsx │ │ │ ├── ResponsiveAreaBump.tsx │ │ │ ├── compute.ts │ │ │ ├── defaults.ts │ │ │ ├── hooks.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── bump │ │ │ ├── Bump.tsx │ │ │ ├── Line.tsx │ │ │ ├── LineTooltip.tsx │ │ │ ├── LinesLabels.tsx │ │ │ ├── Mesh.tsx │ │ │ ├── Point.tsx │ │ │ ├── PointTooltip.tsx │ │ │ ├── ResponsiveBump.tsx │ │ │ ├── compute.ts │ │ │ ├── defaults.ts │ │ │ ├── hooks.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ └── index.ts │ ├── tests │ │ ├── AreaBump.test.tsx │ │ └── Bump.test.tsx │ └── tsconfig.json ├── calendar │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Calendar.tsx │ │ ├── CalendarCanvas.tsx │ │ ├── CalendarDay.tsx │ │ ├── CalendarMonthLegends.tsx │ │ ├── CalendarMonthPath.tsx │ │ ├── CalendarTooltip.tsx │ │ ├── CalendarYearLegends.tsx │ │ ├── ResponsiveCalendar.tsx │ │ ├── ResponsiveCalendarCanvas.tsx │ │ ├── ResponsiveTimeRange.tsx │ │ ├── TimeRange.tsx │ │ ├── TimeRangeDay.tsx │ │ ├── compute │ │ │ ├── calendar.ts │ │ │ └── timeRange.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── types.ts │ └── tsconfig.json ├── canvas │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.ts │ │ └── roundedRect.ts │ └── tsconfig.json ├── chord │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Chord.tsx │ │ ├── ChordArc.tsx │ │ ├── ChordArcTooltip.tsx │ │ ├── ChordArcs.tsx │ │ ├── ChordCanvas.tsx │ │ ├── ChordLabels.tsx │ │ ├── ChordRibbon.tsx │ │ ├── ChordRibbonTooltip.tsx │ │ ├── ChordRibbons.tsx │ │ ├── ResponsiveChord.tsx │ │ ├── ResponsiveChordCanvas.tsx │ │ ├── compute.ts │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tests │ │ └── Chord.test.tsx │ └── tsconfig.json ├── circle-packing │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── CircleHtml.tsx │ │ ├── CirclePacking.tsx │ │ ├── CirclePackingCanvas.tsx │ │ ├── CirclePackingHtml.tsx │ │ ├── CirclePackingTooltip.tsx │ │ ├── CircleSvg.tsx │ │ ├── Circles.tsx │ │ ├── LabelHtml.tsx │ │ ├── LabelSvg.tsx │ │ ├── Labels.tsx │ │ ├── ResponsiveCirclePacking.tsx │ │ ├── ResponsiveCirclePackingCanvas.tsx │ │ ├── ResponsiveCirclePackingHtml.tsx │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tests │ │ ├── CirclePacking.test.tsx │ │ └── fixtures.ts │ └── tsconfig.json ├── colors │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── inheritedColor.ts │ │ ├── scales │ │ │ ├── continuousColorScale.ts │ │ │ ├── divergingColorScale.ts │ │ │ ├── index.ts │ │ │ ├── ordinalColorScale.ts │ │ │ ├── quantizeColorScale.ts │ │ │ └── sequentialColorScale.ts │ │ └── schemes │ │ │ ├── all.ts │ │ │ ├── categorical.ts │ │ │ ├── cyclical.ts │ │ │ ├── diverging.ts │ │ │ ├── index.ts │ │ │ ├── interpolators.ts │ │ │ └── sequential.ts │ ├── tests │ │ ├── continuousColorScale.test.ts │ │ ├── inheritedColor.test.js │ │ └── ordinalColorScale.test.js │ └── tsconfig.json ├── core │ ├── LICENSE.md │ ├── README.md │ ├── index.d.ts │ ├── package.json │ ├── src │ │ ├── components │ │ │ ├── ConditionalWrapper.js │ │ │ ├── Container.js │ │ │ ├── LegacyContainer.js │ │ │ ├── ResponsiveWrapper.js │ │ │ ├── SvgWrapper.js │ │ │ ├── cartesian │ │ │ │ ├── index.js │ │ │ │ └── markers │ │ │ │ │ ├── CartesianMarkers.js │ │ │ │ │ ├── CartesianMarkersItem.js │ │ │ │ │ └── index.js │ │ │ ├── defs │ │ │ │ ├── Defs.js │ │ │ │ ├── gradients │ │ │ │ │ ├── LinearGradient.js │ │ │ │ │ └── index.js │ │ │ │ ├── index.js │ │ │ │ └── patterns │ │ │ │ │ ├── PatternDots.js │ │ │ │ │ ├── PatternLines.js │ │ │ │ │ ├── PatternSquares.js │ │ │ │ │ └── index.js │ │ │ └── dots │ │ │ │ ├── DotsItem.js │ │ │ │ ├── DotsItemSymbol.js │ │ │ │ └── index.js │ │ ├── constants.js │ │ ├── defaults │ │ │ └── index.js │ │ ├── hocs │ │ │ ├── index.js │ │ │ └── withContainer.js │ │ ├── hooks │ │ │ ├── index.js │ │ │ ├── useAnimatedPath.js │ │ │ ├── useChartContext.js │ │ │ ├── useCurveInterpolation.js │ │ │ ├── useDimensions.js │ │ │ ├── useMeasure.js │ │ │ └── useValueFormatter.js │ │ ├── index.js │ │ ├── lib │ │ │ ├── bridge.js │ │ │ ├── cartesian │ │ │ │ ├── index.js │ │ │ │ └── utils.js │ │ │ ├── colors │ │ │ │ ├── index.js │ │ │ │ └── quantize.js │ │ │ ├── defs.js │ │ │ ├── interactivity │ │ │ │ ├── detect.js │ │ │ │ └── index.js │ │ │ ├── mergeRefs.js │ │ │ ├── noop.js │ │ │ ├── polar │ │ │ │ ├── index.js │ │ │ │ ├── labels.js │ │ │ │ └── utils.js │ │ │ └── propertiesConverters.js │ │ ├── motion │ │ │ ├── context.js │ │ │ ├── hooks.js │ │ │ └── index.js │ │ └── props │ │ │ ├── curve.js │ │ │ ├── index.js │ │ │ └── stack.js │ └── tests │ │ └── lib │ │ ├── colors │ │ └── quantize.test.js │ │ ├── defs.test.js │ │ ├── getLabelGenerator.test.js │ │ ├── interactivity │ │ └── detect.test.js │ │ └── polar │ │ └── utils.test.js ├── express │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── memory-storage.ts │ │ └── validation.ts │ └── tsconfig.json ├── funnel │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Funnel.tsx │ │ ├── FunnelAnnotations.tsx │ │ ├── Part.tsx │ │ ├── PartLabel.tsx │ │ ├── PartLabels.tsx │ │ ├── PartTooltip.tsx │ │ ├── Parts.tsx │ │ ├── ResponsiveFunnel.tsx │ │ ├── Separator.tsx │ │ ├── Separators.tsx │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.tsx │ │ └── types.ts │ ├── tests │ │ └── Funnel.test.tsx │ └── tsconfig.json ├── generators │ ├── .gitignore │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── boxplot.ts │ │ ├── bullet.ts │ │ ├── chord.ts │ │ ├── color.ts │ │ ├── helpers.ts │ │ ├── index.ts │ │ ├── network.ts │ │ ├── parallelCoordinates.ts │ │ ├── range.ts │ │ ├── sankey.ts │ │ ├── sets │ │ │ ├── averageHeightByAge.ts │ │ │ ├── countryCodes.ts │ │ │ ├── index.ts │ │ │ ├── names.ts │ │ │ ├── programmingLanguages.ts │ │ │ └── time.ts │ │ ├── swarmplot.ts │ │ ├── waffle.ts │ │ └── xySeries.ts │ └── tsconfig.json ├── geo │ ├── LICENSE.md │ ├── README.md │ ├── index.d.ts │ ├── package.json │ └── src │ │ ├── Choropleth.js │ │ ├── ChoroplethCanvas.js │ │ ├── ChoroplethTooltip.js │ │ ├── GeoGraticule.js │ │ ├── GeoMap.js │ │ ├── GeoMapCanvas.js │ │ ├── GeoMapFeature.js │ │ ├── ResponsiveChoropleth.js │ │ ├── ResponsiveChoroplethCanvas.js │ │ ├── ResponsiveGeoMap.js │ │ ├── ResponsiveGeoMapCanvas.js │ │ ├── hooks.js │ │ ├── index.js │ │ └── props.js ├── grid │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── boundingBoxes.ts │ │ ├── grid.ts │ │ ├── index.ts │ │ ├── polygon.ts │ │ └── types.ts │ ├── tests │ │ ├── boundingBoxes.test.ts │ │ ├── grid.test.ts │ │ └── polygon.test.ts │ └── tsconfig.json ├── heatmap │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── HeatMap.tsx │ │ ├── HeatMapCanvas.tsx │ │ ├── HeatMapCellAnnotations.tsx │ │ ├── HeatMapCellCircle.tsx │ │ ├── HeatMapCellRect.tsx │ │ ├── HeatMapCells.tsx │ │ ├── HeatMapTooltip.tsx │ │ ├── ResponsiveHeatMap.tsx │ │ ├── ResponsiveHeatMapCanvas.tsx │ │ ├── canvas.tsx │ │ ├── compute.ts │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tests │ │ └── HeatMap.test.tsx │ └── tsconfig.json ├── icicle │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Icicle.tsx │ │ ├── IcicleHtml.tsx │ │ ├── IcicleNodes.tsx │ │ ├── IcicleTooltip.tsx │ │ ├── ResponsiveIcicle.tsx │ │ ├── ResponsiveIcicleHtml.tsx │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ └── tsconfig.json ├── jest.config.js ├── jest.setup.js ├── legends │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── canvas.ts │ │ ├── compute.ts │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── svg │ │ │ ├── AnchoredContinuousColorsLegendSvg.tsx │ │ │ ├── BoxLegendSvg.tsx │ │ │ ├── ContinuousColorsLegendSvg.tsx │ │ │ ├── LegendSvg.tsx │ │ │ ├── LegendSvgItem.tsx │ │ │ ├── index.ts │ │ │ └── symbols │ │ │ │ ├── SymbolCircle.tsx │ │ │ │ ├── SymbolDiamond.tsx │ │ │ │ ├── SymbolSquare.tsx │ │ │ │ ├── SymbolTriangle.tsx │ │ │ │ ├── index.ts │ │ │ │ └── types.ts │ │ └── types.ts │ ├── tests │ │ └── svg │ │ │ ├── LegendSvgItem.test.tsx │ │ │ └── __snapshots__ │ │ │ └── LegendSvgItem.test.tsx.snap │ └── tsconfig.json ├── line │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Areas.tsx │ │ ├── Line.tsx │ │ ├── LineCanvas.tsx │ │ ├── Lines.tsx │ │ ├── LinesItem.tsx │ │ ├── Mesh.tsx │ │ ├── PointTooltip.tsx │ │ ├── Points.tsx │ │ ├── ResponsiveLine.tsx │ │ ├── ResponsiveLineCanvas.tsx │ │ ├── SliceTooltip.tsx │ │ ├── Slices.tsx │ │ ├── SlicesItem.tsx │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tests │ │ └── Line.test.tsx │ └── tsconfig.json ├── marimekko │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Bar.tsx │ │ ├── BarTooltip.tsx │ │ ├── Bars.tsx │ │ ├── Marimekko.tsx │ │ ├── ResponsiveMarimekko.tsx │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tests │ │ └── Marimekko.test.tsx │ └── tsconfig.json ├── network │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Network.tsx │ │ ├── NetworkCanvas.tsx │ │ ├── NetworkLink.tsx │ │ ├── NetworkLinks.tsx │ │ ├── NetworkNode.tsx │ │ ├── NetworkNodeAnnotations.tsx │ │ ├── NetworkNodeTooltip.tsx │ │ ├── NetworkNodes.tsx │ │ ├── ResponsiveNetwork.tsx │ │ ├── ResponsiveNetworkCanvas.tsx │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── renderCanvasLink.ts │ │ ├── renderCanvasNode.ts │ │ └── types.ts │ ├── tests │ │ └── Network.test.tsx │ └── tsconfig.json ├── parallel-coordinates │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── ParallelCoordinatesLineTooltip.tsx │ │ ├── canvas │ │ │ ├── ParallelCoordinatesCanvas.tsx │ │ │ ├── ResponsiveParallelCoordinatesCanvas.tsx │ │ │ └── index.ts │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── svg │ │ │ ├── ParallelCoordinates.tsx │ │ │ ├── ParallelCoordinatesLine.tsx │ │ │ ├── ResponsiveParallelCoordinates.tsx │ │ │ └── index.ts │ │ └── types.ts │ ├── tests │ │ └── ParallelCoordinates.test.tsx │ └── tsconfig.json ├── pie │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Arcs.tsx │ │ ├── Pie.tsx │ │ ├── PieCanvas.tsx │ │ ├── PieLegends.tsx │ │ ├── PieTooltip.tsx │ │ ├── ResponsivePie.tsx │ │ ├── ResponsivePieCanvas.tsx │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── types.ts │ ├── tests │ │ └── Pie.test.tsx │ └── tsconfig.json ├── polar-axes │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── CircularAxis.tsx │ │ ├── CircularAxisTick.tsx │ │ ├── CircularGrid.tsx │ │ ├── PolarGrid.tsx │ │ ├── RadialAxis.tsx │ │ ├── RadialAxisTick.tsx │ │ ├── RadialGrid.tsx │ │ ├── index.ts │ │ └── types.ts │ └── tsconfig.json ├── polar-bar │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── PolarBar.tsx │ │ ├── PolarBarArcs.tsx │ │ ├── PolarBarTooltip.tsx │ │ ├── ResponsivePolarBar.tsx │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tests │ │ └── PolarBar.test.tsx │ └── tsconfig.json ├── radar │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Radar.tsx │ │ ├── RadarDots.tsx │ │ ├── RadarGrid.tsx │ │ ├── RadarGridLabel.tsx │ │ ├── RadarGridLabels.tsx │ │ ├── RadarGridLevels.tsx │ │ ├── RadarLayer.tsx │ │ ├── RadarSlice.tsx │ │ ├── RadarSliceTooltip.tsx │ │ ├── RadarSlices.tsx │ │ ├── ResponsiveRadar.tsx │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ ├── tests │ │ └── Radar.test.tsx │ └── tsconfig.json ├── radial-bar │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── RadialBar.tsx │ │ ├── RadialBarArcs.tsx │ │ ├── RadialBarTooltip.tsx │ │ ├── RadialBarTracks.tsx │ │ ├── ResponsiveRadialBar.tsx │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── types.ts │ ├── tests │ │ └── RadialBar.test.tsx │ └── tsconfig.json ├── rects │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── RectNodeHtml.tsx │ │ ├── RectNodeSvg.tsx │ │ ├── RectNodeWrapper.tsx │ │ ├── RectNodes.tsx │ │ ├── RoundedRect.tsx │ │ ├── constants.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── labels │ │ │ ├── RectLabelHtml.tsx │ │ │ ├── RectLabelSvg.tsx │ │ │ ├── RectLabels.tsx │ │ │ ├── compute.ts │ │ │ ├── index.ts │ │ │ └── types.ts │ │ ├── types.ts │ │ ├── useRectAnchorsTransition.ts │ │ └── useRectsTransition.ts │ └── tsconfig.json ├── sankey │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── ResponsiveSankey.tsx │ │ ├── Sankey.tsx │ │ ├── SankeyLabels.tsx │ │ ├── SankeyLinkGradient.tsx │ │ ├── SankeyLinkTooltip.tsx │ │ ├── SankeyLinks.tsx │ │ ├── SankeyLinksItem.tsx │ │ ├── SankeyNodeTooltip.tsx │ │ ├── SankeyNodes.tsx │ │ ├── SankeyNodesItem.tsx │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── links.ts │ │ ├── props.ts │ │ └── types.ts │ └── tsconfig.json ├── scales │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── bandScale.ts │ │ ├── compute.ts │ │ ├── index.ts │ │ ├── linearScale.ts │ │ ├── logScale.ts │ │ ├── pointScale.ts │ │ ├── symlogScale.ts │ │ ├── ticks.ts │ │ ├── timeHelpers.ts │ │ ├── timeScale.ts │ │ └── types.ts │ ├── tests │ │ ├── compute.test.ts │ │ ├── linearScale.test.ts │ │ ├── symlogScale.test.ts │ │ ├── ticks.test.ts │ │ └── timeHelpers.test.ts │ └── tsconfig.json ├── scatterplot │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Mesh.tsx │ │ ├── Node.tsx │ │ ├── Nodes.tsx │ │ ├── ResponsiveScatterPlot.tsx │ │ ├── ResponsiveScatterPlotCanvas.tsx │ │ ├── ScatterPlot.tsx │ │ ├── ScatterPlotAnnotations.tsx │ │ ├── ScatterPlotCanvas.tsx │ │ ├── Tooltip.tsx │ │ ├── compute.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.tsx │ │ └── types.ts │ ├── tests │ │ └── ScatterPlot.test.tsx │ └── tsconfig.json ├── static │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── index.ts │ │ ├── mappings │ │ │ ├── bar.ts │ │ │ ├── calendar.ts │ │ │ ├── chord.ts │ │ │ ├── circle_packing.ts │ │ │ ├── common.ts │ │ │ ├── commons │ │ │ │ ├── colors.ts │ │ │ │ ├── curves.ts │ │ │ │ ├── dimensions.ts │ │ │ │ └── scales.ts │ │ │ ├── heatmap.ts │ │ │ ├── icicle.ts │ │ │ ├── index.ts │ │ │ ├── line.ts │ │ │ ├── pie.ts │ │ │ ├── radar.ts │ │ │ ├── sankey.ts │ │ │ ├── sunburst.ts │ │ │ └── treemap.ts │ │ ├── renderer.ts │ │ ├── samples │ │ │ └── index.ts │ │ └── types.ts │ └── tsconfig.json ├── stream │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── LayerTooltip.tsx │ │ ├── ResponsiveStream.tsx │ │ ├── StackTooltip.tsx │ │ ├── Stream.tsx │ │ ├── StreamDots.tsx │ │ ├── StreamDotsItem.tsx │ │ ├── StreamLayer.tsx │ │ ├── StreamLayers.tsx │ │ ├── StreamSlices.tsx │ │ ├── StreamSlicesItem.tsx │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── types.ts │ ├── tests │ │ └── Stream.test.tsx │ └── tsconfig.json ├── sunburst │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Arcs.tsx │ │ ├── ResponsiveSunburst.tsx │ │ ├── Sunburst.tsx │ │ ├── SunburstTooltip.tsx │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── types.ts │ ├── tests │ │ └── Sunburst.test.tsx │ └── tsconfig.json ├── swarmplot │ ├── LICENSE.md │ ├── README.md │ ├── doc │ │ ├── swarmplot-canvas.png │ │ └── swarmplot.png │ ├── package.json │ ├── src │ │ ├── CircleSvg.tsx │ │ ├── Circles.tsx │ │ ├── ResponsiveSwarmPlot.tsx │ │ ├── ResponsiveSwarmPlotCanvas.tsx │ │ ├── SwarmPlot.tsx │ │ ├── SwarmPlotAnnotations.tsx │ │ ├── SwarmPlotCanvas.tsx │ │ ├── SwarmPlotTooltip.tsx │ │ ├── compute.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── props.ts │ │ └── types.ts │ ├── tests │ │ ├── Swarmplot.test.tsx │ │ └── compute.test.tsx │ └── tsconfig.json ├── text │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Text.tsx │ │ ├── boxAnchor.ts │ │ ├── canvas.ts │ │ └── index.ts │ └── tsconfig.json ├── theming │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── borderRadius.ts │ │ ├── bridge.ts │ │ ├── context.tsx │ │ ├── defaults.ts │ │ ├── extend.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ └── tsconfig.json ├── tooltip │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── BasicTooltip.tsx │ │ ├── Chip.tsx │ │ ├── Crosshair.tsx │ │ ├── CrosshairLine.tsx │ │ ├── TableTooltip.tsx │ │ ├── Tooltip.tsx │ │ ├── TooltipProvider.tsx │ │ ├── TooltipWrapper.tsx │ │ ├── context.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ └── types.ts │ └── tsconfig.json ├── tree │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Label.tsx │ │ ├── Labels.tsx │ │ ├── Link.tsx │ │ ├── Links.tsx │ │ ├── Mesh.tsx │ │ ├── Node.tsx │ │ ├── Nodes.tsx │ │ ├── ResponsiveTree.tsx │ │ ├── ResponsiveTreeCanvas.tsx │ │ ├── Tree.tsx │ │ ├── TreeCanvas.tsx │ │ ├── canvas.ts │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── labelsHooks.ts │ │ └── types.ts │ ├── tests │ │ └── Tree.test.tsx │ └── tsconfig.json ├── treemap │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── ResponsiveTreeMap.tsx │ │ ├── ResponsiveTreeMapCanvas.tsx │ │ ├── ResponsiveTreeMapHtml.tsx │ │ ├── TreeMap.tsx │ │ ├── TreeMapCanvas.tsx │ │ ├── TreeMapHtml.tsx │ │ ├── TreeMapHtmlNode.tsx │ │ ├── TreeMapNode.tsx │ │ ├── TreeMapNodeTooltip.tsx │ │ ├── TreeMapNodes.tsx │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── tiling.ts │ │ ├── transitions.ts │ │ └── types.ts │ ├── tests │ │ └── TreeMap.test.tsx │ └── tsconfig.json ├── voronoi │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ │ ├── Mesh.tsx │ │ ├── ResponsiveVoronoi.tsx │ │ ├── Voronoi.tsx │ │ ├── computeMesh.ts │ │ ├── defaults.ts │ │ ├── hooks.ts │ │ ├── index.ts │ │ ├── meshCanvas.ts │ │ ├── props.ts │ │ └── types.ts │ ├── tests │ │ └── computeMesh.test.ts │ └── tsconfig.json └── waffle │ ├── LICENSE.md │ ├── README.md │ ├── package.json │ ├── src │ ├── ResponsiveWaffle.tsx │ ├── ResponsiveWaffleCanvas.tsx │ ├── ResponsiveWaffleHtml.tsx │ ├── Waffle.tsx │ ├── WaffleArea.tsx │ ├── WaffleAreaHtml.tsx │ ├── WaffleAreas.tsx │ ├── WaffleAreasHtml.tsx │ ├── WaffleCanvas.tsx │ ├── WaffleCell.tsx │ ├── WaffleCellHtml.tsx │ ├── WaffleCells.tsx │ ├── WaffleCellsHtml.tsx │ ├── WaffleHtml.tsx │ ├── WaffleTooltip.tsx │ ├── defaults.ts │ ├── hooks.ts │ ├── index.ts │ └── types.ts │ ├── tests │ ├── Waffle.test.tsx │ ├── WaffleHtml.test.tsx │ └── __snapshots__ │ │ ├── Waffle.test.tsx.snap │ │ └── WaffleHtml.test.tsx.snap │ └── tsconfig.json ├── pnpm-lock.yaml ├── pnpm-workspace.yaml ├── scripts └── capture.mjs ├── storybook ├── .storybook │ ├── global.css │ ├── main.js │ └── preview.js ├── package.json └── stories │ ├── assets │ └── imgs │ │ ├── betulaceae.png │ │ ├── conifers.png │ │ ├── cupressaceae.png │ │ ├── deciduous_broadleaf.png │ │ ├── ericaceae.png │ │ ├── fagaceae.png │ │ ├── flowering_fruiting_trees.png │ │ ├── leguminosae.png │ │ ├── moraceae.png │ │ ├── myrtaceae.png │ │ ├── pinaceae.png │ │ ├── rosaceae.png │ │ ├── sapindaceae.png │ │ ├── shimpaku.png │ │ ├── theaceae.png │ │ ├── tropicals_subtropicals.png │ │ └── ulmaceae.png │ ├── bar │ ├── Bar.stories.tsx │ ├── BarCanvas.stories._tsx │ └── ResponsivBarCanvas.stories._tsx │ ├── boxplot │ ├── BoxPlot.stories.tsx │ └── BoxPlotCustomGroupsAndLayers.tsx │ ├── bullet │ └── Bullet.stories.tsx │ ├── bump │ ├── AreaBump.stories.tsx │ └── Bump.stories.tsx │ ├── calendar │ ├── Calendar.stories.tsx │ ├── CalendarCanvas.stories.tsx │ └── TimeRange.stories.tsx │ ├── chord │ └── Chord.stories.tsx │ ├── circle-packing │ ├── CirclePacking.stories.tsx │ └── CirclePackingHtml.stories.tsx │ ├── funnel │ ├── Clustering.tsx │ └── Funnel.stories.tsx │ ├── heatmap │ ├── CustomTooltip.tsx │ ├── HeatMap.stories.tsx │ ├── HeatMapCanvas.stories.tsx │ ├── customInterpolator.tsx │ └── data.ts │ ├── icicle │ ├── BonsaisIcicle.tsx │ ├── Icicle.stories.tsx │ ├── IcicleHtml.stories.tsx │ ├── bonsais.ts │ └── shared.tsx │ ├── internal │ ├── KeyLogger.tsx │ └── helpers.ts │ ├── line │ ├── Line.stories.tsx │ ├── LineCanvas.stories.tsx │ └── shared.ts │ ├── marimekko │ └── Marimekko.stories.tsx │ ├── network │ ├── Network.stories.tsx │ └── NetworkCanvas.stories.tsx │ ├── nivo-theme.ts │ ├── parallel-coordinates │ ├── CustomTooltip.tsx │ └── ParallelCoordinates.stories.tsx │ ├── pie │ ├── Pie.stories.tsx │ └── PieCanvas.stories.tsx │ ├── radar │ └── Radar.stories.tsx │ ├── radial-bar │ └── RadialBar.stories.tsx │ ├── rects │ └── RectsNodes.stories.tsx │ ├── sankey │ └── Sankey.stories.tsx │ ├── scatterplot │ ├── ScatterPlot.stories.tsx │ └── ScatterPlotCanvas.stories.tsx │ ├── stream │ └── Stream.stories.tsx │ ├── sunburst │ └── Sunburst.stories.tsx │ ├── swarmplot │ ├── SwarmPlot.stories.tsx │ ├── SwarmPlotCanvas.stories.tsx │ ├── SwarmPlotCustomCircle.tsx │ └── SwarmPlotExtraLayers.tsx │ ├── tree │ ├── Tree.stories.tsx │ └── TreeCanvas.stories.tsx │ ├── treemap │ ├── TreeMap.stories.tsx │ └── TreeMapHtml.stories.tsx │ ├── voronoi │ └── Voronoi.stories.tsx │ └── waffle │ ├── CustomTooltip.tsx │ ├── Waffle.stories.tsx │ ├── WaffleCanvas.stories.tsx │ └── WaffleHtml.stories.tsx ├── tsconfig.json ├── tsconfig.monorepo.json ├── tsconfig.types.json └── website ├── .gitignore ├── gatsby-browser.tsx ├── gatsby-config.ts ├── gatsby-node.js ├── gatsby-ssr.tsx ├── package.json ├── sandbox.config.json ├── src ├── @types │ ├── file_types.d.ts │ └── styled.d.ts ├── assets │ ├── captures │ │ ├── area-bump.png │ │ ├── bar-canvas.png │ │ ├── bar.png │ │ ├── bullet.png │ │ ├── bump.png │ │ ├── calendar.png │ │ ├── chord-canvas.png │ │ ├── chord.png │ │ ├── choropleth-canvas.png │ │ ├── choropleth.png │ │ ├── circle-packing-canvas.png │ │ ├── circle-packing.png │ │ ├── funnel.png │ │ ├── geomap-canvas.png │ │ ├── geomap.png │ │ ├── heatmap-canvas.png │ │ ├── heatmap.png │ │ ├── home │ │ │ ├── area-bump.png │ │ │ ├── bar-horizontal.png │ │ │ ├── bar-vertical.png │ │ │ ├── bump.png │ │ │ ├── calendar.png │ │ │ ├── chord.png │ │ │ ├── choropleth.png │ │ │ ├── circle-packing.png │ │ │ ├── icicle.png │ │ │ ├── line.png │ │ │ ├── marimekko.png │ │ │ ├── pie.png │ │ │ ├── radar.png │ │ │ ├── radial-bar.png │ │ │ ├── sankey.png │ │ │ ├── stream.png │ │ │ ├── sunburst.png │ │ │ ├── swarmplot.png │ │ │ ├── treemap.png │ │ │ └── voronoi.png │ │ ├── icicle.png │ │ ├── line-canvas.png │ │ ├── line.png │ │ ├── marimekko.png │ │ ├── network-canvas.png │ │ ├── network.png │ │ ├── pages │ │ │ └── home.png │ │ ├── parallel-coordinates-canvas.png │ │ ├── parallel-coordinates.png │ │ ├── pie-canvas.png │ │ ├── pie.png │ │ ├── polar-bar.png │ │ ├── radar.png │ │ ├── radial-bar.png │ │ ├── sankey.png │ │ ├── scatterplot-canvas.png │ │ ├── scatterplot.png │ │ ├── stream.png │ │ ├── sunburst.png │ │ ├── swarmplot-canvas.png │ │ ├── swarmplot.png │ │ ├── tree.png │ │ ├── treemap-canvas.png │ │ ├── treemap-html.png │ │ ├── treemap.png │ │ ├── voronoi.png │ │ ├── waffle-canvas.png │ │ ├── waffle-html.png │ │ └── waffle.png │ ├── icons.png │ ├── icons │ │ ├── area-bump-dark-colored.png │ │ ├── area-bump-dark-neutral.png │ │ ├── area-bump-light-colored.png │ │ ├── area-bump-light-neutral.png │ │ ├── bar-dark-colored.png │ │ ├── bar-dark-neutral.png │ │ ├── bar-light-colored.png │ │ ├── bar-light-neutral.png │ │ ├── boxplot-dark-colored.png │ │ ├── boxplot-dark-neutral.png │ │ ├── boxplot-light-colored.png │ │ ├── boxplot-light-neutral.png │ │ ├── bullet-dark-colored.png │ │ ├── bullet-dark-neutral.png │ │ ├── bullet-light-colored.png │ │ ├── bullet-light-neutral.png │ │ ├── bump-dark-colored.png │ │ ├── bump-dark-neutral.png │ │ ├── bump-light-colored.png │ │ ├── bump-light-neutral.png │ │ ├── calendar-dark-colored.png │ │ ├── calendar-dark-neutral.png │ │ ├── calendar-light-colored.png │ │ ├── calendar-light-neutral.png │ │ ├── chord-dark-colored.png │ │ ├── chord-dark-neutral.png │ │ ├── chord-light-colored.png │ │ ├── chord-light-neutral.png │ │ ├── choropleth-dark-colored.png │ │ ├── choropleth-dark-neutral.png │ │ ├── choropleth-light-colored.png │ │ ├── choropleth-light-neutral.png │ │ ├── circle-packing-dark-colored.png │ │ ├── circle-packing-dark-neutral.png │ │ ├── circle-packing-light-colored.png │ │ ├── circle-packing-light-neutral.png │ │ ├── code-dark-colored.png │ │ ├── code-dark-neutral.png │ │ ├── code-light-colored.png │ │ ├── code-light-neutral.png │ │ ├── data-dark-colored.png │ │ ├── data-dark-neutral.png │ │ ├── data-light-colored.png │ │ ├── data-light-neutral.png │ │ ├── funnel-dark-colored.png │ │ ├── funnel-dark-neutral.png │ │ ├── funnel-light-colored.png │ │ ├── funnel-light-neutral.png │ │ ├── geomap-dark-colored.png │ │ ├── geomap-dark-neutral.png │ │ ├── geomap-light-colored.png │ │ ├── geomap-light-neutral.png │ │ ├── heatmap-dark-colored.png │ │ ├── heatmap-dark-neutral.png │ │ ├── heatmap-light-colored.png │ │ ├── heatmap-light-neutral.png │ │ ├── icicle-dark-colored.png │ │ ├── icicle-dark-neutral.png │ │ ├── icicle-light-colored.png │ │ ├── icicle-light-neutral.png │ │ ├── line-dark-colored.png │ │ ├── line-dark-neutral.png │ │ ├── line-light-colored.png │ │ ├── line-light-neutral.png │ │ ├── marimekko-dark-colored.png │ │ ├── marimekko-dark-neutral.png │ │ ├── marimekko-light-colored.png │ │ ├── marimekko-light-neutral.png │ │ ├── network-dark-colored.png │ │ ├── network-dark-neutral.png │ │ ├── network-light-colored.png │ │ ├── network-light-neutral.png │ │ ├── nivo-icon.png │ │ ├── parallel-coordinates-dark-colored.png │ │ ├── parallel-coordinates-dark-neutral.png │ │ ├── parallel-coordinates-light-colored.png │ │ ├── parallel-coordinates-light-neutral.png │ │ ├── pie-dark-colored.png │ │ ├── pie-dark-neutral.png │ │ ├── pie-light-colored.png │ │ ├── pie-light-neutral.png │ │ ├── polar-bar-dark-colored.png │ │ ├── polar-bar-dark-neutral.png │ │ ├── polar-bar-light-colored.png │ │ ├── polar-bar-light-neutral.png │ │ ├── radar-dark-colored.png │ │ ├── radar-dark-neutral.png │ │ ├── radar-light-colored.png │ │ ├── radar-light-neutral.png │ │ ├── radial-bar-dark-colored.png │ │ ├── radial-bar-dark-neutral.png │ │ ├── radial-bar-light-colored.png │ │ ├── radial-bar-light-neutral.png │ │ ├── sankey-dark-colored.png │ │ ├── sankey-dark-neutral.png │ │ ├── sankey-grey.png │ │ ├── sankey-light-colored.png │ │ ├── sankey-light-neutral.png │ │ ├── sankey-red.png │ │ ├── scatterplot-dark-colored.png │ │ ├── scatterplot-dark-neutral.png │ │ ├── scatterplot-light-colored.png │ │ ├── scatterplot-light-neutral.png │ │ ├── sprite.conf │ │ ├── stream-dark-colored.png │ │ ├── stream-dark-neutral.png │ │ ├── stream-light-colored.png │ │ ├── stream-light-neutral.png │ │ ├── sunburst-dark-colored.png │ │ ├── sunburst-dark-neutral.png │ │ ├── sunburst-grey.png │ │ ├── sunburst-light-colored.png │ │ ├── sunburst-light-neutral.png │ │ ├── sunburst-red.png │ │ ├── swarmplot-dark-colored.png │ │ ├── swarmplot-dark-neutral.png │ │ ├── swarmplot-light-colored.png │ │ ├── swarmplot-light-neutral.png │ │ ├── time-range-dark-colored.png │ │ ├── time-range-dark-neutral.png │ │ ├── time-range-light-colored.png │ │ ├── time-range-light-neutral.png │ │ ├── tree-dark-colored.png │ │ ├── tree-dark-neutral.png │ │ ├── tree-light-colored.png │ │ ├── tree-light-neutral.png │ │ ├── treemap-dark-colored.png │ │ ├── treemap-dark-neutral.png │ │ ├── treemap-grey.png │ │ ├── treemap-light-colored.png │ │ ├── treemap-light-neutral.png │ │ ├── treemap-red.png │ │ ├── voronoi-dark-colored.png │ │ ├── voronoi-dark-neutral.png │ │ ├── voronoi-grey.png │ │ ├── voronoi-light-colored.png │ │ ├── voronoi-light-neutral.png │ │ ├── voronoi-red.png │ │ ├── waffle-dark-colored.png │ │ ├── waffle-dark-neutral.png │ │ ├── waffle-light-colored.png │ │ └── waffle-light-neutral.png │ ├── icons@2x.png │ ├── nivo-logo.png │ └── stories │ │ ├── SwarmPlotLayers.png │ │ └── SwarmPlotRenderNode.png ├── components │ ├── CodeBlock.tsx │ ├── CollapsibleCard.tsx │ ├── Header.tsx │ ├── Highlight.tsx │ ├── Layout.tsx │ ├── Markdown.tsx │ ├── PageContent.ts │ ├── PageWrapper.tsx │ ├── RootWrapper.tsx │ ├── Seo.tsx │ ├── ThemeSelector.tsx │ ├── components │ │ ├── ActionsLogger.tsx │ │ ├── ActionsLoggerLog.tsx │ │ ├── ChartCaptureEffect.tsx │ │ ├── ComponentDescription.tsx │ │ ├── ComponentFlavorSelector.tsx │ │ ├── ComponentHeader.tsx │ │ ├── ComponentPage.tsx │ │ ├── ComponentSettings.tsx │ │ ├── ComponentSettingsGroup.tsx │ │ ├── ComponentTabs.tsx │ │ ├── ComponentTemplate.tsx │ │ ├── Stories.tsx │ │ ├── api-client │ │ │ ├── ApiClient.tsx │ │ │ ├── ApiPreview.tsx │ │ │ ├── ApiResponse.tsx │ │ │ ├── ApiSubmit.tsx │ │ │ └── ApiTabs.tsx │ │ └── explorer │ │ │ ├── ComponentsExplorer.tsx │ │ │ ├── ComponentsFilters.tsx │ │ │ ├── ComponentsGrid.tsx │ │ │ ├── ComponentsGridItem.tsx │ │ │ ├── ComponentsSearch.tsx │ │ │ └── index.ts │ ├── controls │ │ ├── ControlsGroup.tsx │ │ ├── ControlsGroups.tsx │ │ ├── colors │ │ │ ├── BlendModeControl.tsx │ │ │ ├── BulletColorsControl.tsx │ │ │ ├── ColorInterpolatorsControl.tsx │ │ │ ├── ColorPickerControl.tsx │ │ │ ├── ColorsControlItem.tsx │ │ │ ├── ContinuousColorsControl.tsx │ │ │ ├── InheritedColorControl.tsx │ │ │ ├── InheritedColorModifierControl.tsx │ │ │ ├── OpacityControl.tsx │ │ │ ├── OrdinalColorsControl.tsx │ │ │ ├── QuantizeColorsControl.tsx │ │ │ ├── colorSchemeSelect.tsx │ │ │ └── index.ts │ │ ├── generics │ │ │ ├── ArrayControl.tsx │ │ │ ├── ChoicesControl.tsx │ │ │ ├── NumberArrayControl.tsx │ │ │ ├── ObjectControl.tsx │ │ │ ├── PropertyDocumentation.tsx │ │ │ ├── RadioControl.tsx │ │ │ ├── RangeControl.tsx │ │ │ ├── SwitchControl.tsx │ │ │ ├── SwitchableRangeControl.tsx │ │ │ ├── TextControl.tsx │ │ │ └── index.ts │ │ ├── specialized │ │ │ ├── AngleControl.tsx │ │ │ ├── AnnotationsControl.tsx │ │ │ ├── BorderRadiusControl.tsx │ │ │ ├── BoxAnchorControl.tsx │ │ │ ├── CartesianOrientationControl.tsx │ │ │ ├── LineWidthControl.tsx │ │ │ ├── MarginControl.tsx │ │ │ ├── MotionConfigControl.tsx │ │ │ ├── ScaleControl.tsx │ │ │ ├── ValueFormatControl.tsx │ │ │ └── index.ts │ │ ├── types.ts │ │ └── ui │ │ │ ├── Control.tsx │ │ │ ├── Help.tsx │ │ │ ├── Label.ts │ │ │ ├── PropertyDescription.tsx │ │ │ ├── PropertyFlavors.tsx │ │ │ ├── PropertyHeader.tsx │ │ │ ├── Radio.tsx │ │ │ ├── Select.tsx │ │ │ ├── Switch.tsx │ │ │ ├── TextInput.tsx │ │ │ ├── index.ts │ │ │ └── styled.tsx │ ├── guides │ │ ├── CollapsibleTextExplanation.tsx │ │ ├── GuideDemoBlock.tsx │ │ ├── axes │ │ │ ├── AxesLegend.tsx │ │ │ ├── AxesPosition.tsx │ │ │ ├── AxesTicks.tsx │ │ │ ├── index.ts │ │ │ ├── scales.tsx │ │ │ └── theme.tsx │ │ ├── colors │ │ │ ├── ColorsColor.js │ │ │ ├── ColorsIllustrations.js │ │ │ └── ColorsRanges.js │ │ ├── gradients │ │ │ ├── GradientsExample.js │ │ │ └── GradientsIllustrations.js │ │ ├── legends │ │ │ ├── LegendDirection.tsx │ │ │ ├── LegendItemDirection.tsx │ │ │ ├── LegendPosition.tsx │ │ │ ├── SymbolShape.tsx │ │ │ └── index.ts │ │ ├── patterns │ │ │ ├── PatternsDotsDemo.tsx │ │ │ ├── PatternsExample.tsx │ │ │ ├── PatternsIllustrations.tsx │ │ │ ├── PatternsLinesDemo.tsx │ │ │ ├── PatternsSquaresDemo.tsx │ │ │ └── index.ts │ │ ├── scales │ │ │ ├── ScaleBand.tsx │ │ │ ├── ScaleBandDemo.tsx │ │ │ ├── ScaleConfig.tsx │ │ │ ├── ScaleGuide.tsx │ │ │ ├── ScaleLinear.tsx │ │ │ ├── ScaleLinearDemo.tsx │ │ │ ├── ScaleLog.tsx │ │ │ ├── ScaleLogDemo.tsx │ │ │ ├── ScaleSymlog.tsx │ │ │ ├── ScaleSymlogDemo.tsx │ │ │ ├── ScaleUseCase.tsx │ │ │ ├── demo.tsx │ │ │ ├── index.ts │ │ │ ├── scalesConfig.ts │ │ │ └── types.ts │ │ └── theming │ │ │ ├── ThemedBar.tsx │ │ │ ├── ThemedHeatMap.tsx │ │ │ ├── ThemedLine.tsx │ │ │ ├── ThemedRadialBar.tsx │ │ │ ├── defaults.ts │ │ │ ├── index.ts │ │ │ └── props.ts │ ├── home │ │ ├── Home.tsx │ │ ├── HomeAreaBumpDemo.tsx │ │ ├── HomeBarDemo.tsx │ │ ├── HomeBumpDemo.tsx │ │ ├── HomeCalendarDemo.tsx │ │ ├── HomeChordDemo.tsx │ │ ├── HomeChoroplethDemo.tsx │ │ ├── HomeCirclePackingDemo.tsx │ │ ├── HomeIcicleDemo.tsx │ │ ├── HomeLineDemo.tsx │ │ ├── HomeMarimekkoDemo.tsx │ │ ├── HomePieDemo.tsx │ │ ├── HomeRadarDemo.tsx │ │ ├── HomeRadialBarDemo.tsx │ │ ├── HomeSankeyDemo.tsx │ │ ├── HomeStreamDemo.tsx │ │ ├── HomeSunburstDemo.tsx │ │ ├── HomeSwarmPlotDemo.tsx │ │ ├── HomeTreeMapDemo.tsx │ │ ├── HomeVoronoiDemo.tsx │ │ ├── dimensions.ts │ │ ├── index.ts │ │ └── theme.ts │ ├── icons │ │ ├── AreaBumpIcon.tsx │ │ ├── BarIcon.tsx │ │ ├── BoxPlotIcon.tsx │ │ ├── BulletIcon.tsx │ │ ├── BumpIcon.tsx │ │ ├── CalendarIcon.tsx │ │ ├── ChordIcon.tsx │ │ ├── ChoroplethIcon.tsx │ │ ├── CirclePackingIcon.tsx │ │ ├── CodeIcon.tsx │ │ ├── DataIcon.tsx │ │ ├── FunnelIcon.tsx │ │ ├── GeoMapIcon.tsx │ │ ├── HeatMapIcon.tsx │ │ ├── IcicleIcon.tsx │ │ ├── Icons.tsx │ │ ├── LineIcon.tsx │ │ ├── MapIcon.tsx │ │ ├── MarimekkoIcon.tsx │ │ ├── NetworkIcon.tsx │ │ ├── ParallelCoordinatesIcon.tsx │ │ ├── PieIcon.tsx │ │ ├── PolarBarIcon.tsx │ │ ├── RadarIcon.tsx │ │ ├── RadialBarIcon.tsx │ │ ├── SankeyIcon.tsx │ │ ├── ScatterPlotIcon.tsx │ │ ├── StreamIcon.tsx │ │ ├── SunburstIcon.tsx │ │ ├── SwarmPlotIcon.tsx │ │ ├── TimeRangeIcon.tsx │ │ ├── TreeIcon.tsx │ │ ├── TreeMapIcon.tsx │ │ ├── VoronoiIcon.tsx │ │ ├── WaffleIcon.tsx │ │ ├── styled.tsx │ │ └── types.ts │ ├── nav │ │ ├── FloatingMiniToc.tsx │ │ ├── FullNav.tsx │ │ ├── FullNavComponentLink.tsx │ │ ├── HeaderNav.tsx │ │ ├── MiniNav.tsx │ │ ├── MiniNavLink.tsx │ │ ├── NavToggleButton.tsx │ │ └── index.ts │ └── styled.ts ├── data │ ├── components │ │ ├── area-bump │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── bar │ │ │ ├── generator.ts │ │ │ ├── mapper.tsx │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── boxplot │ │ │ ├── generator.ts │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── bullet │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── bump │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── calendar │ │ │ ├── mapper.tsx │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── chord │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── choropleth │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── circle-packing │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── funnel │ │ │ ├── generator.ts │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── geo │ │ │ ├── generator.ts │ │ │ ├── mapper.tsx │ │ │ ├── props.ts │ │ │ └── world_countries.json │ │ ├── geomap │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── heatmap │ │ │ ├── generator.ts │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ ├── props.ts │ │ │ └── types.ts │ │ ├── icicle │ │ │ ├── mapper.tsx │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── line │ │ │ ├── defaults.ts │ │ │ ├── generator.ts │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── marimekko │ │ │ ├── mapper.tsx │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── network │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── parallel-coordinates │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ ├── props.ts │ │ │ └── variables.ts │ │ ├── pie │ │ │ ├── mapper.tsx │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── polar-bar │ │ │ ├── generator.ts │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── radar │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── radial-bar │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── sankey │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── scatterplot │ │ │ ├── generator.ts │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── stream │ │ │ ├── defaults.ts │ │ │ ├── generator.ts │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── sunburst │ │ │ ├── mapper.tsx │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── swarmplot │ │ │ ├── generator.ts │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── time-range │ │ │ ├── mapper.tsx │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── tree │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── treemap │ │ │ ├── generator.ts │ │ │ ├── mapper.ts │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ ├── voronoi │ │ │ ├── meta.yml │ │ │ └── props.ts │ │ └── waffle │ │ │ ├── mapper.tsx │ │ │ ├── meta.yml │ │ │ └── props.ts │ ├── config.ts │ └── nav.ts ├── lib │ ├── chart-properties │ │ ├── accessibility.ts │ │ ├── annotations.ts │ │ ├── axes.ts │ │ ├── chart-dimensions.ts │ │ ├── colors.ts │ │ ├── grid.ts │ │ ├── index.ts │ │ ├── interactivity.ts │ │ └── ref.ts │ ├── componentProperties.ts │ ├── generateChartCode.ts │ ├── objectDiff.ts │ ├── property-mappers │ │ ├── index.ts │ │ ├── mapAxis.ts │ │ ├── mapFormat.ts │ │ └── mapLegends.ts │ ├── settings.ts │ ├── useCopyToClipboard.ts │ └── useLocalStorage.js ├── pages │ ├── 404.tsx │ ├── about.tsx │ ├── area-bump │ │ └── index.tsx │ ├── bar │ │ ├── api.tsx │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── boxplot │ │ └── index.tsx │ ├── bullet │ │ └── index.tsx │ ├── bump │ │ └── index.tsx │ ├── calendar │ │ ├── api.tsx │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── chord │ │ ├── api.tsx │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── choropleth │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── circle-packing │ │ ├── api.tsx │ │ ├── canvas.tsx │ │ ├── html.tsx │ │ └── index.tsx │ ├── components.tsx │ ├── faq.tsx │ ├── funnel │ │ └── index.tsx │ ├── geomap │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── guides │ │ ├── axes.tsx │ │ ├── colors.tsx │ │ ├── gradients.tsx │ │ ├── legends.tsx │ │ ├── patterns.tsx │ │ ├── scales.tsx │ │ └── theming.tsx │ ├── heatmap │ │ ├── api.tsx │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── icicle │ │ ├── api.tsx │ │ ├── html.tsx │ │ └── index.tsx │ ├── index.tsx │ ├── internal │ │ ├── home-demos.tsx │ │ └── icons.tsx │ ├── line │ │ ├── api.tsx │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── marimekko │ │ └── index.tsx │ ├── network │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── parallel-coordinates │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── pie │ │ ├── api.tsx │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── polar-bar │ │ └── index.tsx │ ├── radar │ │ ├── api.tsx │ │ └── index.tsx │ ├── radial-bar │ │ └── index.tsx │ ├── references.tsx │ ├── sankey │ │ ├── api.tsx │ │ └── index.tsx │ ├── scatterplot │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── stream │ │ └── index.tsx │ ├── sunburst │ │ ├── api.tsx │ │ └── index.tsx │ ├── swarmplot │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── time-range │ │ └── index.tsx │ ├── tree │ │ ├── canvas.tsx │ │ └── index.tsx │ ├── treemap │ │ ├── api.tsx │ │ ├── canvas.tsx │ │ ├── html.tsx │ │ └── index.tsx │ ├── voronoi │ │ └── index.tsx │ └── waffle │ │ ├── canvas.tsx │ │ ├── html.tsx │ │ └── index.tsx ├── styles │ ├── guides.css │ ├── icons.css │ ├── index.css │ ├── mobile-nav.css │ ├── mq.css │ ├── nav.css │ └── settings │ │ ├── colors.css │ │ └── dimensions.css ├── theming │ ├── GlobalStyle.ts │ ├── SwitchableThemeProvider.tsx │ ├── highlight.ts │ ├── mediaQueries.tsx │ └── theme.ts └── types.ts ├── static ├── CNAME └── favicon.ico └── tsconfig.json /.codesandbox/ci.json: -------------------------------------------------------------------------------- 1 | { 2 | "installCommand": "codesandbox:init", 3 | "buildCommand": false, 4 | "packages": ["packages/*"], 5 | "sandboxes": ["/examples/codesandbox", "/website"], 6 | "node": "18" 7 | } 8 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.js] 2 | indent_style = space 3 | indent_size = 4 4 | max_line_length = 100 5 | 6 | [*.ts] 7 | indent_style = space 8 | indent_size = 4 9 | max_line_length = 100 10 | 11 | [*.tsx] 12 | indent_style = space 13 | indent_size = 4 14 | max_line_length = 100 -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | open_collective: nivo 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea 3 | *.log* 4 | node_modules 5 | coverage 6 | storybook/storybook-static 7 | 8 | package-lock.json 9 | 10 | build 11 | *.tsbuildinfo 12 | 13 | /packages/*/dist 14 | 15 | /tmp 16 | 17 | *.lerna_backup 18 | 19 | /stats 20 | /api/app.js 21 | # Local Netlify folder 22 | .netlify 23 | 24 | # yarn 2 - not using zero-installs 25 | .pnp.* 26 | .yarn/* 27 | !.yarn/patches 28 | !.yarn/plugins 29 | !.yarn/releases 30 | !.yarn/sdks 31 | !.yarn/versions 32 | 33 | cypress/cypress/screenshots 34 | cypress/cypress/videos 35 | 36 | examples/local* -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | auto-install-peers=true 2 | strict-peer-dependencies=false 3 | dedupe-peer-dependents=true 4 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v22 -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | printWidth: 100 2 | tabWidth: 4 3 | bracketSpacing: true 4 | semi: false 5 | trailingComma: es5 6 | singleQuote: true 7 | arrowParens: avoid -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: node api/app.js -------------------------------------------------------------------------------- /api/nodemon.json: -------------------------------------------------------------------------------- 1 | { 2 | "restartable": "rs", 3 | "ignore": ["node_modules/"], 4 | "watch": ["app.ts"], 5 | "execMap": { 6 | "ts": "node -r ts-node/register" 7 | }, 8 | "env": { 9 | "NODE_ENV": "development" 10 | }, 11 | "ext": "ts" 12 | } -------------------------------------------------------------------------------- /api/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es5", 4 | "rootDir": ".", 5 | "module": "commonjs", 6 | "moduleResolution": "node", 7 | "esModuleInterop": true, 8 | "skipLibCheck": true, 9 | "forceConsistentCasingInFileNames": true 10 | }, 11 | "include": ["*.ts"] 12 | } -------------------------------------------------------------------------------- /babel.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | presets: [ 3 | ['@babel/preset-env', { loose: true }], 4 | ['@babel/preset-react', { 5 | development: process.env.BABEL_ENV === "development", 6 | runtime: 'automatic' 7 | }], 8 | '@babel/preset-typescript', 9 | ], 10 | } 11 | -------------------------------------------------------------------------------- /branding/nivo-logo.ai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/branding/nivo-logo.ai -------------------------------------------------------------------------------- /cypress/cypress.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "cypress"; 2 | 3 | export default defineConfig({ 4 | viewportWidth: 600, 5 | viewportHeight: 600, 6 | component: { 7 | devServer: { 8 | framework: "react", 9 | bundler: "vite", 10 | }, 11 | video: false, 12 | }, 13 | }); 14 | -------------------------------------------------------------------------------- /cypress/cypress.d.ts: -------------------------------------------------------------------------------- 1 | import { mount } from 'cypress/react' 2 | 3 | // Augment the Cypress namespace to include type definitions for 4 | // your custom command. 5 | // Alternatively, can be defined in cypress/support/component.d.ts 6 | // with a at the top of your spec. 7 | declare global { 8 | namespace Cypress { 9 | interface Chainable { 10 | mount: typeof mount 11 | } 12 | } 13 | } -------------------------------------------------------------------------------- /cypress/cypress/support/commands.js: -------------------------------------------------------------------------------- 1 | import '@testing-library/cypress/add-commands' 2 | // https://on.cypress.io/custom-commands 3 | -------------------------------------------------------------------------------- /cypress/cypress/support/component-index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Components App 8 | 9 | 10 |
11 | 12 | -------------------------------------------------------------------------------- /cypress/src/components/heatmap/shared.ts: -------------------------------------------------------------------------------- 1 | export const defaultData = [ 2 | { 3 | id: 'A', 4 | data: [ 5 | { x: 'X', y: 1 }, 6 | { x: 'Y', y: 2 }, 7 | { x: 'Z', y: 3 }, 8 | ], 9 | }, 10 | { 11 | id: 'B', 12 | data: [ 13 | { x: 'X', y: 3 }, 14 | { x: 'Y', y: 2 }, 15 | { x: 'Z', y: 1 }, 16 | ], 17 | }, 18 | { 19 | id: 'C', 20 | data: [ 21 | { x: 'X', y: 2 }, 22 | { x: 'Y', y: 2 }, 23 | { x: 'Z', y: 2 }, 24 | ], 25 | }, 26 | ] 27 | -------------------------------------------------------------------------------- /cypress/src/components/line/LineCanvas.cy.tsx: -------------------------------------------------------------------------------- 1 | import { ResponsiveLineCanvas } from '@nivo/line' 2 | import { testChartResponsiveness } from '../../helpers/responsive' 3 | import { defaultData } from './shared' 4 | 5 | describe('LineCanvas', () => { 6 | testChartResponsiveness(defaults => ( 7 | 14 | )) 15 | }) 16 | -------------------------------------------------------------------------------- /cypress/src/components/line/shared.ts: -------------------------------------------------------------------------------- 1 | export const defaultData = [ 2 | { 3 | id: 'A', 4 | data: [ 5 | { x: 'V', y: 30 }, 6 | { x: 'W', y: 0 }, 7 | { x: 'X', y: 30 }, 8 | { x: 'Y', y: 10 }, 9 | { x: 'Z', y: 20 }, 10 | ], 11 | }, 12 | { 13 | id: 'B', 14 | data: [ 15 | { x: 'V', y: 0 }, 16 | { x: 'W', y: 30 }, 17 | { x: 'X', y: 10 }, 18 | { x: 'Y', y: 30 }, 19 | { x: 'Z', y: 20 }, 20 | ], 21 | }, 22 | ] 23 | -------------------------------------------------------------------------------- /cypress/src/components/network/shared.ts: -------------------------------------------------------------------------------- 1 | import { InputLink, InputNode } from '@nivo/network' 2 | 3 | export const defaultData: { 4 | nodes: InputNode[] 5 | links: InputLink[] 6 | } = { 7 | nodes: [{ id: 'A' }, { id: 'B' }, { id: 'C' }, { id: 'D' }, { id: 'E' }], 8 | links: [ 9 | { source: 'A', target: 'B' }, 10 | { source: 'B', target: 'C' }, 11 | { source: 'C', target: 'D' }, 12 | { source: 'D', target: 'E' }, 13 | { source: 'E', target: 'A' }, 14 | ], 15 | } 16 | -------------------------------------------------------------------------------- /cypress/src/components/pie/shared.ts: -------------------------------------------------------------------------------- 1 | export interface Datum { 2 | id: string 3 | value: number 4 | color: string 5 | } 6 | 7 | export const defaultData: Datum[] = [ 8 | { 9 | id: 'A', 10 | value: 30, 11 | color: '#ff5500', 12 | }, 13 | { 14 | id: 'B', 15 | value: 20, 16 | color: '#ffdd00', 17 | }, 18 | { 19 | id: 'C', 20 | value: 50, 21 | color: '#99cc44', 22 | }, 23 | ] 24 | -------------------------------------------------------------------------------- /cypress/src/components/tree/shared.ts: -------------------------------------------------------------------------------- 1 | export interface Datum { 2 | id: string 3 | children?: Datum[] 4 | } 5 | 6 | export const defaultData: Datum = { 7 | id: 'A', 8 | children: [ 9 | { id: '0' }, 10 | { 11 | id: '1', 12 | children: [{ id: 'A' }, { id: 'B' }], 13 | }, 14 | { id: '2' }, 15 | ], 16 | } 17 | -------------------------------------------------------------------------------- /cypress/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()] 7 | }) 8 | -------------------------------------------------------------------------------- /examples/codesandbox/src/charts/Chord.tsx: -------------------------------------------------------------------------------- 1 | import { ResponsiveChord, ResponsiveChordCanvas } from '@nivo/chord' 2 | import { generateChordData } from '@nivo/generators' 3 | import { useChart } from '../hooks' 4 | 5 | const props = { 6 | margin: { top: 60, right: 80, bottom: 60, left: 80 }, 7 | xPadding: 0.2, 8 | } as const 9 | 10 | export function Chord() { 11 | const [data, flavor] = useChart(() => generateChordData({ size: 7 })) 12 | 13 | if (flavor === 'canvas') { 14 | return 15 | } 16 | 17 | return 18 | } 19 | -------------------------------------------------------------------------------- /examples/codesandbox/src/charts/GeoMap.tsx: -------------------------------------------------------------------------------- 1 | import { ResponsiveGeoMap, ResponsiveGeoMapCanvas } from '@nivo/geo' 2 | import { countries } from '../data' 3 | import { useChart } from '../hooks' 4 | 5 | const props = { 6 | borderWidth: 0.5, 7 | features: countries.features, 8 | } 9 | 10 | export function GeoMap() { 11 | const [, flavor] = useChart() 12 | 13 | if (flavor === 'canvas') { 14 | return 15 | } 16 | 17 | return 18 | } 19 | -------------------------------------------------------------------------------- /examples/codesandbox/src/charts/Line.tsx: -------------------------------------------------------------------------------- 1 | import { ResponsiveLine, ResponsiveLineCanvas } from '@nivo/line' 2 | import { generateDrinkStats } from '@nivo/generators' 3 | import { useChart } from '../hooks' 4 | 5 | const props = { 6 | enableSlices: 'x', 7 | margin: { top: 20, right: 20, bottom: 60, left: 80 }, 8 | } as const 9 | 10 | export function Line() { 11 | const [data, flavor] = useChart(() => generateDrinkStats(9)) 12 | 13 | if (flavor === 'canvas') { 14 | return 15 | } 16 | 17 | return 18 | } 19 | -------------------------------------------------------------------------------- /examples/codesandbox/src/charts/Radar.tsx: -------------------------------------------------------------------------------- 1 | import { ResponsiveRadar } from '@nivo/radar' 2 | import { generateWinesTastes } from '@nivo/generators' 3 | import { useChart } from '../hooks' 4 | 5 | const props = { 6 | indexBy: 'taste', 7 | margin: { top: 60, right: 80, bottom: 20, left: 80 }, 8 | } 9 | 10 | export function Radar() { 11 | const [data] = useChart(generateWinesTastes) 12 | 13 | return 14 | } 15 | -------------------------------------------------------------------------------- /examples/codesandbox/src/charts/Sankey.tsx: -------------------------------------------------------------------------------- 1 | import { ResponsiveSankey } from '@nivo/sankey' 2 | import { generateSankeyData } from '@nivo/generators' 3 | import { useChart } from '../hooks' 4 | 5 | const props = { 6 | colors: { scheme: 'category10' }, 7 | margin: { top: 40, right: 40, bottom: 40, left: 40 }, 8 | } as const 9 | 10 | export function Sankey() { 11 | const [data] = useChart(() => 12 | generateSankeyData({ nodeCount: 11, maxIterations: 2 }) 13 | ) 14 | 15 | return 16 | } 17 | -------------------------------------------------------------------------------- /examples/codesandbox/src/charts/Sunburst.tsx: -------------------------------------------------------------------------------- 1 | import { ResponsiveSunburst } from '@nivo/sunburst' 2 | import { generateLibTree } from '@nivo/generators' 3 | import { useChart } from '../hooks' 4 | 5 | const props = { 6 | id: 'name', 7 | value: 'loc', 8 | } 9 | 10 | export function Sunburst() { 11 | const [data] = useChart(generateLibTree) 12 | 13 | return 14 | } 15 | -------------------------------------------------------------------------------- /examples/codesandbox/src/contexts.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react' 2 | 3 | export type Flavor = 'svg'| 'canvas' | 'html' 4 | type Context = [key: number, flavor: Flavor] 5 | 6 | export const ChartContext = createContext(undefined) 7 | -------------------------------------------------------------------------------- /examples/codesandbox/src/data/index.ts: -------------------------------------------------------------------------------- 1 | export { default as countries } from './world_countries.json' 2 | -------------------------------------------------------------------------------- /examples/codesandbox/src/hooks.ts: -------------------------------------------------------------------------------- 1 | import { ChartContext } from './contexts' 2 | import { useContext, useMemo } from 'react' 3 | 4 | export function useChart(generator?: () => T) { 5 | const context = useContext(ChartContext) 6 | 7 | if (context === undefined) { 8 | throw new Error('useChart must be used within a ChartContextProvider') 9 | } 10 | 11 | const [key, flavor] = context 12 | const [data] = useMemo(() => [generator?.(), key], [generator, key]) 13 | 14 | return [data, flavor] as [T, typeof flavor] 15 | } 16 | -------------------------------------------------------------------------------- /examples/codesandbox/src/index.tsx: -------------------------------------------------------------------------------- 1 | import './global.css' 2 | import { css } from 'otion' 3 | import App from './App' 4 | import React from 'react' 5 | import ReactDOM from 'react-dom' 6 | 7 | const rootElement = document.getElementById('root') 8 | 9 | rootElement!.className = css({ height: '100vh' }) 10 | 11 | ReactDOM.render( 12 | 13 | 14 | , 15 | rootElement 16 | ) 17 | -------------------------------------------------------------------------------- /examples/codesandbox/src/utils.ts: -------------------------------------------------------------------------------- 1 | export const flatten = (array: T[]) => ([] as T[]).concat(...array) 2 | 3 | export const random = (min: number, max: number) => 4 | Math.floor(Math.random() * (max - min) + min) 5 | 6 | export const range = (start: number, end: number) => 7 | Array.from(' '.repeat(end - start), (_, index) => start + index) 8 | 9 | export const shuffle = (values: T[]) => 10 | values 11 | .map((value) => [Math.random(), value] as const) 12 | .sort(([left], [right]) => left - right) 13 | .map(([, value]) => value) 14 | -------------------------------------------------------------------------------- /lerna.json: -------------------------------------------------------------------------------- 1 | { 2 | "packages": ["packages/*", "api"], 3 | "version": "0.99.0", 4 | "npmClient": "pnpm" 5 | } 6 | -------------------------------------------------------------------------------- /nivo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/nivo.png -------------------------------------------------------------------------------- /packages/annotations/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/annotations` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/annotations?style=for-the-badge)](https://www.npmjs.com/package/@nivo/annotations) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/annotations?style=for-the-badge)](https://www.npmjs.com/package/@nivo/annotations) 7 | -------------------------------------------------------------------------------- /packages/annotations/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Annotation' 2 | export * from './canvas' 3 | export * from './compute' 4 | export * from './hooks' 5 | export * from './props' 6 | export * from './types' 7 | export * from './utils' 8 | -------------------------------------------------------------------------------- /packages/annotations/src/props.ts: -------------------------------------------------------------------------------- 1 | export const defaultProps = { 2 | dotSize: 4, 3 | noteWidth: 120, 4 | noteTextOffset: 8, 5 | animate: true, 6 | } 7 | -------------------------------------------------------------------------------- /packages/annotations/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/arcs/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/arcs` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/arcs?style=for-the-badge)](https://www.npmjs.com/package/@nivo/arcs) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/arcs?style=for-the-badge)](https://www.npmjs.com/package/@nivo/arcs) 7 | 8 | This package is used internally by nivo packages dealing with arcs 9 | such as `@nivo/pie`, `@nivo/chord` and `@nivo/sunburst`. 10 | -------------------------------------------------------------------------------- /packages/arcs/src/arc_labels/index.ts: -------------------------------------------------------------------------------- 1 | import { ArcLabel } from './ArcLabel' 2 | 3 | export const ArcLabelComponent = ArcLabel 4 | export * from './ArcLabelsLayer' 5 | export * from './canvas' 6 | export * from './props' 7 | export * from './useArcLabels' 8 | -------------------------------------------------------------------------------- /packages/arcs/src/arc_labels/props.ts: -------------------------------------------------------------------------------- 1 | import { PropertyAccessor } from '@nivo/core' 2 | import { InheritedColorConfig } from '@nivo/colors' 3 | import { ArcLabelComponent } from './ArcLabelsLayer' 4 | import { DatumWithArcAndColor } from '../types' 5 | 6 | export interface ArcLabelsProps { 7 | arcLabel: PropertyAccessor 8 | arcLabelsRadiusOffset: number 9 | arcLabelsSkipAngle: number 10 | arcLabelsSkipRadius: number 11 | arcLabelsTextColor: InheritedColorConfig 12 | arcLabelsComponent: ArcLabelComponent 13 | } 14 | -------------------------------------------------------------------------------- /packages/arcs/src/arc_link_labels/index.ts: -------------------------------------------------------------------------------- 1 | import { ArcLinkLabel } from './ArcLinkLabel' 2 | 3 | export const ArcLinkLabelComponent = ArcLinkLabel 4 | export * from './ArcLinkLabelsLayer' 5 | export * from './canvas' 6 | export * from './compute' 7 | export * from './props' 8 | export * from './types' 9 | export * from './useArcLinkLabels' 10 | export * from './useArcLinkLabelsTransition' 11 | export * from './useArcLinks' 12 | -------------------------------------------------------------------------------- /packages/arcs/src/arc_link_labels/types.ts: -------------------------------------------------------------------------------- 1 | import { DatumWithArc, DatumWithArcAndColor, Point } from '../types' 2 | 3 | export interface ArcLink { 4 | side: 'before' | 'after' 5 | points: [Point, Point, Point] 6 | } 7 | 8 | export interface ArcLinkWithDatum extends ArcLink { 9 | data: Datum 10 | } 11 | 12 | export interface ArcLinkLabel extends ArcLinkWithDatum { 13 | x: number 14 | y: number 15 | label: string 16 | linkColor: string 17 | textAnchor: 'start' | 'end' 18 | textColor: string 19 | } 20 | -------------------------------------------------------------------------------- /packages/arcs/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './arc_labels' 2 | export * from './arc_link_labels' 3 | export * from './ArcLine' 4 | export * from './ArcShape' 5 | export * from './ArcsLayer' 6 | export * from './arcTransitionMode' 7 | export * from './boundingBox' 8 | export * from './centers' 9 | export * from './interactivity' 10 | export * from './interpolateArc' 11 | export * from './types' 12 | export * from './useAnimatedArc' 13 | export * from './useArcGenerator' 14 | export * from './useArcsTransition' 15 | -------------------------------------------------------------------------------- /packages/arcs/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/axes/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/axes` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/axes?style=for-the-badge)](https://www.npmjs.com/package/@nivo/axes) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/axes?style=for-the-badge)](https://www.npmjs.com/package/@nivo/axes) 7 | -------------------------------------------------------------------------------- /packages/axes/src/components/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Axes' 2 | export * from './Axis' 3 | export * from './AxisTick' 4 | export * from './Grid' 5 | export * from './GridLine' 6 | export * from './GridLines' 7 | -------------------------------------------------------------------------------- /packages/axes/src/defaults.ts: -------------------------------------------------------------------------------- 1 | import { AxisProps } from './types' 2 | 3 | export const defaultAxisProps: Pick< 4 | Required, 5 | 'tickSize' | 'tickPadding' | 'tickRotation' | 'legendPosition' | 'legendOffset' 6 | > = { 7 | tickSize: 5, 8 | tickPadding: 5, 9 | tickRotation: 0, 10 | legendPosition: 'middle', 11 | legendOffset: 0, 12 | } 13 | -------------------------------------------------------------------------------- /packages/axes/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './components' 2 | export * from './canvas' 3 | export * from './defaults' 4 | export * from './props' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/axes/src/props.ts: -------------------------------------------------------------------------------- 1 | export const positions = ['top', 'right', 'bottom', 'left'] as const 2 | -------------------------------------------------------------------------------- /packages/axes/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/bar/src/BarTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { BarDatum, BarTooltipProps } from './types' 3 | 4 | export const BarTooltip = ({ color, label, ...data }: BarTooltipProps) => { 5 | return 6 | } 7 | -------------------------------------------------------------------------------- /packages/bar/src/compute/index.ts: -------------------------------------------------------------------------------- 1 | export * from './grouped' 2 | export * from './stacked' 3 | export * from './legends' 4 | -------------------------------------------------------------------------------- /packages/bar/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Bar' 2 | export * from './BarCanvas' 3 | export * from './BarItem' 4 | export * from './BarTooltip' 5 | export * from './BarTotals' 6 | export * from './ResponsiveBar' 7 | export * from './ResponsiveBarCanvas' 8 | export * from './defaults' 9 | export * from './types' 10 | -------------------------------------------------------------------------------- /packages/bar/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/boxplot/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/boxplot` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/boxplot?style=for-the-badge)](https://www.npmjs.com/package/@nivo/boxplot) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/boxplot?style=for-the-badge)](https://www.npmjs.com/package/@nivo/boxplot) 7 | 8 | ## Boxplot 9 | 10 | [documentation](http://nivo.rocks/boxplot/) 11 | -------------------------------------------------------------------------------- /packages/boxplot/src/compute/common.ts: -------------------------------------------------------------------------------- 1 | import { ScaleBandSpec, ScaleBand, computeScale } from '@nivo/scales' 2 | 3 | /** 4 | * Generates indexed scale. 5 | */ 6 | export const getIndexScale = ( 7 | groups: string[], 8 | padding: number, 9 | indexScale: ScaleBandSpec, 10 | size: number, 11 | axis: 'x' | 'y' 12 | ) => { 13 | return ( 14 | computeScale(indexScale, { all: groups, min: 0, max: 0 }, size, axis) as ScaleBand 15 | ).padding(padding) 16 | } 17 | -------------------------------------------------------------------------------- /packages/boxplot/src/compute/index.ts: -------------------------------------------------------------------------------- 1 | export * from './generation' 2 | export * from './legends' 3 | export * from './stratification' 4 | -------------------------------------------------------------------------------- /packages/boxplot/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './BoxPlot' 2 | export * from './ResponsiveBoxPlot' 3 | export * from './BoxPlotItem' 4 | export * from './props' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/boxplot/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/bullet/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/bullet` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/bullet?style=for-the-badge)](https://www.npmjs.com/package/@nivo/bullet) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/bullet?style=for-the-badge)](https://www.npmjs.com/package/@nivo/bullet) 7 | 8 | ## Bullet 9 | 10 | [documentation](http://nivo.rocks/bullet/) 11 | 12 | ![Bullet](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/bullet.png) 13 | -------------------------------------------------------------------------------- /packages/bullet/src/BulletTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BulletTooltipProps } from './types' 2 | import { BasicTooltip } from '@nivo/tooltip' 3 | 4 | export const BulletTooltip = ({ color, v0, v1 }: BulletTooltipProps) => { 5 | return ( 6 | 10 | {v0} to {v1} 11 | 12 | ) : ( 13 | {v0} 14 | ) 15 | } 16 | enableChip={true} 17 | color={color} 18 | /> 19 | ) 20 | } 21 | -------------------------------------------------------------------------------- /packages/bullet/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Bullet' 2 | export * from './BulletItem' 3 | export * from './ResponsiveBullet' 4 | export * from './props' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/bullet/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/bump/src/area-bump/AreaTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { AreaBumpDatum, AreaBumpComputedSerie, AreaBumpSerieExtraProps } from './types' 3 | 4 | interface AreaTooltipProps< 5 | Datum extends AreaBumpDatum, 6 | ExtraProps extends AreaBumpSerieExtraProps, 7 | > { 8 | serie: AreaBumpComputedSerie 9 | } 10 | 11 | export const AreaTooltip = < 12 | Datum extends AreaBumpDatum, 13 | ExtraProps extends AreaBumpSerieExtraProps, 14 | >({ 15 | serie, 16 | }: AreaTooltipProps) => ( 17 | 18 | ) 19 | -------------------------------------------------------------------------------- /packages/bump/src/area-bump/index.ts: -------------------------------------------------------------------------------- 1 | export * from './AreaBump' 2 | export * from './defaults' 3 | export * from './hooks' 4 | export * from './ResponsiveAreaBump' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/bump/src/bump/LineTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { BumpComputedSerie, BumpDatum, BumpSerieExtraProps } from './types' 3 | 4 | interface LineTooltipProps { 5 | serie: BumpComputedSerie 6 | } 7 | 8 | export const LineTooltip = ({ 9 | serie, 10 | }: LineTooltipProps) => ( 11 | 17 | ) 18 | -------------------------------------------------------------------------------- /packages/bump/src/bump/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Bump' 2 | export * from './defaults' 3 | export * from './hooks' 4 | export * from './ResponsiveBump' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/bump/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './bump' 2 | export * from './area-bump' 3 | -------------------------------------------------------------------------------- /packages/bump/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/calendar/src/CalendarMonthPath.tsx: -------------------------------------------------------------------------------- 1 | import { CalendarMonthPathProps } from './types' 2 | import { memo } from 'react' 3 | 4 | export const CalendarMonthPath = memo( 5 | ({ path, borderWidth, borderColor }: CalendarMonthPathProps) => { 6 | return ( 7 | 16 | ) 17 | } 18 | ) 19 | -------------------------------------------------------------------------------- /packages/calendar/src/CalendarTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { CalendarTooltipProps } from './types' 3 | import { memo } from 'react' 4 | 5 | export const CalendarTooltip = memo(({ value, day, color }: CalendarTooltipProps) => { 6 | if (value === undefined || isNaN(Number(value))) return null 7 | return 8 | }) 9 | -------------------------------------------------------------------------------- /packages/calendar/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Calendar' 2 | export * from './TimeRange' 3 | export * from './ResponsiveTimeRange' 4 | export * from './ResponsiveCalendar' 5 | export * from './CalendarCanvas' 6 | export * from './ResponsiveCalendarCanvas' 7 | export * from './props' 8 | export * from './compute/calendar' 9 | export * from './compute/timeRange' 10 | export * from './hooks' 11 | export * from './types' 12 | -------------------------------------------------------------------------------- /packages/calendar/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/canvas/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/canvas` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/canvas?style=for-the-badge)](https://www.npmjs.com/package/@nivo/canvas) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/canvas?style=for-the-badge)](https://www.npmjs.com/package/@nivo/canvas) 7 | -------------------------------------------------------------------------------- /packages/canvas/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './roundedRect' 2 | -------------------------------------------------------------------------------- /packages/canvas/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/chord/src/ChordArcTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { memo } from 'react' 2 | import { BasicTooltip } from '@nivo/tooltip' 3 | import { ArcTooltipComponentProps } from './types' 4 | 5 | export const ChordArcTooltip = memo(({ arc }: ArcTooltipComponentProps) => ( 6 | 7 | )) 8 | -------------------------------------------------------------------------------- /packages/chord/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Chord' 2 | export * from './ChordCanvas' 3 | export * from './ResponsiveChord' 4 | export * from './ResponsiveChordCanvas' 5 | export * from './compute' 6 | export * from './hooks' 7 | export * from './types' 8 | export * from './defaults' 9 | -------------------------------------------------------------------------------- /packages/chord/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/circle-packing/src/CirclePackingTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { ComputedDatum } from './types' 3 | 4 | export const CirclePackingTooltip = ({ 5 | id, 6 | formattedValue, 7 | color, 8 | }: ComputedDatum) => ( 9 | 10 | ) 11 | -------------------------------------------------------------------------------- /packages/circle-packing/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CirclePacking' 2 | export * from './ResponsiveCirclePacking' 3 | export * from './CirclePackingHtml' 4 | export * from './ResponsiveCirclePackingHtml' 5 | export * from './CirclePackingCanvas' 6 | export * from './ResponsiveCirclePackingCanvas' 7 | export * from './types' 8 | export * from './defaults' 9 | export * from './hooks' 10 | -------------------------------------------------------------------------------- /packages/circle-packing/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/colors/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/colors` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/colors?style=for-the-badge)](https://www.npmjs.com/package/@nivo/colors) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/colors?style=for-the-badge)](https://www.npmjs.com/package/@nivo/colors) 7 | -------------------------------------------------------------------------------- /packages/colors/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './schemes' 2 | export * from './inheritedColor' 3 | export * from './scales' 4 | -------------------------------------------------------------------------------- /packages/colors/src/scales/index.ts: -------------------------------------------------------------------------------- 1 | export * from './continuousColorScale' 2 | export * from './divergingColorScale' 3 | export * from './ordinalColorScale' 4 | export * from './quantizeColorScale' 5 | export * from './sequentialColorScale' 6 | -------------------------------------------------------------------------------- /packages/colors/src/schemes/cyclical.ts: -------------------------------------------------------------------------------- 1 | import { interpolateRainbow, interpolateSinebow } from 'd3-scale-chromatic' 2 | 3 | export const cyclicalColorInterpolators = { 4 | rainbow: interpolateRainbow, 5 | sinebow: interpolateSinebow, 6 | } 7 | 8 | export type CyclicalColorInterpolatorId = keyof typeof cyclicalColorInterpolators 9 | -------------------------------------------------------------------------------- /packages/colors/src/schemes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './all' 2 | export * from './categorical' 3 | export * from './cyclical' 4 | export * from './diverging' 5 | export * from './interpolators' 6 | export * from './sequential' 7 | -------------------------------------------------------------------------------- /packages/colors/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/core/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/core` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/core?style=for-the-badge)](https://www.npmjs.com/package/@nivo/core) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/core?style=for-the-badge)](https://www.npmjs.com/package/@nivo/core) 7 | -------------------------------------------------------------------------------- /packages/core/src/components/ConditionalWrapper.js: -------------------------------------------------------------------------------- 1 | import { cloneElement } from 'react' 2 | 3 | // type ConditionalWrapperProps = { 4 | // children: ReactNode 5 | // condition: boolean 6 | // wrapper: ReactElement 7 | // } 8 | 9 | export const ConditionalWrapper = ({ children, condition, wrapper }) => { 10 | if (!condition) return children 11 | 12 | return cloneElement(wrapper, {}, children) 13 | } 14 | -------------------------------------------------------------------------------- /packages/core/src/components/cartesian/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | export * from './markers' 10 | -------------------------------------------------------------------------------- /packages/core/src/components/cartesian/markers/CartesianMarkers.js: -------------------------------------------------------------------------------- 1 | import { memo } from 'react' 2 | import CartesianMarkersItem from './CartesianMarkersItem' 3 | 4 | const CartesianMarkers = ({ markers, width, height, xScale, yScale }) => { 5 | if (!markers || markers.length === 0) return null 6 | 7 | return markers.map((marker, i) => ( 8 | 15 | )) 16 | } 17 | 18 | export default memo(CartesianMarkers) 19 | -------------------------------------------------------------------------------- /packages/core/src/components/cartesian/markers/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | export { default as CartesianMarkers } from './CartesianMarkers' 10 | export { default as CartesianMarkersItem } from './CartesianMarkersItem' 11 | -------------------------------------------------------------------------------- /packages/core/src/components/defs/gradients/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | import { LinearGradient } from './LinearGradient' 10 | 11 | export const gradientTypes = { 12 | linearGradient: LinearGradient, 13 | } 14 | 15 | export * from './LinearGradient' 16 | -------------------------------------------------------------------------------- /packages/core/src/components/defs/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | export * from './gradients' 10 | export * from './patterns' 11 | export { default as Defs } from './Defs' 12 | -------------------------------------------------------------------------------- /packages/core/src/components/dots/DotsItemSymbol.js: -------------------------------------------------------------------------------- 1 | import { memo } from 'react' 2 | 3 | const DotsItemSymbol = ({ size, color, borderWidth, borderColor }) => ( 4 | 11 | ) 12 | 13 | export default memo(DotsItemSymbol) 14 | -------------------------------------------------------------------------------- /packages/core/src/components/dots/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | export { default as DotsItem } from './DotsItem' 10 | export * from './DotsItem' 11 | -------------------------------------------------------------------------------- /packages/core/src/constants.js: -------------------------------------------------------------------------------- 1 | export const BOX_ANCHORS = [ 2 | 'center', 3 | 'top-left', 4 | 'top', 5 | 'top-right', 6 | 'right', 7 | 'bottom-right', 8 | 'bottom', 9 | 'bottom-left', 10 | 'left', 11 | ] 12 | -------------------------------------------------------------------------------- /packages/core/src/defaults/index.js: -------------------------------------------------------------------------------- 1 | import { scaleOrdinal } from 'd3-scale' 2 | import { schemeSet3 } from 'd3-scale-chromatic' 3 | import { nivoCategoricalColors } from '../lib/colors' 4 | 5 | // motion 6 | export const defaultAnimate = true 7 | 8 | // colors 9 | export const defaultCategoricalColors = nivoCategoricalColors 10 | export const defaultColorRange = scaleOrdinal(schemeSet3) 11 | 12 | // margin 13 | export const defaultMargin = { 14 | top: 0, 15 | right: 0, 16 | bottom: 0, 17 | left: 0, 18 | } 19 | -------------------------------------------------------------------------------- /packages/core/src/hocs/index.js: -------------------------------------------------------------------------------- 1 | export * from './withContainer' 2 | -------------------------------------------------------------------------------- /packages/core/src/hooks/index.js: -------------------------------------------------------------------------------- 1 | export * from './useAnimatedPath' 2 | export * from './useChartContext' 3 | export * from './useCurveInterpolation' 4 | export * from './useDimensions' 5 | export * from './useMeasure' 6 | export * from './useValueFormatter' 7 | -------------------------------------------------------------------------------- /packages/core/src/hooks/useChartContext.js: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react' 2 | 3 | export const ChartContext = createContext(undefined) 4 | -------------------------------------------------------------------------------- /packages/core/src/hooks/useCurveInterpolation.js: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react' 2 | import { curveFromProp } from '../props' 3 | 4 | /** 5 | * Transform d3 curve interpolation identifier 6 | * to its corresponding interpolator. 7 | */ 8 | export const useCurveInterpolation = interpolation => 9 | useMemo(() => curveFromProp(interpolation), [interpolation]) 10 | -------------------------------------------------------------------------------- /packages/core/src/hooks/useDimensions.js: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react' 2 | import { defaultMargin } from '../defaults' 3 | 4 | export const useDimensions = (width, height, partialMargin = {}) => 5 | useMemo(() => { 6 | const margin = { 7 | ...defaultMargin, 8 | ...partialMargin, 9 | } 10 | 11 | return { 12 | margin, 13 | innerWidth: width - margin.left - margin.right, 14 | innerHeight: height - margin.top - margin.bottom, 15 | outerWidth: width, 16 | outerHeight: height, 17 | } 18 | }, [width, height, partialMargin]) 19 | -------------------------------------------------------------------------------- /packages/core/src/lib/cartesian/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | export * from './utils' 10 | -------------------------------------------------------------------------------- /packages/core/src/lib/mergeRefs.js: -------------------------------------------------------------------------------- 1 | export function mergeRefs(...refs) { 2 | return value => { 3 | for (const ref of refs) { 4 | if (typeof ref === 'function') { 5 | ref(value) 6 | } else if (ref != null) { 7 | ref.current = value 8 | } 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /packages/core/src/lib/noop.js: -------------------------------------------------------------------------------- 1 | // eslint-disable-next-line @typescript-eslint/no-empty-function 2 | export default () => {} 3 | -------------------------------------------------------------------------------- /packages/core/src/lib/polar/index.js: -------------------------------------------------------------------------------- 1 | export * from './utils' 2 | export * from './labels' 3 | -------------------------------------------------------------------------------- /packages/core/src/motion/hooks.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | import { useContext } from 'react' 10 | import { motionConfigContext } from './context' 11 | 12 | export const useMotionConfig = () => useContext(motionConfigContext) 13 | -------------------------------------------------------------------------------- /packages/core/src/motion/index.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | export * from './context' 10 | export * from './hooks' 11 | -------------------------------------------------------------------------------- /packages/core/src/props/index.js: -------------------------------------------------------------------------------- 1 | export const blendModes = [ 2 | 'normal', 3 | 'multiply', 4 | 'screen', 5 | 'overlay', 6 | 'darken', 7 | 'lighten', 8 | 'color-dodge', 9 | 'color-burn', 10 | 'hard-light', 11 | 'soft-light', 12 | 'difference', 13 | 'exclusion', 14 | 'hue', 15 | 'saturation', 16 | 'color', 17 | 'luminosity', 18 | ] 19 | 20 | export * from './curve' 21 | export * from './stack' 22 | -------------------------------------------------------------------------------- /packages/express/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/express` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/express?style=for-the-badge)](https://www.npmjs.com/package/@nivo/express) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/express?style=for-the-badge)](https://www.npmjs.com/package/@nivo/express) 7 | -------------------------------------------------------------------------------- /packages/express/src/memory-storage.ts: -------------------------------------------------------------------------------- 1 | import { ChartProps, ChartType } from '@nivo/static' 2 | 3 | export interface StorageEntry { 4 | type: T 5 | props: ChartProps 6 | url: string 7 | } 8 | 9 | const store: Record> = {} 10 | 11 | export const set = (key: string, value: StorageEntry) => { 12 | store[key] = value 13 | } 14 | 15 | export const get = (key: string): StorageEntry | undefined => { 16 | return store[key] 17 | } 18 | 19 | export const dump = () => store 20 | -------------------------------------------------------------------------------- /packages/express/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/funnel/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/funnel` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/funnel?style=for-the-badge)](https://www.npmjs.com/package/@nivo/funnel) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/funnel?style=for-the-badge)](https://www.npmjs.com/package/@nivo/funnel) 7 | 8 | ## Funnel 9 | 10 | [documentation](http://nivo.rocks/funnel/) 11 | 12 | ![Funnel](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/funnel.png) 13 | -------------------------------------------------------------------------------- /packages/funnel/src/PartLabels.tsx: -------------------------------------------------------------------------------- 1 | import { PartLabel } from './PartLabel' 2 | import { FunnelDatum, FunnelPart } from './types' 3 | 4 | interface PartLabelsProps { 5 | parts: FunnelPart[] 6 | } 7 | 8 | export const PartLabels = ({ parts }: PartLabelsProps) => ( 9 | <> 10 | {parts.map(part => ( 11 | 12 | ))} 13 | 14 | ) 15 | -------------------------------------------------------------------------------- /packages/funnel/src/PartTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { FunnelDatum, FunnelPartWithHandlers } from './types' 3 | 4 | export interface PartTooltipProps { 5 | part: FunnelPartWithHandlers 6 | } 7 | 8 | export const PartTooltip = ({ part }: PartTooltipProps) => ( 9 | 15 | ) 16 | -------------------------------------------------------------------------------- /packages/funnel/src/Separators.tsx: -------------------------------------------------------------------------------- 1 | import { Separator } from './Separator' 2 | import { SeparatorProps as SeparatorType } from './types' 3 | 4 | interface SeparatorsProps { 5 | beforeSeparators: SeparatorType[] 6 | afterSeparators: SeparatorType[] 7 | } 8 | 9 | export const Separators = ({ beforeSeparators, afterSeparators }: SeparatorsProps) => ( 10 | <> 11 | {beforeSeparators.map(separator => ( 12 | 13 | ))} 14 | {afterSeparators.map(separator => ( 15 | 16 | ))} 17 | 18 | ) 19 | -------------------------------------------------------------------------------- /packages/funnel/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Funnel' 2 | export * from './ResponsiveFunnel' 3 | export * from './hooks' 4 | export * from './props' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/funnel/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/generators/.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea 3 | *.log* 4 | node_modules 5 | /lib 6 | /es 7 | /coverage -------------------------------------------------------------------------------- /packages/generators/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/generators` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/generators?style=for-the-badge)](https://www.npmjs.com/package/@nivo/generators) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/generators?style=for-the-badge)](https://www.npmjs.com/package/@nivo/generators) 7 | -------------------------------------------------------------------------------- /packages/generators/src/color.ts: -------------------------------------------------------------------------------- 1 | export const randColor = () => `hsl(${Math.round(Math.random() * 360)}, 70%, 50%)` 2 | -------------------------------------------------------------------------------- /packages/generators/src/sets/index.ts: -------------------------------------------------------------------------------- 1 | export * from './averageHeightByAge' 2 | export * from './countryCodes' 3 | export * from './names' 4 | export * from './programmingLanguages' 5 | export * from './time' 6 | -------------------------------------------------------------------------------- /packages/generators/src/sets/programmingLanguages.ts: -------------------------------------------------------------------------------- 1 | export const programmingLanguages = [ 2 | 'php', 3 | 'make', 4 | 'javascript', 5 | 'go', 6 | 'erlang', 7 | 'elixir', 8 | 'lisp', 9 | 'haskell', 10 | 'python', 11 | 'ruby', 12 | 'hack', 13 | 'scala', 14 | 'java', 15 | 'rust', 16 | 'c', 17 | 'css', 18 | 'sass', 19 | 'stylus', 20 | ] 21 | -------------------------------------------------------------------------------- /packages/generators/src/waffle.ts: -------------------------------------------------------------------------------- 1 | export interface WaffleDatumSpec { 2 | id: string 3 | label?: string 4 | } 5 | 6 | export const generateWaffleData = ({ 7 | groups, 8 | total, 9 | }: { 10 | groups: D[] 11 | total: number 12 | }): (D & { 13 | label: string 14 | value: number 15 | })[] => { 16 | const slice = total / groups.length 17 | 18 | return groups.map(group => { 19 | return { 20 | ...group, 21 | label: group.label !== undefined ? group.label : group.id, 22 | value: Math.random() * slice, 23 | } 24 | }) 25 | } 26 | -------------------------------------------------------------------------------- /packages/generators/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/geo/src/ChoroplethTooltip.js: -------------------------------------------------------------------------------- 1 | import { memo } from 'react' 2 | import { BasicTooltip } from '@nivo/tooltip' 3 | 4 | const ChoroplethTooltip = memo(({ feature }) => { 5 | if (feature.data === undefined) return null 6 | 7 | return ( 8 | 14 | ) 15 | }) 16 | 17 | export default ChoroplethTooltip 18 | -------------------------------------------------------------------------------- /packages/geo/src/GeoGraticule.js: -------------------------------------------------------------------------------- 1 | import { memo } from 'react' 2 | 3 | /** 4 | * GeoGraticule.propTypes = { 5 | * path: PropTypes.func.isRequired, 6 | * graticule: PropTypes.func.isRequired, 7 | * lineWidth: PropTypes.number.isRequired, 8 | * lineColor: PropTypes.string.isRequired, 9 | * } 10 | */ 11 | const GeoGraticule = memo(({ path, graticule, lineWidth, lineColor }) => { 12 | return 13 | }) 14 | 15 | export default GeoGraticule 16 | -------------------------------------------------------------------------------- /packages/geo/src/ResponsiveChoropleth.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | import { ResponsiveWrapper } from '@nivo/core' 10 | import Choropleth from './Choropleth' 11 | 12 | const ResponsiveChoropleth = props => ( 13 | 14 | {({ width, height }) => } 15 | 16 | ) 17 | 18 | export default ResponsiveChoropleth 19 | -------------------------------------------------------------------------------- /packages/geo/src/ResponsiveChoroplethCanvas.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | import { ResponsiveWrapper } from '@nivo/core' 10 | import ChoroplethCanvas from './ChoroplethCanvas' 11 | 12 | const ResponsiveChoroplethCanvas = props => ( 13 | 14 | {({ width, height }) => } 15 | 16 | ) 17 | 18 | export default ResponsiveChoroplethCanvas 19 | -------------------------------------------------------------------------------- /packages/geo/src/ResponsiveGeoMap.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | import { ResponsiveWrapper } from '@nivo/core' 10 | import GeoMap from './GeoMap' 11 | 12 | const ResponsiveGeoMap = props => ( 13 | 14 | {({ width, height }) => } 15 | 16 | ) 17 | 18 | export default ResponsiveGeoMap 19 | -------------------------------------------------------------------------------- /packages/geo/src/ResponsiveGeoMapCanvas.js: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of the nivo project. 3 | * 4 | * Copyright 2016-present, Raphaël Benitte. 5 | * 6 | * For the full copyright and license information, please view the LICENSE 7 | * file that was distributed with this source code. 8 | */ 9 | import { ResponsiveWrapper } from '@nivo/core' 10 | import GeoMapCanvas from './GeoMapCanvas' 11 | 12 | const ResponsiveGeoMapCanvas = props => ( 13 | 14 | {({ width, height }) => } 15 | 16 | ) 17 | 18 | export default ResponsiveGeoMapCanvas 19 | -------------------------------------------------------------------------------- /packages/grid/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/grid` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/grid?style=for-the-badge)](https://www.npmjs.com/package/@nivo/grid) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/grid?style=for-the-badge)](https://www.npmjs.com/package/@nivo/grid) 7 | -------------------------------------------------------------------------------- /packages/grid/src/boundingBoxes.ts: -------------------------------------------------------------------------------- 1 | import { BoundingBox } from './types' 2 | 3 | /** 4 | * Check if the provided bounding boxes touch/overlap. 5 | * We assume that the boxes are rectangular and axis-aligned. 6 | */ 7 | export const areBoundingBoxTouching = (boxA: BoundingBox, boxB: BoundingBox) => { 8 | const touchX = boxA.left <= boxB.right && boxB.left <= boxA.right 9 | const touchY = boxA.top <= boxB.bottom && boxB.top <= boxA.bottom 10 | 11 | return touchX && touchY 12 | } 13 | -------------------------------------------------------------------------------- /packages/grid/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './boundingBoxes' 2 | export * from './grid' 3 | export * from './polygon' 4 | export * from './types' 5 | -------------------------------------------------------------------------------- /packages/grid/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/heatmap/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './HeatMap' 2 | export * from './ResponsiveHeatMap' 3 | export * from './HeatMapCanvas' 4 | export * from './ResponsiveHeatMapCanvas' 5 | export * from './hooks' 6 | export * from './defaults' 7 | export * from './types' 8 | export * from './compute' 9 | -------------------------------------------------------------------------------- /packages/heatmap/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/icicle/src/IcicleTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { IcicleNode } from './types' 3 | 4 | export const IcicleTooltip = ({ id, formattedValue, color }: IcicleNode) => ( 5 | 6 | ) 7 | -------------------------------------------------------------------------------- /packages/icicle/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './defaults' 2 | export * from './hooks' 3 | export * from './Icicle' 4 | export * from './IcicleHtml' 5 | export * from './IcicleNodes' 6 | export * from './IcicleTooltip' 7 | export * from './ResponsiveIcicle' 8 | export * from './ResponsiveIcicleHtml' 9 | export * from './types' 10 | -------------------------------------------------------------------------------- /packages/icicle/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "outDir": "./dist/types", 5 | "rootDir": "./src" 6 | }, 7 | "include": ["src/**/*"] 8 | } 9 | -------------------------------------------------------------------------------- /packages/jest.config.js: -------------------------------------------------------------------------------- 1 | const path = require('path') 2 | 3 | const config = { 4 | verbose: true, 5 | testEnvironment: 'jest-environment-jsdom', 6 | reporters: [['default', { summaryThreshold: 3 }]], 7 | setupFiles: [path.resolve(path.join(__dirname, 'jest.setup.js'))], 8 | transformIgnorePatterns: [ 9 | "/node_modules/(?!d3)/" 10 | ], 11 | } 12 | 13 | module.exports = config 14 | -------------------------------------------------------------------------------- /packages/jest.setup.js: -------------------------------------------------------------------------------- 1 | const { TextEncoder, TextDecoder } = require('util') 2 | 3 | Object.assign(global, { TextDecoder, TextEncoder }) 4 | 5 | global.ResizeObserver = require('resize-observer-polyfill') 6 | 7 | const { configure } = require('enzyme') 8 | const Adapter = require('@wojtekmaj/enzyme-adapter-react-17') 9 | 10 | configure({ adapter: new Adapter() }) 11 | -------------------------------------------------------------------------------- /packages/legends/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/legends` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/legends?style=for-the-badge)](https://www.npmjs.com/package/@nivo/legends) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/legends?style=for-the-badge)](https://www.npmjs.com/package/@nivo/legends) 7 | -------------------------------------------------------------------------------- /packages/legends/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './svg' 2 | export * from './canvas' 3 | export * from './defaults' 4 | export * from './hooks' 5 | export * from './types' 6 | export * from './compute' 7 | export * from './defaults' 8 | -------------------------------------------------------------------------------- /packages/legends/src/svg/index.ts: -------------------------------------------------------------------------------- 1 | export * from './symbols' 2 | export * from './AnchoredContinuousColorsLegendSvg' 3 | export * from './BoxLegendSvg' 4 | export * from './ContinuousColorsLegendSvg' 5 | export * from './LegendSvg' 6 | export * from './LegendSvgItem' 7 | -------------------------------------------------------------------------------- /packages/legends/src/svg/symbols/index.ts: -------------------------------------------------------------------------------- 1 | export * from './SymbolCircle' 2 | export * from './SymbolDiamond' 3 | export * from './SymbolSquare' 4 | export * from './SymbolTriangle' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/legends/src/svg/symbols/types.ts: -------------------------------------------------------------------------------- 1 | export type SymbolProps = { 2 | id: string | number 3 | x: number 4 | y: number 5 | size: number 6 | fill: string 7 | opacity?: number 8 | borderWidth?: number 9 | borderColor?: string 10 | } 11 | -------------------------------------------------------------------------------- /packages/legends/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/line/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Line' 2 | export * from './ResponsiveLine' 3 | export * from './LineCanvas' 4 | export * from './ResponsiveLineCanvas' 5 | export * from './types' 6 | export * from './defaults' 7 | export * from './hooks' 8 | -------------------------------------------------------------------------------- /packages/line/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/marimekko/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/marimekko` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/marimekko?style=for-the-badge)](https://www.npmjs.com/package/@nivo/marimekko) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/marimekko?style=for-the-badge)](https://www.npmjs.com/package/@nivo/marimekko) 7 | 8 | ## Marimekko 9 | 10 | [documentation](http://nivo.rocks/marimekko/) 11 | 12 | ![Marimekko](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/marimekko.png) 13 | -------------------------------------------------------------------------------- /packages/marimekko/src/BarTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { BarDatum } from './types' 3 | 4 | export const BarTooltip = ({ bar }: { bar: BarDatum }) => ( 5 | 11 | ) 12 | -------------------------------------------------------------------------------- /packages/marimekko/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Marimekko' 2 | export * from './ResponsiveMarimekko' 3 | export * from './types' 4 | export * from './defaults' 5 | -------------------------------------------------------------------------------- /packages/marimekko/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/network/src/NetworkNodeTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { InputNode, NodeTooltipProps } from './types' 3 | 4 | export const NetworkNodeTooltip = ({ node }: NodeTooltipProps) => ( 5 | 6 | ) 7 | -------------------------------------------------------------------------------- /packages/network/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Network' 2 | export * from './ResponsiveNetwork' 3 | export * from './NetworkCanvas' 4 | export * from './ResponsiveNetworkCanvas' 5 | export * from './defaults' 6 | export * from './hooks' 7 | export * from './types' 8 | -------------------------------------------------------------------------------- /packages/network/src/renderCanvasLink.ts: -------------------------------------------------------------------------------- 1 | import { InputNode, ComputedLink, InputLink } from './types' 2 | 3 | export const renderCanvasLink = ( 4 | ctx: CanvasRenderingContext2D, 5 | link: ComputedLink 6 | ) => { 7 | ctx.strokeStyle = link.color 8 | ctx.lineWidth = link.thickness 9 | 10 | ctx.beginPath() 11 | ctx.moveTo(link.source.x, link.source.y) 12 | ctx.lineTo(link.target.x, link.target.y) 13 | ctx.stroke() 14 | } 15 | -------------------------------------------------------------------------------- /packages/network/src/renderCanvasNode.ts: -------------------------------------------------------------------------------- 1 | import { ComputedNode, InputNode } from './types' 2 | 3 | export const renderCanvasNode = ( 4 | ctx: CanvasRenderingContext2D, 5 | node: ComputedNode 6 | ) => { 7 | ctx.fillStyle = node.color 8 | ctx.beginPath() 9 | ctx.arc(node.x, node.y, node.size / 2, 0, 2 * Math.PI) 10 | ctx.fill() 11 | 12 | if (node.borderWidth > 0) { 13 | ctx.strokeStyle = node.borderColor 14 | ctx.lineWidth = node.borderWidth 15 | ctx.stroke() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /packages/network/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/parallel-coordinates/src/canvas/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ParallelCoordinatesCanvas' 2 | export * from './ResponsiveParallelCoordinatesCanvas' 3 | -------------------------------------------------------------------------------- /packages/parallel-coordinates/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './defaults' 2 | export * from './svg' 3 | export * from './canvas' 4 | export * from './types' 5 | -------------------------------------------------------------------------------- /packages/parallel-coordinates/src/svg/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ParallelCoordinates' 2 | export * from './ResponsiveParallelCoordinates' 3 | -------------------------------------------------------------------------------- /packages/parallel-coordinates/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/pie/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/pie` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/pie?style=for-the-badge)](https://www.npmjs.com/package/@nivo/pie) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/pie?style=for-the-badge)](https://www.npmjs.com/package/@nivo/pie) 7 | 8 | ## Pie 9 | 10 | [documentation](http://nivo.rocks/pie/) 11 | 12 | ![Pie](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/pie.png) 13 | -------------------------------------------------------------------------------- /packages/pie/src/PieTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { ComputedDatum } from './types' 3 | 4 | export const PieTooltip = ({ datum }: { datum: ComputedDatum }) => ( 5 | 11 | ) 12 | 13 | export default PieTooltip 14 | -------------------------------------------------------------------------------- /packages/pie/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Pie' 2 | export * from './ResponsivePie' 3 | export * from './PieCanvas' 4 | export * from './ResponsivePieCanvas' 5 | export * from './props' 6 | export * from './hooks' 7 | export * from './types' 8 | -------------------------------------------------------------------------------- /packages/pie/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/polar-axes/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/polar-axes` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/polar-axes?style=for-the-badge)](https://www.npmjs.com/package/@nivo/polar-axes) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/polar-axes?style=for-the-badge)](https://www.npmjs.com/package/@nivo/polar-axes) 7 | -------------------------------------------------------------------------------- /packages/polar-axes/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './CircularAxis' 2 | export * from './PolarGrid' 3 | export * from './RadialAxis' 4 | export * from './types' 5 | -------------------------------------------------------------------------------- /packages/polar-axes/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/polar-bar/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/polar-bar` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/polar-bar?style=for-the-badge)](https://www.npmjs.com/package/@nivo/polar-bar) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/polar-bar?style=for-the-badge)](https://www.npmjs.com/package/@nivo/polar-bar) 7 | 8 | ## PolarBar 9 | 10 | [documentation](http://nivo.rocks/polar-bar/) 11 | 12 | ![PolarBar](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/polar-bar.png) 13 | -------------------------------------------------------------------------------- /packages/polar-bar/src/PolarBarTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { PolarBarTooltipProps } from './types' 3 | 4 | export const PolarBarTooltip = ({ arc }: PolarBarTooltipProps) => { 5 | return ( 6 | 10 | {arc.index} - {arc.key} 11 | 12 | } 13 | value={arc.formattedValue} 14 | color={arc.color} 15 | /> 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /packages/polar-bar/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './PolarBar' 2 | export * from './ResponsivePolarBar' 3 | export * from './defaults' 4 | export * from './types' 5 | -------------------------------------------------------------------------------- /packages/polar-bar/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/radar/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/radar` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/radar?style=for-the-badge)](https://www.npmjs.com/package/@nivo/radar) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/radar?style=for-the-badge)](https://www.npmjs.com/package/@nivo/radar) 7 | 8 | ## Radar 9 | 10 | [documentation](http://nivo.rocks/radar/) 11 | 12 | ![Radar](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/radar.png) 13 | -------------------------------------------------------------------------------- /packages/radar/src/RadarGridLabel.tsx: -------------------------------------------------------------------------------- 1 | import { animated } from '@react-spring/web' 2 | import { useTheme } from '@nivo/theming' 3 | import { Text } from '@nivo/text' 4 | import { GridLabelProps } from './types' 5 | 6 | export const RadarGridLabel = ({ id, anchor, animated: animatedProps }: GridLabelProps) => { 7 | const theme = useTheme() 8 | 9 | return ( 10 | 11 | 12 | {id} 13 | 14 | 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /packages/radar/src/RadarSliceTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react' 2 | import { TableTooltip, Chip } from '@nivo/tooltip' 3 | import { RadarSliceTooltipProps } from './types' 4 | 5 | export const RadarSliceTooltip = ({ index, data }: RadarSliceTooltipProps) => { 6 | const rows = useMemo( 7 | () => 8 | data.map(datum => [ 9 | , 10 | datum.id, 11 | datum.formattedValue, 12 | ]), 13 | [data] 14 | ) 15 | 16 | return {index}} rows={rows} /> 17 | } 18 | -------------------------------------------------------------------------------- /packages/radar/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Radar' 2 | export * from './ResponsiveRadar' 3 | export * from './RadarDots' 4 | export * from './defaults' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/radar/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/radial-bar/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/radial-bar` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/radial-bar?style=for-the-badge)](https://www.npmjs.com/package/@nivo/radial-bar) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/radial-bar?style=for-the-badge)](https://www.npmjs.com/package/@nivo/radial-bar) 7 | 8 | ## RadialBar 9 | 10 | [documentation](http://nivo.rocks/radial-bar/) 11 | 12 | ![RadialBar](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/radial-bar.png) 13 | -------------------------------------------------------------------------------- /packages/radial-bar/src/RadialBarTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { RadialBarDatum, RadialBarTooltipProps } from './types' 3 | 4 | export const RadialBarTooltip = ({ bar }: RadialBarTooltipProps) => { 5 | return ( 6 | 10 | {bar.category} - {bar.groupId} 11 | 12 | } 13 | value={bar.formattedValue} 14 | color={bar.color} 15 | /> 16 | ) 17 | } 18 | -------------------------------------------------------------------------------- /packages/radial-bar/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './props' 2 | export * from './RadialBar' 3 | export * from './ResponsiveRadialBar' 4 | export * from './types' 5 | -------------------------------------------------------------------------------- /packages/radial-bar/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/rects/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/rects` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/rects?style=for-the-badge)](https://www.npmjs.com/package/@nivo/rects) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/rects?style=for-the-badge)](https://www.npmjs.com/package/@nivo/rects) 7 | 8 | This package is used internally by nivo packages dealing with rects 9 | such as `@nivo/icicle`. 10 | -------------------------------------------------------------------------------- /packages/rects/src/constants.ts: -------------------------------------------------------------------------------- 1 | import { RectTransitionMode } from './types' 2 | 3 | export const RECT_TRANSITION_MODES: readonly RectTransitionMode[] = [ 4 | 'reveal-up', 5 | 'reveal-right', 6 | 'reveal-down', 7 | 'reveal-left', 8 | 'center', 9 | 'flow-up', 10 | 'flow-right', 11 | 'flow-down', 12 | 'flow-left', 13 | ] 14 | -------------------------------------------------------------------------------- /packages/rects/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './constants' 2 | export * from './hooks' 3 | export * from './RectNodeHtml' 4 | export * from './RectNodeSvg' 5 | export * from './RectNodes' 6 | export * from './RoundedRect' 7 | export * from './types' 8 | export * from './useRectsTransition' 9 | export * from './useRectAnchorsTransition' 10 | export * from './labels' 11 | -------------------------------------------------------------------------------- /packages/rects/src/labels/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compute' 2 | export * from './RectLabelHtml' 3 | export * from './RectLabels' 4 | export * from './RectLabelSvg' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/rects/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "outDir": "./dist/types", 5 | "rootDir": "./src" 6 | }, 7 | "include": ["src/**/*"] 8 | } -------------------------------------------------------------------------------- /packages/sankey/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/sankey` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/sankey?style=for-the-badge)](https://www.npmjs.com/package/@nivo/sankey) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/sankey?style=for-the-badge)](https://www.npmjs.com/package/@nivo/sankey) 7 | 8 | ## Sankey 9 | 10 | [documentation](http://nivo.rocks/sankey/) 11 | 12 | ![Sankey](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/sankey.png) 13 | -------------------------------------------------------------------------------- /packages/sankey/src/SankeyNodeTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { DefaultLink, DefaultNode, SankeyNodeDatum } from './types' 3 | 4 | export interface SankeyNodeTooltipProps { 5 | node: SankeyNodeDatum 6 | } 7 | 8 | export const SankeyNodeTooltip = ({ 9 | node, 10 | }: SankeyNodeTooltipProps) => ( 11 | 12 | ) 13 | -------------------------------------------------------------------------------- /packages/sankey/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Sankey' 2 | export * from './ResponsiveSankey' 3 | export * from './props' 4 | export * from './types' 5 | -------------------------------------------------------------------------------- /packages/sankey/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/scales/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/scales` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/scales?style=for-the-badge)](https://www.npmjs.com/package/@nivo/scales) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/scales?style=for-the-badge)](https://www.npmjs.com/package/@nivo/scales) 7 | -------------------------------------------------------------------------------- /packages/scales/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './compute' 2 | export * from './linearScale' 3 | export * from './logScale' 4 | export * from './symlogScale' 5 | export * from './pointScale' 6 | export * from './timeScale' 7 | export * from './timeHelpers' 8 | export * from './bandScale' 9 | export * from './ticks' 10 | export * from './types' 11 | -------------------------------------------------------------------------------- /packages/scales/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/scatterplot/src/Tooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { ScatterPlotTooltipProps, ScatterPlotDatum } from './types' 3 | 4 | export const Tooltip = ({ 5 | node, 6 | }: ScatterPlotTooltipProps) => ( 7 | 13 | ) 14 | -------------------------------------------------------------------------------- /packages/scatterplot/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ScatterPlot' 2 | export * from './ResponsiveScatterPlot' 3 | export * from './ScatterPlotCanvas' 4 | export * from './ResponsiveScatterPlotCanvas' 5 | export * from './props' 6 | export * from './hooks' 7 | export * from './types' 8 | -------------------------------------------------------------------------------- /packages/scatterplot/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/static/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/static` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/static?style=for-the-badge)](https://www.npmjs.com/package/@nivo/static) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/static?style=for-the-badge)](https://www.npmjs.com/package/@nivo/static) 7 | -------------------------------------------------------------------------------- /packages/static/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './mappings' 2 | export { renderChart } from './renderer' 3 | export { samples } from './samples' 4 | -------------------------------------------------------------------------------- /packages/static/src/mappings/commons/curves.ts: -------------------------------------------------------------------------------- 1 | import Joi from 'joi' 2 | 3 | export const closedCurve = Joi.valid( 4 | 'basisClosed', 5 | 'cardinalClosed', 6 | 'catmullRomClosed', 7 | 'linearClosed' 8 | ) 9 | -------------------------------------------------------------------------------- /packages/static/src/mappings/commons/dimensions.ts: -------------------------------------------------------------------------------- 1 | import Joi from 'joi' 2 | 3 | export const dimensions = { 4 | width: Joi.number().integer().required(), 5 | height: Joi.number().integer().required(), 6 | margin: Joi.object().keys({ 7 | top: Joi.number().integer(), 8 | right: Joi.number().integer(), 9 | bottom: Joi.number().integer(), 10 | left: Joi.number().integer(), 11 | }), 12 | } 13 | -------------------------------------------------------------------------------- /packages/static/src/types.ts: -------------------------------------------------------------------------------- 1 | export type OmitStrict = T extends any ? Pick> : never 2 | -------------------------------------------------------------------------------- /packages/static/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/stream/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/stream` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/stream?style=for-the-badge)](https://www.npmjs.com/package/@nivo/stream) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/stream?style=for-the-badge)](https://www.npmjs.com/package/@nivo/stream) 7 | 8 | ## Stream 9 | 10 | [documentation](http://nivo.rocks/stream/) 11 | 12 | ![Stream](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/stream.png) 13 | -------------------------------------------------------------------------------- /packages/stream/src/LayerTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { TooltipProps } from './types' 3 | 4 | export const LayerTooltip = ({ layer }: TooltipProps) => ( 5 | 6 | ) 7 | -------------------------------------------------------------------------------- /packages/stream/src/StackTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react' 2 | import { TableTooltip, Chip } from '@nivo/tooltip' 3 | import { StackTooltipProps } from './types' 4 | 5 | export const StackTooltip = ({ slice }: StackTooltipProps) => { 6 | const rows = useMemo( 7 | () => 8 | slice.stack.map(p => [ 9 | , 10 | p.layerLabel, 11 | p.formattedValue, 12 | ]), 13 | [slice] 14 | ) 15 | 16 | return 17 | } 18 | -------------------------------------------------------------------------------- /packages/stream/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Stream' 2 | export * from './ResponsiveStream' 3 | export * from './props' 4 | export * from './types' 5 | -------------------------------------------------------------------------------- /packages/stream/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/sunburst/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/sunburst` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/sunburst?style=for-the-badge)](https://www.npmjs.com/package/@nivo/sunburst) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/sunburst?style=for-the-badge)](https://www.npmjs.com/package/@nivo/sunburst) 7 | 8 | ## Sunburst 9 | 10 | [documentation](http://nivo.rocks/sunburst/) 11 | 12 | ![Sunburst](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/sunburst.png) 13 | -------------------------------------------------------------------------------- /packages/sunburst/src/SunburstTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { ComputedDatum } from './types' 3 | 4 | export const SunburstTooltip = ({ 5 | id, 6 | formattedValue, 7 | color, 8 | }: ComputedDatum) => ( 9 | 10 | ) 11 | -------------------------------------------------------------------------------- /packages/sunburst/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Sunburst' 2 | export * from './ResponsiveSunburst' 3 | export * from './hooks' 4 | export * from './props' 5 | export * from './types' 6 | -------------------------------------------------------------------------------- /packages/sunburst/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/swarmplot/doc/swarmplot-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/packages/swarmplot/doc/swarmplot-canvas.png -------------------------------------------------------------------------------- /packages/swarmplot/doc/swarmplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/packages/swarmplot/doc/swarmplot.png -------------------------------------------------------------------------------- /packages/swarmplot/src/SwarmPlotTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { ComputedDatum } from './types' 3 | 4 | export const SwarmPlotTooltip = ({ 5 | id, 6 | formattedValue, 7 | color, 8 | }: ComputedDatum) => ( 9 | 10 | ) 11 | -------------------------------------------------------------------------------- /packages/swarmplot/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './SwarmPlot' 2 | export * from './ResponsiveSwarmPlot' 3 | export * from './SwarmPlotCanvas' 4 | export * from './ResponsiveSwarmPlotCanvas' 5 | export * from './SwarmPlotTooltip' 6 | export * from './compute' 7 | export * from './hooks' 8 | export * from './props' 9 | export * from './types' 10 | -------------------------------------------------------------------------------- /packages/swarmplot/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/text/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/text` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/text?style=for-the-badge)](https://www.npmjs.com/package/@nivo/text) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/text?style=for-the-badge)](https://www.npmjs.com/package/@nivo/text) 7 | -------------------------------------------------------------------------------- /packages/text/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './boxAnchor' 2 | export * from './canvas' 3 | export * from './Text' 4 | -------------------------------------------------------------------------------- /packages/text/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/theming/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/theming` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/theming?style=for-the-badge)](https://www.npmjs.com/package/@nivo/theming) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/theming?style=for-the-badge)](https://www.npmjs.com/package/@nivo/theming) 7 | -------------------------------------------------------------------------------- /packages/theming/src/hooks.ts: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react' 2 | import { extendDefaultTheme, extendAxisTheme } from './extend' 3 | import { defaultTheme } from './defaults' 4 | import { PartialTheme, Theme } from './types' 5 | 6 | export const usePartialTheme = (partialTheme: PartialTheme) => { 7 | return useMemo(() => extendDefaultTheme(defaultTheme, partialTheme), [partialTheme]) 8 | } 9 | 10 | export const useExtendedAxisTheme = (axisTheme: Theme['axis'], overrides: PartialTheme['axis']) => { 11 | return useMemo(() => extendAxisTheme(axisTheme, overrides), [axisTheme, overrides]) 12 | } 13 | -------------------------------------------------------------------------------- /packages/theming/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './borderRadius' 2 | export * from './bridge' 3 | export * from './context' 4 | export * from './defaults' 5 | export * from './extend' 6 | export * from './hooks' 7 | export * from './types' 8 | -------------------------------------------------------------------------------- /packages/theming/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/tooltip/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/tooltip` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/tooltip?style=for-the-badge)](https://www.npmjs.com/package/@nivo/tooltip) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/tooltip?style=for-the-badge)](https://www.npmjs.com/package/@nivo/tooltip) 7 | -------------------------------------------------------------------------------- /packages/tooltip/src/Chip.tsx: -------------------------------------------------------------------------------- 1 | import { CSSProperties, memo } from 'react' 2 | 3 | interface ChipProps { 4 | size?: number 5 | color: string 6 | style?: CSSProperties 7 | } 8 | 9 | export const Chip = memo(({ size = 12, color, style = {} }) => ( 10 | 11 | )) 12 | -------------------------------------------------------------------------------- /packages/tooltip/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './TooltipWrapper' 2 | export * from './BasicTooltip' 3 | export * from './Chip' 4 | export * from './TableTooltip' 5 | export * from './Crosshair' 6 | export * from './Tooltip' 7 | export * from './TooltipProvider' 8 | export * from './context' 9 | export * from './hooks' 10 | export * from './types' 11 | -------------------------------------------------------------------------------- /packages/tooltip/src/types.ts: -------------------------------------------------------------------------------- 1 | export type TooltipPosition = 'cursor' | 'fixed' 2 | export type TooltipAnchor = 'top' | 'right' | 'bottom' | 'left' | 'center' 3 | 4 | export type CrosshairType = 5 | | 'x' 6 | | 'y' 7 | | 'top-left' 8 | | 'top' 9 | | 'top-right' 10 | | 'right' 11 | | 'bottom-right' 12 | | 'bottom' 13 | | 'bottom-left' 14 | | 'left' 15 | | 'cross' 16 | -------------------------------------------------------------------------------- /packages/tooltip/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/tree/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/tree` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/tree?style=for-the-badge)](https://www.npmjs.com/package/@nivo/tree) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/tree?style=for-the-badge)](https://www.npmjs.com/package/@nivo/tree) 7 | 8 | ## Tree 9 | 10 | [documentation](http://nivo.rocks/tree/) 11 | 12 | ![Tree](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/tree.png) 13 | -------------------------------------------------------------------------------- /packages/tree/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Tree' 2 | export * from './ResponsiveTree' 3 | export * from './TreeCanvas' 4 | export * from './ResponsiveTreeCanvas' 5 | export * from './hooks' 6 | export * from './labelsHooks' 7 | export * from './types' 8 | export * from './defaults' 9 | -------------------------------------------------------------------------------- /packages/tree/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } -------------------------------------------------------------------------------- /packages/treemap/src/TreeMapNodeTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { memo } from 'react' 2 | import { BasicTooltip } from '@nivo/tooltip' 3 | import { TooltipProps } from './types' 4 | 5 | const NonMemoizedTreeMapNodeTooltip = ({ node }: TooltipProps) => ( 6 | 7 | ) 8 | 9 | export const TreeMapNodeTooltip = memo( 10 | NonMemoizedTreeMapNodeTooltip 11 | ) as typeof NonMemoizedTreeMapNodeTooltip 12 | -------------------------------------------------------------------------------- /packages/treemap/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './TreeMap' 2 | export * from './ResponsiveTreeMap' 3 | export * from './TreeMapHtml' 4 | export * from './ResponsiveTreeMapHtml' 5 | export * from './TreeMapCanvas' 6 | export * from './ResponsiveTreeMapCanvas' 7 | export * from './types' 8 | export * from './defaults' 9 | export * from './transitions' 10 | export * from './tiling' 11 | -------------------------------------------------------------------------------- /packages/treemap/src/tiling.ts: -------------------------------------------------------------------------------- 1 | import { 2 | treemapBinary, 3 | treemapDice, 4 | treemapSlice, 5 | treemapSliceDice, 6 | treemapSquarify, 7 | } from 'd3-hierarchy' 8 | 9 | export const tileByType = { 10 | binary: treemapBinary, 11 | dice: treemapDice, 12 | slice: treemapSlice, 13 | sliceDice: treemapSliceDice, 14 | squarify: treemapSquarify, 15 | } as const 16 | 17 | export type TileType = keyof typeof tileByType 18 | -------------------------------------------------------------------------------- /packages/treemap/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/voronoi/README.md: -------------------------------------------------------------------------------- 1 | nivo 2 | 3 | # `@nivo/voronoi` 4 | 5 | [![version](https://img.shields.io/npm/v/@nivo/voronoi?style=for-the-badge)](https://www.npmjs.com/package/@nivo/voronoi) 6 | [![downloads](https://img.shields.io/npm/dm/@nivo/voronoi?style=for-the-badge)](https://www.npmjs.com/package/@nivo/voronoi) 7 | 8 | ## Voronoi 9 | 10 | [documentation](http://nivo.rocks/voronoi) 11 | 12 | ![Voronoi](https://raw.githubusercontent.com/plouc/nivo/master/website/src/assets/captures/voronoi.png) 13 | -------------------------------------------------------------------------------- /packages/voronoi/src/defaults.ts: -------------------------------------------------------------------------------- 1 | import { Margin, defaultMargin as coreDefaultMargin } from '@nivo/core' 2 | import { TooltipAnchor, TooltipPosition } from '@nivo/tooltip' 3 | 4 | export const defaultNodePositionAccessor = (node: { 5 | x: number 6 | y: number 7 | }): [x: number, y: number] => [node.x, node.y] 8 | 9 | export const defaultMargin: Margin = coreDefaultMargin 10 | 11 | export const defaultTooltipPosition: TooltipPosition = 'cursor' 12 | export const defaultTooltipAnchor: TooltipAnchor = 'top' 13 | -------------------------------------------------------------------------------- /packages/voronoi/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Voronoi' 2 | export * from './ResponsiveVoronoi' 3 | export * from './Mesh' 4 | export * from './computeMesh' 5 | export * from './meshCanvas' 6 | export * from './props' 7 | export * from './hooks' 8 | export * from './types' 9 | -------------------------------------------------------------------------------- /packages/voronoi/src/props.ts: -------------------------------------------------------------------------------- 1 | import { VoronoiDomain, VoronoiLayer } from './types' 2 | 3 | export const defaultVoronoiProps = { 4 | xDomain: [0, 1] as VoronoiDomain, 5 | yDomain: [0, 1] as VoronoiDomain, 6 | layers: ['links', 'cells', 'points', 'bounds'] as VoronoiLayer[], 7 | enableLinks: false, 8 | linkLineWidth: 1, 9 | linkLineColor: '#bbbbbb', 10 | enableCells: true, 11 | cellLineWidth: 2, 12 | cellLineColor: '#000000', 13 | enablePoints: true, 14 | pointSize: 4, 15 | pointColor: '#666666', 16 | role: 'img', 17 | } 18 | -------------------------------------------------------------------------------- /packages/voronoi/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /packages/waffle/src/WaffleTooltip.tsx: -------------------------------------------------------------------------------- 1 | import { BasicTooltip } from '@nivo/tooltip' 2 | import { Datum, TooltipProps } from './types' 3 | 4 | export const WaffleTooltip = ({ data }: TooltipProps) => ( 5 | 11 | ) 12 | -------------------------------------------------------------------------------- /packages/waffle/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Waffle' 2 | export * from './ResponsiveWaffle' 3 | export * from './WaffleHtml' 4 | export * from './ResponsiveWaffleHtml' 5 | export * from './WaffleCanvas' 6 | export * from './ResponsiveWaffleCanvas' 7 | export * from './types' 8 | export * from './defaults' 9 | -------------------------------------------------------------------------------- /packages/waffle/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.types.json", 3 | "compilerOptions": { 4 | "baseUrl": ".", 5 | "outDir": "./dist/types", 6 | "rootDir": "./src" 7 | }, 8 | "include": ["src/**/*"] 9 | } 10 | -------------------------------------------------------------------------------- /pnpm-workspace.yaml: -------------------------------------------------------------------------------- 1 | packages: 2 | - 'packages/*' 3 | - 'api/' 4 | - 'website/' 5 | - 'storybook/' 6 | - 'cypress/' -------------------------------------------------------------------------------- /storybook/.storybook/main.js: -------------------------------------------------------------------------------- 1 | /** @type { import('@storybook/react-webpack5').StorybookConfig } */ 2 | const config = { 3 | stories: ['../stories/**/*.mdx', '../stories/**/*.stories.@(js|jsx|ts|tsx)'], 4 | addons: [ 5 | '@storybook/addon-links', 6 | '@storybook/addon-essentials', 7 | '@storybook/addon-interactions', 8 | '@storybook/addon-webpack5-compiler-swc', 9 | ], 10 | framework: { 11 | name: '@storybook/react-webpack5', 12 | options: {}, 13 | }, 14 | docs: {}, 15 | typescript: { 16 | reactDocgen: 'react-docgen-typescript', 17 | }, 18 | } 19 | export default config 20 | -------------------------------------------------------------------------------- /storybook/.storybook/preview.js: -------------------------------------------------------------------------------- 1 | import './global.css' 2 | 3 | /** @type { import('@storybook/react').Preview } */ 4 | const preview = { 5 | parameters: { 6 | controls: { 7 | matchers: { 8 | color: /(background|color)$/i, 9 | date: /Date$/, 10 | }, 11 | }, 12 | }, 13 | } 14 | 15 | export default preview 16 | -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/betulaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/betulaceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/conifers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/conifers.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/cupressaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/cupressaceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/deciduous_broadleaf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/deciduous_broadleaf.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/ericaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/ericaceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/fagaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/fagaceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/flowering_fruiting_trees.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/flowering_fruiting_trees.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/leguminosae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/leguminosae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/moraceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/moraceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/myrtaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/myrtaceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/pinaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/pinaceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/rosaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/rosaceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/sapindaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/sapindaceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/shimpaku.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/shimpaku.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/theaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/theaceae.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/tropicals_subtropicals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/tropicals_subtropicals.png -------------------------------------------------------------------------------- /storybook/stories/assets/imgs/ulmaceae.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/storybook/stories/assets/imgs/ulmaceae.png -------------------------------------------------------------------------------- /storybook/stories/heatmap/data.ts: -------------------------------------------------------------------------------- 1 | import { generateXYSeries } from '@nivo/generators' 2 | 3 | export const sampleData = generateXYSeries({ 4 | serieIds: ['Japan', 'France', 'US', 'Germany', 'Norway', 'Iceland', 'UK', 'Vietnam'], 5 | x: { 6 | values: ['Train', 'Subway', 'Bus', 'Car', 'Boat', 'Moto', 'Moped', 'Bicycle', 'Others'], 7 | }, 8 | y: { 9 | length: NaN, 10 | min: -100_000, 11 | max: 100_000, 12 | round: true, 13 | }, 14 | }) 15 | -------------------------------------------------------------------------------- /storybook/stories/internal/helpers.ts: -------------------------------------------------------------------------------- 1 | export const sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)) 2 | -------------------------------------------------------------------------------- /storybook/stories/nivo-theme.ts: -------------------------------------------------------------------------------- 1 | import { PartialTheme } from '@nivo/theming' 2 | 3 | export const nivoTheme: PartialTheme = { 4 | text: { 5 | fontFamily: `'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace`, 6 | }, 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true, 4 | "isolatedModules": true, 5 | "jsx": "react-jsx", 6 | "lib": ["ES2022", "DOM", "DOM.Iterable"], 7 | "target": "ES2022", 8 | "module": "esnext", 9 | "moduleResolution": "node", 10 | "noEmit": true, 11 | "noImplicitAny": true, 12 | "noImplicitReturns": false, 13 | "noImplicitThis": true, 14 | "noUnusedLocals": true, 15 | "noUnusedParameters": true, 16 | "skipLibCheck": false, 17 | "strict": true, 18 | "allowJs": true, 19 | "composite": true, 20 | "declarationMap": true 21 | }, 22 | "include": ["./packages/*/index.d.ts"] 23 | } 24 | -------------------------------------------------------------------------------- /tsconfig.types.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./tsconfig.json", 3 | "compilerOptions": { 4 | "declaration": true, 5 | "emitDeclarationOnly": true, 6 | "noEmit": false 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /website/.gitignore: -------------------------------------------------------------------------------- 1 | .cache/ 2 | public 3 | src/gatsby-types.d.ts 4 | -------------------------------------------------------------------------------- /website/gatsby-browser.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { WrapPageElementBrowserArgs, WrapRootElementBrowserArgs } from 'gatsby' 3 | import { RootWrapper } from './src/components/RootWrapper' 4 | import { PageWrapper } from './src/components/PageWrapper' 5 | 6 | export const wrapRootElement = ({ element }: WrapRootElementBrowserArgs) => ( 7 | 8 | {element} 9 | 10 | ) 11 | 12 | export const wrapPageElement = ({ element }: WrapPageElementBrowserArgs) => ( 13 | 14 | {element} 15 | 16 | ) 17 | -------------------------------------------------------------------------------- /website/gatsby-node.js: -------------------------------------------------------------------------------- 1 | const replacePath = (_path) => 2 | _path === `/` ? _path : _path.replace(/\/$|$/, `/`) 3 | 4 | const excludedPaths = [`/404.html`] 5 | 6 | exports.onCreatePage = async ({ page, actions }) => { 7 | const { createPage, deletePage } = actions 8 | 9 | return new Promise(resolve => { 10 | if(!excludedPaths.includes(page.path)) { 11 | const oldPage = Object.assign({}, page) 12 | page.path = replacePath(page.path) 13 | if (page.path !== oldPage.path) { 14 | deletePage(oldPage) 15 | createPage(page) 16 | } 17 | } 18 | 19 | resolve() 20 | }) 21 | } 22 | -------------------------------------------------------------------------------- /website/gatsby-ssr.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { GatsbySSR } from 'gatsby' 3 | import { RootWrapper } from './src/components/RootWrapper' 4 | import { PageWrapper } from './src/components/PageWrapper' 5 | 6 | export const wrapRootElement: GatsbySSR['wrapRootElement'] = ({ element }) => ( 7 | 8 | {element} 9 | 10 | ) 11 | 12 | export const wrapPageElement: GatsbySSR['wrapPageElement'] = ({ element }) => ( 13 | 14 | {element} 15 | 16 | ) 17 | -------------------------------------------------------------------------------- /website/sandbox.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "container": { 3 | "port": 8000, 4 | "startScript": "start" 5 | }, 6 | "template": "node" 7 | } 8 | -------------------------------------------------------------------------------- /website/src/assets/captures/area-bump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/area-bump.png -------------------------------------------------------------------------------- /website/src/assets/captures/bar-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/bar-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/bar.png -------------------------------------------------------------------------------- /website/src/assets/captures/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/bullet.png -------------------------------------------------------------------------------- /website/src/assets/captures/bump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/bump.png -------------------------------------------------------------------------------- /website/src/assets/captures/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/calendar.png -------------------------------------------------------------------------------- /website/src/assets/captures/chord-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/chord-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/chord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/chord.png -------------------------------------------------------------------------------- /website/src/assets/captures/choropleth-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/choropleth-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/choropleth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/choropleth.png -------------------------------------------------------------------------------- /website/src/assets/captures/circle-packing-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/circle-packing-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/circle-packing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/circle-packing.png -------------------------------------------------------------------------------- /website/src/assets/captures/funnel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/funnel.png -------------------------------------------------------------------------------- /website/src/assets/captures/geomap-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/geomap-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/geomap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/geomap.png -------------------------------------------------------------------------------- /website/src/assets/captures/heatmap-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/heatmap-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/heatmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/heatmap.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/area-bump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/area-bump.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/bar-horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/bar-horizontal.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/bar-vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/bar-vertical.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/bump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/bump.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/calendar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/calendar.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/chord.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/chord.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/choropleth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/choropleth.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/circle-packing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/circle-packing.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/icicle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/icicle.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/line.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/marimekko.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/marimekko.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/pie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/pie.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/radar.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/radial-bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/radial-bar.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/sankey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/sankey.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/stream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/stream.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/sunburst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/sunburst.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/swarmplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/swarmplot.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/treemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/treemap.png -------------------------------------------------------------------------------- /website/src/assets/captures/home/voronoi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/home/voronoi.png -------------------------------------------------------------------------------- /website/src/assets/captures/icicle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/icicle.png -------------------------------------------------------------------------------- /website/src/assets/captures/line-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/line-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/line.png -------------------------------------------------------------------------------- /website/src/assets/captures/marimekko.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/marimekko.png -------------------------------------------------------------------------------- /website/src/assets/captures/network-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/network-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/network.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/network.png -------------------------------------------------------------------------------- /website/src/assets/captures/pages/home.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/pages/home.png -------------------------------------------------------------------------------- /website/src/assets/captures/parallel-coordinates-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/parallel-coordinates-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/parallel-coordinates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/parallel-coordinates.png -------------------------------------------------------------------------------- /website/src/assets/captures/pie-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/pie-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/pie.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/pie.png -------------------------------------------------------------------------------- /website/src/assets/captures/polar-bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/polar-bar.png -------------------------------------------------------------------------------- /website/src/assets/captures/radar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/radar.png -------------------------------------------------------------------------------- /website/src/assets/captures/radial-bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/radial-bar.png -------------------------------------------------------------------------------- /website/src/assets/captures/sankey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/sankey.png -------------------------------------------------------------------------------- /website/src/assets/captures/scatterplot-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/scatterplot-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/scatterplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/scatterplot.png -------------------------------------------------------------------------------- /website/src/assets/captures/stream.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/stream.png -------------------------------------------------------------------------------- /website/src/assets/captures/sunburst.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/sunburst.png -------------------------------------------------------------------------------- /website/src/assets/captures/swarmplot-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/swarmplot-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/swarmplot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/swarmplot.png -------------------------------------------------------------------------------- /website/src/assets/captures/tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/tree.png -------------------------------------------------------------------------------- /website/src/assets/captures/treemap-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/treemap-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/treemap-html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/treemap-html.png -------------------------------------------------------------------------------- /website/src/assets/captures/treemap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/treemap.png -------------------------------------------------------------------------------- /website/src/assets/captures/voronoi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/voronoi.png -------------------------------------------------------------------------------- /website/src/assets/captures/waffle-canvas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/waffle-canvas.png -------------------------------------------------------------------------------- /website/src/assets/captures/waffle-html.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/waffle-html.png -------------------------------------------------------------------------------- /website/src/assets/captures/waffle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/captures/waffle.png -------------------------------------------------------------------------------- /website/src/assets/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons.png -------------------------------------------------------------------------------- /website/src/assets/icons/area-bump-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/area-bump-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/area-bump-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/area-bump-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/area-bump-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/area-bump-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/area-bump-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/area-bump-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/bar-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bar-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/bar-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bar-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/bar-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bar-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/bar-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bar-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/boxplot-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/boxplot-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/boxplot-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/boxplot-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/boxplot-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/boxplot-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/boxplot-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/boxplot-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/bullet-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bullet-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/bullet-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bullet-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/bullet-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bullet-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/bullet-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bullet-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/bump-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bump-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/bump-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bump-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/bump-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bump-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/bump-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/bump-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/calendar-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/calendar-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/calendar-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/calendar-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/calendar-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/calendar-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/calendar-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/calendar-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/chord-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/chord-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/chord-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/chord-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/chord-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/chord-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/chord-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/chord-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/choropleth-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/choropleth-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/choropleth-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/choropleth-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/choropleth-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/choropleth-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/choropleth-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/choropleth-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/circle-packing-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/circle-packing-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/circle-packing-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/circle-packing-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/circle-packing-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/circle-packing-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/circle-packing-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/circle-packing-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/code-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/code-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/code-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/code-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/code-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/code-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/code-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/code-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/data-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/data-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/data-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/data-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/data-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/data-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/data-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/data-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/funnel-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/funnel-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/funnel-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/funnel-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/funnel-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/funnel-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/funnel-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/funnel-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/geomap-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/geomap-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/geomap-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/geomap-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/geomap-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/geomap-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/geomap-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/geomap-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/heatmap-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/heatmap-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/heatmap-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/heatmap-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/heatmap-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/heatmap-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/heatmap-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/heatmap-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/icicle-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/icicle-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/icicle-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/icicle-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/icicle-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/icicle-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/icicle-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/icicle-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/line-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/line-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/line-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/line-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/line-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/line-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/line-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/line-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/marimekko-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/marimekko-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/marimekko-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/marimekko-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/marimekko-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/marimekko-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/marimekko-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/marimekko-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/network-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/network-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/network-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/network-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/network-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/network-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/network-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/network-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/nivo-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/nivo-icon.png -------------------------------------------------------------------------------- /website/src/assets/icons/parallel-coordinates-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/parallel-coordinates-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/parallel-coordinates-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/parallel-coordinates-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/parallel-coordinates-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/parallel-coordinates-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/parallel-coordinates-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/parallel-coordinates-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/pie-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/pie-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/pie-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/pie-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/pie-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/pie-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/pie-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/pie-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/polar-bar-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/polar-bar-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/polar-bar-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/polar-bar-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/polar-bar-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/polar-bar-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/polar-bar-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/polar-bar-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/radar-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/radar-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/radar-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/radar-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/radar-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/radar-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/radar-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/radar-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/radial-bar-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/radial-bar-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/radial-bar-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/radial-bar-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/radial-bar-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/radial-bar-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/radial-bar-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/radial-bar-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/sankey-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sankey-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/sankey-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sankey-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/sankey-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sankey-grey.png -------------------------------------------------------------------------------- /website/src/assets/icons/sankey-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sankey-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/sankey-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sankey-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/sankey-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sankey-red.png -------------------------------------------------------------------------------- /website/src/assets/icons/scatterplot-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/scatterplot-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/scatterplot-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/scatterplot-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/scatterplot-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/scatterplot-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/scatterplot-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/scatterplot-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/sprite.conf: -------------------------------------------------------------------------------- 1 | [sprite] 2 | crop=false 3 | margin=4 4 | padding=0 5 | ratios=2,1 6 | url=../assets/ 7 | -------------------------------------------------------------------------------- /website/src/assets/icons/stream-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/stream-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/stream-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/stream-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/stream-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/stream-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/stream-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/stream-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/sunburst-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sunburst-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/sunburst-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sunburst-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/sunburst-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sunburst-grey.png -------------------------------------------------------------------------------- /website/src/assets/icons/sunburst-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sunburst-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/sunburst-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sunburst-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/sunburst-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/sunburst-red.png -------------------------------------------------------------------------------- /website/src/assets/icons/swarmplot-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/swarmplot-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/swarmplot-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/swarmplot-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/swarmplot-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/swarmplot-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/swarmplot-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/swarmplot-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/time-range-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/time-range-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/time-range-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/time-range-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/time-range-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/time-range-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/time-range-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/time-range-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/tree-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/tree-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/tree-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/tree-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/tree-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/tree-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/tree-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/tree-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/treemap-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/treemap-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/treemap-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/treemap-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/treemap-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/treemap-grey.png -------------------------------------------------------------------------------- /website/src/assets/icons/treemap-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/treemap-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/treemap-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/treemap-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/treemap-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/treemap-red.png -------------------------------------------------------------------------------- /website/src/assets/icons/voronoi-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/voronoi-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/voronoi-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/voronoi-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/voronoi-grey.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/voronoi-grey.png -------------------------------------------------------------------------------- /website/src/assets/icons/voronoi-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/voronoi-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/voronoi-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/voronoi-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/voronoi-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/voronoi-red.png -------------------------------------------------------------------------------- /website/src/assets/icons/waffle-dark-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/waffle-dark-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/waffle-dark-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/waffle-dark-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons/waffle-light-colored.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/waffle-light-colored.png -------------------------------------------------------------------------------- /website/src/assets/icons/waffle-light-neutral.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons/waffle-light-neutral.png -------------------------------------------------------------------------------- /website/src/assets/icons@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/icons@2x.png -------------------------------------------------------------------------------- /website/src/assets/nivo-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/nivo-logo.png -------------------------------------------------------------------------------- /website/src/assets/stories/SwarmPlotLayers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/stories/SwarmPlotLayers.png -------------------------------------------------------------------------------- /website/src/assets/stories/SwarmPlotRenderNode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/src/assets/stories/SwarmPlotRenderNode.png -------------------------------------------------------------------------------- /website/src/components/CodeBlock.tsx: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components' 2 | 3 | export const CodeBlock = styled.pre` 4 | margin: 0; 5 | background-color: ${({ theme }) => theme.highlight.plain.backgroundColor}; 6 | color: ${({ theme }) => theme.highlight.plain.color}; 7 | font-size: 0.8rem; 8 | line-height: 1.7; 9 | padding: 12px 20px; 10 | ` 11 | -------------------------------------------------------------------------------- /website/src/components/PageContent.ts: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components' 2 | import media from '../theming/mediaQueries' 3 | 4 | export default styled.div` 5 | margin: 0 50px; 6 | position: relative; 7 | 8 | ${media.tablet` 9 | & { 10 | margin: 0 30px; 11 | } 12 | `} 13 | 14 | ${media.mobile` 15 | & { 16 | margin: 0 15px; 17 | } 18 | `} 19 | ` 20 | -------------------------------------------------------------------------------- /website/src/components/PageWrapper.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { GlobalStyle } from '../theming/GlobalStyle' 3 | 4 | export const PageWrapper = ({ children }: { children: any }) => { 5 | const isCapturing = 6 | children.props && 7 | children.props.location && 8 | children.props.location.search.indexOf('capture=1') !== -1 9 | 10 | return ( 11 | <> 12 | 13 |
{children}
14 | 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /website/src/components/RootWrapper.tsx: -------------------------------------------------------------------------------- 1 | import React, { ReactNode } from 'react' 2 | import { SwitchableThemeProvider } from '../theming/SwitchableThemeProvider' 3 | import '../styles/index.css' 4 | 5 | export const RootWrapper = ({ children }: { children: ReactNode }) => ( 6 | {children} 7 | ) 8 | -------------------------------------------------------------------------------- /website/src/components/components/explorer/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ComponentsExplorer' 2 | -------------------------------------------------------------------------------- /website/src/components/controls/colors/index.ts: -------------------------------------------------------------------------------- 1 | export * from './BlendModeControl' 2 | export * from './BulletColorsControl' 3 | export * from './ColorInterpolatorsControl' 4 | export * from './ColorPickerControl' 5 | export * from './ContinuousColorsControl' 6 | export * from './InheritedColorControl' 7 | export * from './OpacityControl' 8 | export * from './OrdinalColorsControl' 9 | export * from './QuantizeColorsControl' 10 | -------------------------------------------------------------------------------- /website/src/components/controls/generics/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ArrayControl' 2 | export * from './ChoicesControl' 3 | export * from './NumberArrayControl' 4 | export * from './ObjectControl' 5 | export * from './PropertyDocumentation' 6 | export * from './RadioControl' 7 | export * from './RangeControl' 8 | export * from './SwitchableRangeControl' 9 | export * from './SwitchControl' 10 | export * from './TextControl' 11 | -------------------------------------------------------------------------------- /website/src/components/controls/specialized/index.ts: -------------------------------------------------------------------------------- 1 | export * from './AngleControl' 2 | export * from './AnnotationsControl' 3 | export * from './BorderRadiusControl' 4 | export * from './BoxAnchorControl' 5 | export * from './CartesianOrientationControl' 6 | export * from './LineWidthControl' 7 | export * from './MarginControl' 8 | export * from './MotionConfigControl' 9 | export * from './ScaleControl' 10 | export * from './ValueFormatControl' 11 | -------------------------------------------------------------------------------- /website/src/components/controls/ui/Label.ts: -------------------------------------------------------------------------------- 1 | import styled from 'styled-components' 2 | 3 | export const Label = styled.label` 4 | display: block; 5 | white-space: nowrap; 6 | padding-top: 3px; 7 | margin: 0; 8 | font-weight: 500; 9 | text-align: right; 10 | overflow: hidden; 11 | text-overflow: ellipsis; 12 | color: ${({ theme }) => theme.colors.text}; 13 | ` 14 | -------------------------------------------------------------------------------- /website/src/components/controls/ui/index.ts: -------------------------------------------------------------------------------- 1 | export * from './Control' 2 | export * from './Help' 3 | export * from './Label' 4 | export * from './PropertyHeader' 5 | export * from './Radio' 6 | export * from './Select' 7 | export * from './styled' 8 | export * from './Switch' 9 | export * from './TextInput' 10 | -------------------------------------------------------------------------------- /website/src/components/guides/axes/index.ts: -------------------------------------------------------------------------------- 1 | export * from './AxesLegend' 2 | export * from './AxesPosition' 3 | export * from './AxesTicks' 4 | -------------------------------------------------------------------------------- /website/src/components/guides/legends/index.ts: -------------------------------------------------------------------------------- 1 | export * from './LegendDirection' 2 | export * from './LegendItemDirection' 3 | export * from './LegendPosition' 4 | export * from './SymbolShape' 5 | -------------------------------------------------------------------------------- /website/src/components/guides/patterns/index.ts: -------------------------------------------------------------------------------- 1 | export * from './PatternsDotsDemo' 2 | export * from './PatternsExample' 3 | export * from './PatternsIllustrations' 4 | export * from './PatternsLinesDemo' 5 | export * from './PatternsSquaresDemo' 6 | -------------------------------------------------------------------------------- /website/src/components/guides/scales/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ScaleBand' 2 | export * from './ScaleLinear' 3 | export * from './ScaleLog' 4 | export * from './ScaleSymlog' 5 | -------------------------------------------------------------------------------- /website/src/components/guides/scales/types.ts: -------------------------------------------------------------------------------- 1 | export interface ScaleConfigAttr { 2 | key: string 3 | type: string 4 | defaultValue: any 5 | description: string 6 | } 7 | -------------------------------------------------------------------------------- /website/src/components/guides/theming/index.ts: -------------------------------------------------------------------------------- 1 | export * from './defaults' 2 | export * from './props' 3 | export * from './ThemedBar' 4 | export * from './ThemedHeatMap' 5 | export * from './ThemedLine' 6 | export * from './ThemedRadialBar' 7 | -------------------------------------------------------------------------------- /website/src/components/home/dimensions.ts: -------------------------------------------------------------------------------- 1 | export const dimensions = { 2 | width: 600, 3 | height: 400, 4 | margin: { 5 | top: 20, 6 | right: 20, 7 | bottom: 20, 8 | left: 20, 9 | }, 10 | lineWidth: 6, 11 | pointSize: 18, 12 | } 13 | -------------------------------------------------------------------------------- /website/src/components/icons/types.ts: -------------------------------------------------------------------------------- 1 | export type IconType = 'lightNeutral' | 'lightColored' | 'darkNeutral' | 'darkColored' 2 | -------------------------------------------------------------------------------- /website/src/components/nav/index.ts: -------------------------------------------------------------------------------- 1 | export * from './FullNav' 2 | export * from './HeaderNav' 3 | export * from './MiniNav' 4 | -------------------------------------------------------------------------------- /website/src/data/components/area-bump/meta.yml: -------------------------------------------------------------------------------- 1 | flavors: 2 | - flavor: svg 3 | path: /area-bump/ 4 | 5 | AreaBump: 6 | package: '@nivo/bump' 7 | tags: [] 8 | stories: [] 9 | description: | 10 | The AreaBump chart is similar to the [Bump](self:/bump/) chart, 11 | but instead of only showing the ranking over time, it also shows 12 | the values on the y-axis. 13 | 14 | If you're only interested in ranking, you can also you use 15 | the [Bump](self:/bump/) component. 16 | -------------------------------------------------------------------------------- /website/src/data/components/boxplot/mapper.ts: -------------------------------------------------------------------------------- 1 | import { settingsMapper } from '../../../lib/settings' 2 | import { mapAxis, mapFormat, mapLegends } from '../../../lib/property-mappers' 3 | 4 | export default settingsMapper( 5 | { 6 | valueFormat: mapFormat, 7 | axisTop: mapAxis, 8 | axisRight: mapAxis, 9 | axisBottom: mapAxis, 10 | axisLeft: mapAxis, 11 | legends: mapLegends, 12 | }, 13 | { 14 | exclude: ['enable axisTop', 'enable axisRight', 'enable axisBottom', 'enable axisLeft'], 15 | } 16 | ) 17 | -------------------------------------------------------------------------------- /website/src/data/components/boxplot/meta.yml: -------------------------------------------------------------------------------- 1 | flavors: 2 | - flavor: svg 3 | path: /boxplot/ 4 | 5 | BoxPlot: 6 | package: '@nivo/boxplot' 7 | tags: [] 8 | stories: [] 9 | description: | 10 | BoxPlot. 11 | -------------------------------------------------------------------------------- /website/src/data/components/circle-packing/mapper.ts: -------------------------------------------------------------------------------- 1 | import { settingsMapper } from '../../../lib/settings' 2 | import { mapFormat } from '../../../lib/property-mappers' 3 | 4 | export default settingsMapper({ 5 | valueFormat: mapFormat, 6 | label: value => { 7 | if (value === `d => \`\${d.id}: \${d.value}\``) return d => `${d.id}: ${d.value}` 8 | return value 9 | }, 10 | }) 11 | -------------------------------------------------------------------------------- /website/src/data/components/funnel/generator.ts: -------------------------------------------------------------------------------- 1 | import { random, startCase } from 'lodash' 2 | 3 | export const generateLightDataSet = () => { 4 | const ids = ['sent', 'viewed', 'clicked', 'add_to_card', 'purchased'] 5 | 6 | let lastValue = 100000 7 | 8 | return ids.map(id => { 9 | lastValue = Math.round(lastValue * random(0.6, 0.95)) 10 | 11 | return { 12 | id: `step_${id}`, 13 | value: lastValue, 14 | label: startCase(id), 15 | } 16 | }) 17 | } 18 | -------------------------------------------------------------------------------- /website/src/data/components/funnel/mapper.ts: -------------------------------------------------------------------------------- 1 | import { settingsMapper } from '../../../lib/settings' 2 | import { mapFormat } from '../../../lib/property-mappers' 3 | 4 | export default settingsMapper({ 5 | valueFormat: mapFormat, 6 | }) 7 | -------------------------------------------------------------------------------- /website/src/data/components/funnel/meta.yml: -------------------------------------------------------------------------------- 1 | flavors: 2 | - flavor: svg 3 | path: /funnel/ 4 | 5 | Funnel: 6 | package: '@nivo/funnel' 7 | tags: 8 | - experimental 9 | stories: [] 10 | description: | 11 | A funnel chart. 12 | 13 | This component also provides a React hook which can be used in *headless mode*: 14 | `useFunnel()`, meaning that you can compute the chart but handle the rendering 15 | by yourself, this hook supports almost the same properties as the chart. 16 | -------------------------------------------------------------------------------- /website/src/data/components/geo/generator.ts: -------------------------------------------------------------------------------- 1 | import countries from './world_countries' 2 | 3 | const exclude = ['BRA', 'AUS', 'SWE', 'GRL', 'COD'] 4 | 5 | export const generateChoroplethData = () => 6 | countries.features 7 | .filter(feature => !exclude.includes(feature.id)) 8 | .map(feature => ({ 9 | id: feature.id, 10 | value: Math.round(Math.random() * 1000000), 11 | })) 12 | -------------------------------------------------------------------------------- /website/src/data/components/geomap/props.ts: -------------------------------------------------------------------------------- 1 | import { groupProperties } from '../../../lib/componentProperties' 2 | import { props as geoProps } from '../geo/props' 3 | 4 | const props = [...geoProps] 5 | 6 | export const groups = groupProperties(props) 7 | -------------------------------------------------------------------------------- /website/src/data/components/parallel-coordinates/mapper.ts: -------------------------------------------------------------------------------- 1 | import { settingsMapper } from '../../../lib/settings' 2 | import { mapLegends } from '../../../lib/property-mappers' 3 | 4 | export default settingsMapper({ 5 | legends: mapLegends, 6 | }) 7 | -------------------------------------------------------------------------------- /website/src/data/components/polar-bar/generator.ts: -------------------------------------------------------------------------------- 1 | import { generateMonthlyData } from '@nivo/generators' 2 | 3 | const keys = ['Rent', 'Groceries', 'Transport', 'Savings', 'Misc'] 4 | 5 | export const generateLightDataSet = () => ({ 6 | data: generateMonthlyData(keys, { withColors: false, short: true }), 7 | keys, 8 | }) 9 | -------------------------------------------------------------------------------- /website/src/data/components/radial-bar/meta.yml: -------------------------------------------------------------------------------- 1 | flavors: 2 | - flavor: svg 3 | path: /radial-bar/ 4 | 5 | RadialBar: 6 | package: '@nivo/radial-bar' 7 | tags: 8 | - radial 9 | - bar 10 | stories: [] 11 | description: | 12 | A radial bar chart. 13 | 14 | Note that margin object does not take grid labels into account, 15 | so you should adjust it to leave enough room for it. 16 | 17 | See the [dedicated guide](self:/guides/legends) on how to setup 18 | legends for this component. 19 | -------------------------------------------------------------------------------- /website/src/data/components/scatterplot/generator.ts: -------------------------------------------------------------------------------- 1 | import range from 'lodash/range.js' 2 | import random from 'lodash/random.js' 3 | 4 | const keys = ['group A', 'group B', 'group C', 'group D', 'group E'] 5 | const ageRange = [0, 100] 6 | const weightRange = [0, 120] 7 | 8 | const generateData = size => 9 | keys.map(key => ({ 10 | id: key, 11 | data: range(size).map(i => ({ 12 | x: random(ageRange[0], ageRange[1]), 13 | y: random(weightRange[0], weightRange[1]), 14 | })), 15 | })) 16 | 17 | export const generateLightDataSet = () => generateData(50) 18 | 19 | export const generateHeavyDataSet = () => generateData(800) 20 | -------------------------------------------------------------------------------- /website/src/data/components/scatterplot/mapper.ts: -------------------------------------------------------------------------------- 1 | import { settingsMapper } from '../../../lib/settings' 2 | import { mapAxis, mapFormat, mapLegends } from '../../../lib/property-mappers' 3 | 4 | export default settingsMapper( 5 | { 6 | xFormat: mapFormat, 7 | yFormat: mapFormat, 8 | axisTop: mapAxis, 9 | axisRight: mapAxis, 10 | axisBottom: mapAxis, 11 | axisLeft: mapAxis, 12 | legends: mapLegends, 13 | }, 14 | { 15 | exclude: ['enable axisTop', 'enable axisRight', 'enable axisBottom', 'enable axisLeft'], 16 | } 17 | ) 18 | -------------------------------------------------------------------------------- /website/src/data/components/stream/mapper.ts: -------------------------------------------------------------------------------- 1 | import { settingsMapper } from '../../../lib/settings' 2 | import { mapAxis, mapFormat, mapLegends } from '../../../lib/property-mappers' 3 | 4 | export default settingsMapper( 5 | { 6 | valueFormat: mapFormat, 7 | axisTop: mapAxis, 8 | axisRight: mapAxis, 9 | axisBottom: mapAxis, 10 | axisLeft: mapAxis, 11 | legends: mapLegends, 12 | }, 13 | { 14 | exclude: ['enable axisTop', 'enable axisRight', 'enable axisBottom', 'enable axisLeft'], 15 | } 16 | ) 17 | -------------------------------------------------------------------------------- /website/src/data/components/stream/meta.yml: -------------------------------------------------------------------------------- 1 | flavors: 2 | - flavor: svg 3 | path: /stream/ 4 | 5 | Stream: 6 | package: '@nivo/stream' 7 | tags: 8 | - stacked 9 | stories: 10 | - label: Use custom legend label 11 | link: stream--custom-legend-label 12 | description: | 13 | Stream chart. 14 | 15 | See the [dedicated guide](self:/guides/legends) on 16 | how to setup legends for this component. 17 | -------------------------------------------------------------------------------- /website/src/data/components/swarmplot/mapper.ts: -------------------------------------------------------------------------------- 1 | import { settingsMapper } from '../../../lib/settings' 2 | import { mapAxis, mapFormat } from '../../../lib/property-mappers' 3 | 4 | export default settingsMapper({ 5 | valueFormat: mapFormat, 6 | axisTop: mapAxis, 7 | axisRight: mapAxis, 8 | axisBottom: mapAxis, 9 | axisLeft: mapAxis, 10 | }) 11 | -------------------------------------------------------------------------------- /website/src/data/components/time-range/meta.yml: -------------------------------------------------------------------------------- 1 | flavors: 2 | - flavor: svg 3 | path: /time-range/ 4 | 5 | TimeRange: 6 | package: '@nivo/calendar' 7 | tags: [] 8 | stories: [] 9 | description: | 10 | The TimeRange chart is similar to the [Calendar](self:/calendar) chart, but 11 | it allows you to specify dates less than a year. 12 | -------------------------------------------------------------------------------- /website/src/data/components/treemap/mapper.ts: -------------------------------------------------------------------------------- 1 | import { settingsMapper } from '../../../lib/settings' 2 | import { mapFormat } from '../../../lib/property-mappers' 3 | 4 | export default settingsMapper({ 5 | label: value => { 6 | if (value === `node => \`\${node.id} (\${node.formattedValue})\``) 7 | return node => `${node.id} (${node.formattedValue})` 8 | return value 9 | }, 10 | parentLabel: value => { 11 | if (value === `node => node.pathComponents.join(' / ')`) 12 | return node => node.pathComponents.join(' / ') 13 | return value 14 | }, 15 | valueFormat: mapFormat, 16 | }) 17 | -------------------------------------------------------------------------------- /website/src/data/components/voronoi/meta.yml: -------------------------------------------------------------------------------- 1 | flavors: 2 | - flavor: svg 3 | path: /voronoi/ 4 | 5 | Voronoi: 6 | package: '@nivo/voronoi' 7 | tags: 8 | - experimental 9 | stories: [] 10 | description: | 11 | Delaunay/Voronoi Tessellation, uses 12 | [d3-delaunay](https://github.com/d3/d3-delaunay). 13 | -------------------------------------------------------------------------------- /website/src/data/config.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | // local 3 | // nivoApiUrl: 'http://localhost:3030/nivo', 4 | // storybookUrl: 'http://localhost:6006/', 5 | 6 | // production 7 | nivoApiUrl: 'https://nivo-api.herokuapp.com/nivo', 8 | storybookUrl: 'https://nivo.rocks/storybook/', 9 | } 10 | -------------------------------------------------------------------------------- /website/src/lib/chart-properties/index.ts: -------------------------------------------------------------------------------- 1 | export * from './accessibility' 2 | export * from './annotations' 3 | export * from './axes' 4 | export * from './chart-dimensions' 5 | export * from './colors' 6 | export * from './grid' 7 | export * from './interactivity' 8 | export * from './ref' 9 | -------------------------------------------------------------------------------- /website/src/lib/objectDiff.ts: -------------------------------------------------------------------------------- 1 | import fromPairs from 'lodash/fromPairs.js' 2 | import differenceWith from 'lodash/differenceWith.js' 3 | import toPairs from 'lodash/toPairs.js' 4 | import isEqual from 'lodash/isEqual.js' 5 | 6 | export const objectDiff = (a: Record, b: Record) => 7 | fromPairs(differenceWith(toPairs(a), toPairs(b), isEqual)) 8 | -------------------------------------------------------------------------------- /website/src/lib/property-mappers/index.ts: -------------------------------------------------------------------------------- 1 | export * from './mapAxis' 2 | export * from './mapFormat' 3 | export * from './mapLegends' 4 | -------------------------------------------------------------------------------- /website/src/lib/property-mappers/mapFormat.ts: -------------------------------------------------------------------------------- 1 | export interface UnmappedValueFormat { 2 | enabled: boolean 3 | format: string 4 | } 5 | 6 | export const mapFormat = ({ format, enabled }: UnmappedValueFormat) => 7 | enabled ? format : undefined 8 | -------------------------------------------------------------------------------- /website/src/lib/property-mappers/mapLegends.ts: -------------------------------------------------------------------------------- 1 | import { LegendProps, legendDefaults } from '@nivo/legends' 2 | import { objectDiff } from '../objectDiff' 3 | 4 | /** 5 | * Exclude default values from legend objects for simpler code snippets. 6 | * Some charts extend the legend object with additional properties, hence the generic type. 7 | */ 8 | export const mapLegends = ( 9 | value: readonly L[] | undefined 10 | ): readonly L[] | undefined => { 11 | if (value === undefined) return value 12 | 13 | return value.map(legend => { 14 | return objectDiff(legend, legendDefaults) as L 15 | }) 16 | } 17 | -------------------------------------------------------------------------------- /website/src/pages/404.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import Layout from '../components/Layout' 3 | import { Seo } from '../components/Seo' 4 | import { DescriptionBlock } from '../components/styled' 5 | 6 | const NotFoundPage = () => ( 7 | 8 | 9 |
10 |

Not Found

11 |
12 | 13 |

You just hit a route that doesn't exist... the sadness.

14 |
15 |
16 | ) 17 | 18 | export default NotFoundPage 19 | -------------------------------------------------------------------------------- /website/src/pages/components.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { PageProps } from 'gatsby' 3 | import Layout from '../components/Layout' 4 | import { Seo } from '../components/Seo' 5 | import { ComponentsExplorer } from '../components/components/explorer' 6 | 7 | const Components = ({ location }: PageProps) => { 8 | return ( 9 | 10 | 11 | 12 | 13 | ) 14 | } 15 | 16 | export default Components 17 | -------------------------------------------------------------------------------- /website/src/pages/internal/icons.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import { Icons } from '../../components/icons/Icons' 3 | 4 | const IconsPage = () => 5 | 6 | export default IconsPage 7 | -------------------------------------------------------------------------------- /website/src/styles/index.css: -------------------------------------------------------------------------------- 1 | @import 'settings/colors.css'; 2 | @import 'settings/dimensions.css'; 3 | 4 | @import 'icons.css'; 5 | @import 'nav.css'; 6 | @import 'mobile-nav.css'; 7 | @import 'guides.css'; 8 | @import 'mq.css'; 9 | 10 | .code-number { 11 | font-weight: 700; 12 | color: var(--code-number-color); 13 | } 14 | 15 | .code-string { 16 | color: var(--code-string-color); 17 | } 18 | 19 | .code-boolean { 20 | color: var(--code-boolean-color); 21 | } 22 | 23 | .no-select { 24 | -webkit-user-select: none; 25 | -moz-user-select: none; 26 | -ms-user-select: none; 27 | user-select: none; 28 | } 29 | -------------------------------------------------------------------------------- /website/src/styles/settings/colors.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --accent-color: #e25d47; 3 | --main-background-color: #f7fafb; 4 | --table-odd-background-color: #f5f5f5; 5 | --code-number-color: #eb8404; 6 | --code-string-color: #199384; 7 | --code-boolean-color: #257493; 8 | } 9 | -------------------------------------------------------------------------------- /website/src/styles/settings/dimensions.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --sidebar-width: 260px; 3 | } 4 | -------------------------------------------------------------------------------- /website/static/CNAME: -------------------------------------------------------------------------------- 1 | nivo.rocks -------------------------------------------------------------------------------- /website/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/plouc/nivo/a2d9dab855365926cb41267eb20af154ca8fd558/website/static/favicon.ico --------------------------------------------------------------------------------