Editorial, a sample theme of Framebrick Blocks: warm paper, brick red, serif headings, roomy spacing and small radius.
The style
Editorial, a sample theme of Framebrick Blocks: warm paper, brick red, serif headings, roomy spacing and small radius.
Every colour, size and corner is a CSS variable in app/globals.css — the shadcn/ui variables (--background, --primary, --muted-foreground…), --radius, and the Framebrick block tokens (--text-display, --text-h1, --text-h2, --text-h3, --text-lead, --section-y, --gutter, --container). Use them through Tailwind's classes (bg-primary, text-muted-foreground, rounded-xl, text-h2, py-(--section-y), px-(--gutter), max-w-(--container)), never as literal values: the theme can then change in one file, and dark mode follows the .dark class.
Colours
background#FDFAF4 · dark #16100Cbackground · neutralThe page and every section that has no tone of its own.
foreground#221812 · dark #F3EEE4foregroundText on the page: headings, body text, icons.
card#F8F3E9 · dark #201914card · surfaceCards that stand apart from a muted band: testimonial and story cards.
card-foreground#221812 · dark #F3EEE4card-foreground · on-surfaceText on a card.
popover#FDFAF4 · dark #201914popoverMenus and dialogs.
popover-foreground#221812 · dark #F3EEE4popover-foregroundText in a menu or dialog.
primary#A33F1E · dark #E7885DprimaryThe accent: filled buttons, the chosen tab, a progress bar, the current item, icon squares.
primary-foreground#FDFAF4 · dark #16100Cprimary-foreground · on-primaryText and icons on primary.
secondary#F1E8DB · dark #2C251FsecondarySecondary buttons and quiet fills.
secondary-foreground#2A1F19 · dark #F3EEE4secondary-foreground · on-secondaryText on secondary.
muted#F3ECE0 · dark #2C251FmutedCards, chips and panels inside a section (the blocks' most common surface).
muted-foreground#6E5D50 · dark #B3A593muted-foreground · on-surface-variantSecondary text on the page and on cards: leads, descriptions, meta, labels.
accent#F2E4D2 · dark #362C24accentHover fills of ghost and outline buttons and menu items; a tint of the primary colour.
accent-foreground#221812 · dark #F3EEE4accent-foregroundText on accent.
destructive#E7000B · dark #FF6467destructive · errorErrors: a failed form send, a required field's mark.
border#DFD6C8 · dark rgba(243, 238, 228, 0.12)border · outlineHairlines between rows, card and field borders, dividers.
input#DFD6C8 · dark rgba(243, 238, 228, 0.16)inputForm field borders.
lead 20px · 400 · 1.6Build a site that feels designed
body 16px · 400 · 1.5Build a site that feels designed
small 14px · 400 · 1.43Build a site that feels designed
label 14px · 500 · 1.43Build a site that feels designed
caption 12px · 400 · 1.33Build a site that feels designed
Corners
sm · 2.4px
md · 3.2px
lg · 4px
xl · 5.6px
full · 9999px
Spacing
section-y · 160px
section-y-phone · 80px
gutter · 48px
gutter-phone · 24px
container · 1152px
Parts
Get startedContact usGet startedGet started
chip
Framebrick Blocks — Editorial
A card in its own colours and corners.
Framebrick Blocks — Editorial
A card in its own colours and corners.
Drawn from the file’s component tokens.
Do's and don'ts
use the theme's variables through their classes (bg-primary, text-muted-foreground, rounded-xl, text-h2); never write a colour, a font size or a radius as a literal value.
give a new section py-(--section-y) and a mx-auto max-w-(--container) px-(--gutter) container, and no outer margin.
give each section one h2 (the page has one h1, in its hero), and set headings in font-heading font-semibold tracking-tight.
keep primary for what the visitor should act on: one filled button per group, the second one outlined.
use text-foreground/65 for secondary text on muted, text-muted-foreground on background and card.
check both modes: every colour has a .dark value, and a section can take .dark on its own.
add shadows, gradients or colours of your own; the palette above is the whole palette.
put type-scale classes (text-h2) and a text colour in the same cn() call: tailwind-merge reads both as colours and drops one. Keep the type classes in a plain string.
mix fonts beyond the ones named above.
Use it with the blocks
Editorial is one of the four sample themes of Framebrick Blocks: whole page sections that read the shadcn tokens, so one theme restyles every block. See them in this theme on any block page, or compose a page in the builder and pick it there.