Skip to content
Facade UI
Colour mode
GitHub (opens in a new tab)
blockmotion

USP list (motion)

USP strip with a staggered entrance.

Wraps the static USP list, which renders identically with JavaScript disabled.

Preview

Open full width (opens in a new tab)
Preview width

Installation

Package manager
pnpm dlx shadcn@latest add https://facadeui.dev/r/usp-list-motion.json

Pulls in motion-primitives, usp-list. The CLI installs them for you.

Usage

The exact source of the preview above.

demos/usp-list-motion.tsx
"use client"

/**
 * The `usp-list` demo, with the motion variant swapped in.
 *
 * Identical props: the motion variant only changes which slot components
 * the static section renders through.
 *
 * `"use client"` is required here, not incidental: the motion variant is a
 * client component, and icon components cannot cross a server-to-client
 * boundary as props. See the note on `IconComponent`.
 */

import { UspListMotion } from "@registry/sections/usp-list-motion"

import { USPS } from "./content"

export function Demo() {
  return (
    <UspListMotion
      eyebrow="Why"
      title="Three things that matter"
      description="Code quality, accessibility and composability are the product."
      items={USPS}
    />
  )
}

Source

What the CLI copies into your project, byte for byte.

components/sections/usp-list-motion.tsx
"use client"

/**
 * UspListMotion — the USP strip with a staggered entrance.
 *
 * Swaps only the list slots on the static `UspList`; everything visual and every
 * accessibility decision stays in that one file.
 *
 * Dependencies: react, @/components/motion/slots, @/components/sections/usp-list.
 */

import { StaggerList, StaggerListItem } from "@/components/motion/slots"
import { UspList, type UspListProps } from "@/components/sections/usp-list"

export type UspListMotionProps = Omit<UspListProps, "listAs" | "itemAs">

export function UspListMotion(props: UspListMotionProps) {
  return <UspList {...props} listAs={StaggerList} itemAs={StaggerListItem} />
}

Props

UspListMotionProps

Extends Omit<UspListProps, "listAs" | "itemAs">.