Sticky Image Scroller

How It Works

From Idea to Launch in Record Time

Our end-to-end platform handles the heavy lifting so your team can focus on building what matters most.

Platform dashboard

Instant Performance Boost

See measurable improvements from day one. Our optimized infrastructure delivers sub-100ms response times across every touchpoint.

Enterprise-Grade Security

SOC 2 Type II certified with end-to-end encryption. Your data stays protected with automatic backups and role-based access controls.

Actionable Analytics

Go beyond vanity metrics. Track real business impact with custom dashboards, cohort analysis, and automated reporting delivered weekly.

Seamless Integrations

Connect with 200+ tools your team already uses. Two-click setup with Slack, HubSpot, Salesforce, and every major platform.

Global Edge Network

Serve users in 190+ countries with localized content delivery. Auto-scaling infrastructure handles traffic spikes without breaking a sweat.

AI-Powered Automation

Let intelligent workflows handle the repetitive work. From lead scoring to content optimization, AI keeps your pipeline moving 24/7.

About this block

Sticky Image ScrollerFREE

Two-column layout with sticky image and scrollable feature cards

Feature180: Sticky Image Scroller

A two-column layout: a sticky left column carries the section header and a single supporting image, while a right column of bordered feature cards scrolls past it, separated by a vertical divider.

Free block

This block is free. No license or account is required: install it with the CLI and use it in unlimited projects.

Installation

Radix flavor

bash
npx shadcn add "https://ui.beste.co/r/feature180"

Base UI flavor

bash
npx shadcn add "https://ui.beste.co/r-base/feature180"

This installs the block to components/beste/block/feature180.tsx and the badge shadcn/ui primitive it depends on.

Quick start

The installed file exports feature180Demo alongside the block: the exact props behind the preview above. Spread it to get a working sticky image layout in one line.

tsx
import { Feature180, feature180Demo } from "@/components/beste/block/feature180";

export default function Page() {
  return <Feature180 {...feature180Demo} />;
}

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

tsx
import { Zap, Shield, BarChart3 } from "lucide-react";
import { Feature180 } from "@/components/beste/block/feature180";

export default function Page() {
  return (
    <Feature180
      badge={{ label: "How it works", variant: "secondary" }}
      heading="From idea to launch in <strong>record time</strong>"
      description="Our end-to-end platform handles the heavy lifting."
      image={{ src: "https://images.unsplash.com/photo-1697133081695-90070de25bc3?w=800&h=900&fit=crop", alt: "Platform dashboard" }}
      features={[
        { icon: Zap, title: "Instant Performance Boost", description: "Sub-100ms response times." },
        { icon: Shield, title: "Enterprise-Grade Security", description: "SOC 2 Type II certified." },
        { icon: BarChart3, title: "Actionable Analytics", description: "Custom dashboards and cohort analysis." },
      ]}
    />
  );
}

Props

PropTypeDefaultDescription
badge{ label: string; variant?: "default" | "secondary" | "outline" }–Optional eyebrow badge in the sticky column
headingstring–Sticky column heading. Supports inline <strong> markup, rendered via dangerouslySetInnerHTML
descriptionstring–Sticky column intro text
image{ src: string; alt: string }–Supporting image shown below the description in the sticky column
featuresFeatureItem[][]Bordered icon, title, and description cards in the scrolling right column
classNamestring–Extra classes for the outer <section>
ts
type FeatureItem = { icon: LucideIcon; title: string; description: string };

Behavior notes

  • On md and up, the left column becomes sticky at top-[100px], staying pinned while the right column's feature cards scroll past; below md the columns stack and stickiness is disabled.
  • image is a single slot, not a gallery: it renders in a fixed aspect-[4/3] rounded-md box with object-cover, and if omitted the sticky column simply ends after the description with no placeholder.
  • Each entry in features is wrapped in its own rounded-md border bg-card p-6 card, matching Feature179's bordered-card treatment rather than Feature178's plain rows.
  • The vertical divider between columns (hidden w-px bg-border md:block) always renders once the two-column layout is active, independent of content.

More Feature blocks

View all Feature
FREE

feature179

Sticky Stats Scroller

PRO

feature209

Sticky Services

PRO

feature229

Accordion Image Sync