Item
A versatile component for displaying content with media, title, description, and actions.
Example requirements
Also uses: Button.
bun add --exact lucide-preact@1.51.0Installation
Complete the project setup first, including Tailwind CSS v4, theme tokens, and Preact compatibility aliases.
1. Install dependencies
bun add --exact class-variance-authority@0.7.1 cn@0.4.0 preact@11.0.0 tw-animate-css@1.4.0The usage example also needs Button. Follow their installation guides as well.
2. Copy the component with degit
Run this from your project root. It selects item.tsx, its local dependencies, and both licenses directly from the repository, then copies them into src/components/ui.
bunx degit@3.10.0 https://github.com/LiasCode/shadcn-preact#main ./.cache/shadcn-preact/item --files LICENSE.md,registry/ui/item.tsx,registry/ui/lib/utils.ts,registry/ui/primitives/LICENSE,registry/ui/primitives/internals/empty.ts,registry/ui/primitives/internals/getReactElementRef.ts,registry/ui/primitives/internals/getStateAttributesProps.ts,registry/ui/primitives/internals/mergeObjects.ts,registry/ui/primitives/internals/resolveClassName.ts,registry/ui/primitives/internals/resolveStyle.ts,registry/ui/primitives/internals/types.ts,registry/ui/primitives/internals/useMergedRefs.ts,registry/ui/primitives/internals/useRefWithInit.ts,registry/ui/primitives/internals/useRenderElement.ts,registry/ui/primitives/merge-props/index.ts,registry/ui/primitives/separator/Separator.tsx,registry/ui/primitives/separator/index.ts,registry/ui/primitives/use-render/index.ts,registry/ui/separator.tsx --force
mkdir -p ./src/components/ui
cp -R ./.cache/shadcn-preact/item/registry/ui/. ./src/components/ui/
cp ./.cache/shadcn-preact/item/LICENSE.md ./src/components/ui/LICENSE.mdThe temporary copy lives in .cache/shadcn-preact/item. Existing components stay in place; shared source files are updated from main.
Selected source files (18)
- item.tsx
- lib/utils.ts
- primitives/LICENSE
- primitives/internals/empty.ts
- primitives/internals/getReactElementRef.ts
- primitives/internals/getStateAttributesProps.ts
- primitives/internals/mergeObjects.ts
- primitives/internals/resolveClassName.ts
- primitives/internals/resolveStyle.ts
- primitives/internals/types.ts
- primitives/internals/useMergedRefs.ts
- primitives/internals/useRefWithInit.ts
- primitives/internals/useRenderElement.ts
- primitives/merge-props/index.ts
- primitives/separator/Separator.tsx
- primitives/separator/index.ts
- primitives/use-render/index.ts
- separator.tsx
Usage
import { Button } from "./components/ui/button";import {
Item,
ItemActions,
ItemContent,
ItemDescription,
ItemMedia,
ItemTitle,
} from "./components/ui/item"<Item>
<ItemMedia variant="icon">
<Icon />
</ItemMedia>
<ItemContent>
<ItemTitle>Title</ItemTitle>
<ItemDescription>Description</ItemDescription>
</ItemContent>
<ItemActions>
<Button>Action</Button>
</ItemActions>
</Item>Examples
Example requirements
bun add --exact lucide-preact@1.51.0Example requirements
bun add --exact lucide-preact@1.51.0Example requirements
Also uses: Button.
bun add --exact lucide-preact@1.51.0Link
Use the render prop to render the item as a link. The hover and focus states will be applied to the anchor element.
Example requirements
bun add --exact lucide-preact@1.51.0Reference
See the official Item documentation for composition patterns and API details. This page uses the Preact port and examples from the pinned upstream revision.
Component source