Portfolio Demo Blockset is the platform's own block library. Every block on these pages is server-rendered, FSE-native, and used in real demos on the hub. See the platform →Built by Philip Rehberger

ABOUT

A small library. Built deliberately.

Blockset is the public docs site for the sfp-blocks WordPress plugin — a small collection of server-rendered Gutenberg blocks built to support the demos on the portfolio platform. Every block here started as “the next demo needs this primitive” and ended up generic enough to live in the shared plugin.

The design rules

  • Server-rendered. Every block has a render.php. The editor preview is React; the front-end is PHP. No client-side rehydration, no JSON island, no framework on the page
  • FSE-native. Built for block themes. theme.json color and font tokens are read via var:preset|color|* rather than hardcoded
  • Minimal JS. If a block needs interaction (the copy-to-clipboard on code-snippet, the count-up on trust-stack), it ships a view.js under 2 KB. Most blocks ship zero JS
  • Single attribute shape per block. No over-configured monsters. If a block wants to do two different things, it gets split in two
  • One first consumer. A block doesn’t go into the library unless a real demo needs it. Speculative blocks rot

The split between chassis and blocks

The platform’s parent theme (_chassis) ships the templates, parts, patterns, and gotcha-busting CSS that every demo inherits. The sfp-blocks plugin ships the blocks themselves. The split matters because chassis is theme code (style, structure, the demo’s look) and the blocks are content primitives (the things you compose pages out of). Conflating them means you either get block code in your theme’s functions.php (which dies on theme switch) or you get theme-flavored styling baked into blocks (which dies on palette change). Keeping them separate keeps both reusable.

License + support

GPL-2.0-or-later, same as WordPress. The plugin is maintained because the demos need it — there’s no warranty, no SLA, no commercial tier. If a block is useful to you, fork it. If it’s broken, the issue tracker is on the GitHub repo.