Four Materials Columns

Materials

Four materials, used honestly

Everything you touch at Alder Row is one of four things: oak, pale concrete, the warehouse's own brick, and linen. Nothing is painted to look like something else.

Oak drawer fronts under a pale stone worktop with a bowl of lemons
  • Oak

    European oak for the floors, windows, kitchen fronts and stair, oiled rather than lacquered so it darkens slowly with use.

  • Pale concrete

    The courtyard wing is cast in a pale, lime-washed concrete with a sanded finish that reads softer than it sounds.

  • Reclaimed brick

    The warehouse walls are cleaned, repointed and left exposed inside the homes on the river side.

  • Linen

    Curtains, blinds and headboards in a heavy washed linen chosen by Agnes Obel Interiors, in three undyed tones.

About this block

Four Materials ColumnsPRO

A materials story for a development: eyebrow, heading and lead on the left with a square photograph beside them, then four columns under hairlines, each with a small line-drawn glyph (plank grain, a concrete block, a brick bond, a folded cloth) that draws itself in once scrolled into view, a title and a short note.

Realestate19: Four Materials Columns

A materials story for a development's sales page: eyebrow, heading and lead on the left with a square photograph beside them, then four columns under hairlines. Each column carries a small line-drawn glyph (plank grain, a concrete block, a brick bond, a folded cloth) that draws itself in once the row scrolls into view, a title and a short note on how the material is used.

Upgrade to Pro

Pro blocks install through the shadcn CLI with your license key and ship their full source. Docs and live previews stay open to everyone, so you can read every block's details first.

Upgrade Now

Installation

Swap YOUR_EMAIL and YOUR_KEY for the email and license key on your account. Find your license key on your account page.

Radix flavor

bash
npx shadcn add "https://beste.dev/r/realestate19?email=YOUR_EMAIL&license_key=YOUR_KEY"

Base UI flavor

bash
npx shadcn add "https://beste.dev/r-base/realestate19?email=YOUR_EMAIL&license_key=YOUR_KEY"

This installs the block to components/beste/block/realestate19.tsx plus the badge24 rule eyebrow; it uses no shadcn/ui primitives.

Quick start

The installed file exports realestate19Demo alongside the block: the exact props behind the preview above. Spread it to get a working section in one line.

tsx
import { Realestate19, realestate19Demo } from "@/components/beste/block/realestate19";

export default function Page() {
  return <Realestate19 {...realestate19Demo} />;
}

Then replace the demo with your own props. Written out, a trimmed setup looks like this:

tsx
import { Realestate19 } from "@/components/beste/block/realestate19";

export default function Page() {
  return (
    <Realestate19
      eyebrow="Materials"
      heading="Four materials, used honestly"
      description="Everything you touch at Alder Row is one of four things. Nothing is painted to look like something else."
      image={{
        src: "https://oud.pics/b/realestate/alder-kitchen-detail.webp",
        alt: "Oak drawer fronts under a pale stone worktop",
      }}
      materials={[
        { glyph: "oak", title: "Oak", description: "Floors, windows and kitchen fronts, oiled rather than lacquered." },
        { glyph: "brick", title: "Reclaimed brick", description: "The warehouse walls, cleaned, repointed and left exposed." },
        { glyph: "linen", title: "Linen", description: "Curtains and headboards in a heavy washed linen in three undyed tones." },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
eyebrowstring–Short line above the heading, drawn with a rule in front of it.
headingstring–Section heading.
descriptionstring–Lead paragraph under the heading.
image{ src: string; alt: string }–Square photograph beside the header; without it the header spans its own column only.
materialsMaterial[][]The columns; four fit on one row on large screens, two per row on tablets.
classNamestring–Extra classes merged onto the section.
ts
type GlyphName = "oak" | "concrete" | "brick" | "linen";

type Material = {
  glyph: GlyphName;
  title: string;
  description: string;
};

Behavior notes

  • The four glyphs are drawn inside the block on an 80 by 80 grid and chosen by glyph; outlines are 1.5 strokes in the foreground colour, texture lines are 1 strokes in the muted colour. Every path animates its pathLength from zero, outlines first and texture half a second later, offset per column.
  • Glyphs stay undrawn until the materials row enters the viewport (useInView, once, with a 10% margin), so the drawing is always seen rather than finished off-screen.
  • The photograph is gated on its own load event and on being in view: the frame opens from the top over 1.6 seconds while the image settles from a 1.18 to a 1.12 scale, and it drifts from -6% to 6% against the scroll.
  • Columns rise in order, each with a hairline that draws across its top at the same moment; the heading and lead lead the sequence.
  • With prefers-reduced-motion every element renders in its final state, glyphs complete, the photograph open and the parallax held still.

More Real Estate blocks

View all Real Estate
PRO

realestate29

Schools and Essentials Columns

PRO

realestate54

The Team Behind It

PRO

realestate83

Floor Plan Downloads

Get Pro