Skip to main content
Neo Brutalist draws graphs as blunt blocks: a cream sheet in a thick black border, square shapes in loud flat color outlined in black, and a solid black shadow under everything that stands off the sheet.
Neo Brutalist ships as its own package, @graphysdk/theme-neo-brutalist, still on 0.x. A minor release may change its look, so pin a caret range (^0.1.0) to take only patches. Tell us what works and what doesn’t on Discord.

Install

Its peer dependencies are @graphysdk/react and React 19. Pass the theme to createGraphyKit and import its fonts once:
Every graph drawn through kit.GraphProvider takes the theme. The spec is written as usual and names no theme:
Without a kit, pass the theme to the provider instead: <GraphProvider theme={neoBrutalist}>. The provider reads the theme once, when it mounts. To switch themes, remount the provider, for example with a React key.

What the theme decides

The shadow

The graph’s own shadow falls outside its frame, to the right and below. Leave room for it around the renderer, or whatever holds the graph cuts it off.

Changing the look of one graph

A spec’s own styles(), scales and config() sit above the theme. This graph keeps the blocks and draws its groups in pink and black:
The theme is drawn for a graph about 600 pixels wide. style.graph({ textScale }) scales its type for a larger or smaller one.

With a geom package

Neo Brutalist repaints no geom. A geom from a package, such as the dumbbell, is drawn in the theme’s colors and type like a built-in one.

Fonts

fonts.css loads Space Grotesk from Google Fonts, in weights 500 and 700. To host the font yourself, leave the import out and load a family named Space Grotesk before the first graph is drawn.