Frame Morph Hero
ComponentsHeroesFrame Morph Hero
HeroesNew

Frame Morph Hero

One composition, three perspectives. A portrait window becomes a panorama, then the whole scene, while type, crop and project details move with it.

USE IT FORArchitecture portfoliosHotel and destination launchesReal estate project pagesEditorial brand introductions
React + CSS
Explore the full-width experienceOpen preview
STILL®ARCHITECTURE & OTHER WAYS OF LIVINGEST. 2016

SPACES FOR THE SENSES

Space to feel more.

Architecture that makes room for a different way of being. Less noise. More life.

SELECTED WORK / 202601 — CASA FORMA

Space is a feeling.
We design for it.

A considered relationship between light, material and the everyday. Casa Forma is a fictional architectural study in making a little more room for life.

Open the architecture case study
Original architecture concept. An Anticraft UI interaction study.
ANTICRAFT / EXAMPLE JOURNAL
Live component. Go ahead, interact.
01

Installation

Run this in your shadcn-configured React project. The component and stylesheet are added together.

TERMINAL
npx shadcn@latest add http://localhost:5173/r/scroll-expand-hero.json

This command uses the current site address. For localhost, keep this preview running on the same computer. Files follow your configured components alias.

02

Usage

Import the component and make the details your own.

TypeScript
import { ScrollExpandHero } from '@/components/anticraft/ScrollExpandHero';

export function Example() {
  return (
    <ScrollExpandHero
      eyebrow="SPACES FOR THE SENSES"
      title={'Space to\nfeel more.'}
      description="Architecture that makes room for a different way of being."
      media={<img src="/images/architecture.jpg" alt="" />}
      action={{ label: 'Explore the project', href: '/projects/casa-forma' }}
      caption={'Casa Forma / Portugal\nA study in living slowly.'}
      chapters={['The approach', 'A wider view', 'Feel at home']}
    />
  );
}
03

Props

PropTypeDefaultDescription
titlestringRequiredThe visible h2 and section name. Newline characters create intentional line breaks; keep the title concise. Place your page’s h1 elsewhere or adjust the copied source to match your heading hierarchy.
mediaReactNodeRequiredDecorative artwork or an image with alt="". The media wrapper is aria-hidden and inert, so keep all links, controls and meaningful information outside it. Images and videos fill the frame with object-fit: cover. Supply your own local image; /images/architecture.jpg is an example path. Wide artwork with a strong subject near the center-right works well across all three crops.
eyebrowstringundefinedA short category or brand introduction above the title.
descriptionstringundefinedSupporting introduction at the start of the scene. It translates and fades as the image enters the panorama chapter; it stays in the accessible document throughout.
action{ label: string; href: string }undefinedAn ordinary anchor with a visible label and a real destination. It supports keyboard activation, modified clicks and opening in a new tab. Replace the sample project URL with a route on your site. The link stays above the imagery and operable throughout the transition.
captionstringundefinedProject name and context in the lower rail. Newlines create a second line. Its type gently grows in the full-scene chapter; it stays visible throughout.
chaptersreadonly [string, string, string]['Approach', 'Perspective', 'Place']Three short chapter labels in the persistent lower rail. The active list item uses aria-current=step. A native progress element reports scene progress without live announcements.
classNamestring''Additional classes. Customize --ac-scroll-expand-paper, --ac-scroll-expand-ink, --ac-scroll-expand-muted, --ac-scroll-expand-accent, --ac-scroll-expand-font and --ac-scroll-expand-heading-font. The scene uses roughly 2.3 viewport heights; allow native vertical scrolling and avoid clipping its ancestors. Long text increases the scene height to preserve legibility. At 600px component width, the initial portrait moves beneath the title.
04

Motion & accessibility

Considered by default.

Native scrolling coordinates a right-side portrait window, a wide central panorama and a full-bleed final scene. The title moves and scales behind the opening frame, the image crop moves with it, the introduction fades, and the project caption grows. Frame annotations and a persistent three-chapter progress rail track the composition. Smoothstep interpolation follows actual scroll position; no wheel or touch events are intercepted and no autonomous animation runs. Measurements are batched to one animation frame and follow the nearest real vertical scroll container. The CTA and caption remain above the image throughout. Reduced motion presents a static full scene with readable title, introduction and CTA, without sticky scrolling. The demo region supports keyboard scrolling and the project action opens a complete local architecture case study.

Use semantic content and meaningful labels in your composition. Check contrast and keyboard behavior with your own styles and content.

05

Inspiration

FORMAT’s changing canvases informed the coordinated treatment of frame, crop, typography, and annotations. The STILL architecture composition, imagery, and component implementation are original Anticraft work.

Visit FORMAT by Obys

The component source and demo artwork are original to Anticraft UI. The linked site is the design or content reference.