Stack

Libraries, packages and assets I build with

Libraries

Base UI

Base UI

Unstyled, accessible React components with no CSS attached, built by people from the Radix, Floating UI and Material UI teams. A solid base when a design system needs its own look from day one.

Downshift

Hooks for accessible autocomplete, combobox and select inputs in React. It handles behaviour and state and leaves the markup to you, which solves the fiddliest component in any design system without dictating its look.

Headless UI

Headless UI

Unstyled, accessible components from Tailwind Labs (menus, listboxes, comboboxes, dialogs), made to be styled with Tailwind classes. One of the few headless libraries that also comes in a Vue version.

MJML

A markup language that compiles to responsive email HTML: the nested tables and inline CSS every mail client still expects, without writing them by hand. Framework-agnostic and around since 2015.

Motion

Motion

The animation library formerly known as Framer Motion, now framework-agnostic. Hardware-accelerated where the browser allows it, with a spring model that behaves the way you expect.

In use here
Phiki

Phiki

TextMate-grammar syntax highlighting in PHP, so code blocks arrive already highlighted instead of waiting on a client-side pass. Highlights every snippet in the garden.

In use here

PhotoSwipe

The lightbox on the travel albums. Pinch-zoom that behaves like the OS viewer, keyboard and screen-reader support out of the box, and no dependencies.

Radix Colors

Radix Colors

31 colour scales with 12 steps each, and every step has a defined job: background, hover, border, solid fill, text. Dark mode, alpha and P3 variants are included, so the hard part of a palette is already done.

Radix Primitives

Unstyled, accessible React components (dialog, popover, tabs and more) with keyboard and focus handling already solved. You can adopt them one at a time instead of committing to a whole library.

React Aria

React Aria

Adobe's accessible, unstyled building blocks for React, either as low-level hooks or as 50+ ready components you style yourself. The most thorough of the headless libraries, with internationalisation built in.

React Email

React Email

Write HTML emails as React components instead of nested tables, preview them locally and render them to HTML for any sending service. Made by Resend, but not tied to it.

ScrollyVideo.js

ScrollyVideo.js

Ties video playback to the scroll position for scroll-driven storytelling. Works in plain JavaScript and comes with components for React, Vue, Svelte and Astro.

In use here
Swup

Swup

Page transitions without a framework. Swaps one container, keeps the header and footer alive, and leaves the markup server-rendered. What makes navigating this site feel continuous.

Taxi.js

Taxi.js

Small PJAX router for page transitions without a framework. The closest alternative to Swup, which is what this site uses instead.

Build tooling

Docusaurus

Meta's static-site generator for documentation: Markdown and MDX in, a fast static site out. Versioned docs, translations and search support come built in, which covers most of what a docs site needs.

In use here

esbuild

Bundles the JavaScript here in about twenty milliseconds. Fast enough that the build stops being a step you think about.

In use here
Kirby

Kirby

File-based CMS with no database. Every page is a folder and a text file, which means the whole site is greppable, diffable and lives in Git. This site runs on it.

Nextra

The Next.js answer to Docusaurus: docs and blog sites written in MDX, with themes for both or your own. Search and syntax highlighting run at build time, so there is nothing extra to host.

In use here

PostCSS

The CSS pipeline on this site: imports, preset-env for the syntax browsers have not caught up to yet, autoprefixer, and cssnano at the end. No framework, just the parts that are needed.

Unlighthouse

Unlighthouse

Runs Lighthouse across every page of a site rather than one at a time, then puts the results in a single sortable report. Finds the page you would never have thought to test.

Utilities

Easing Gradients

Easing Gradients

Makes CSS gradients follow an easing curve instead of a straight line, which removes the hard edge where a gradient meets solid colour. An editor in the browser, plus a PostCSS plugin to use the result in a build.

Emoji to image

Pick an emoji and download it as a PNG in Apple, Google, Twitter or Facebook style. Handy for mockups and slides, where a system emoji would look different on every machine.

HTML to JSX

HTML to JSX

Paste HTML, get JSX back. One page of transform.tools, which has 60+ converters along the same lines: SVG to JSX, JSON to TypeScript, CSS to Tailwind and more.

MagicPattern

MagicPattern

A toolbox of 30+ generators for backgrounds, patterns, gradients, blobs and waves, exported as images or as CSS and SVG code. Several generators are free, the rest sit behind a subscription.

SVGOMG

SVGO in the browser, with a live preview and a slider per optimisation. Paste an icon in, see exactly what each pass removes before you commit to it.

Utopia

Utopia

Generates fluid type and space scales as clamp() values from two breakpoints. Replaces the pile of media queries most type scales end up as.

Icons & assets

Iconbuddy

Iconbuddy

One search across 300k+ open-source icons from more than 100 sets, with editing and plugins for Figma and VS Code. Each icon keeps the licence of the set it comes from.

In use here
Iconoir

Iconoir

Around 1,400 hand-drawn SVG icons, stroke-only and MIT licensed, with no account and no attribution requirement. The set this site runs on.

MingCute

An open-source icon set of 1,600+ icons in regular and filled, drawn on a 24px grid with a 2px stroke. Packages for most frameworks, an icon font and a Figma plugin, under Apache-2.0.

SVG Hub

Over 70 decorative SVGs (squiggles, scribbles, arrows, shapes) to recolour and paste in. The licence is CC BY-NC, so they are for personal projects, not client work.

SVG Loaders

Twelve loading spinners in pure SVG, animated with SMIL instead of CSS or JavaScript. Drop one in and set the colour through fill.

Repositories

sindresorhus/awesome

The list of awesome lists: a curated index of topic lists for almost every language, platform and field. Where to start when you need the well-regarded options in an area you do not know yet.