registry:component

Item

v1.0.0ga

List item primitive with media, content, and actions.

Registry Endpoint
Open JSON

https://registry.aavya.com/r/ui-item.json

npx shadcn@latest add https://registry.aavya.com/r/ui-item.json

Live Preview
Brand Assets

Centralized logos, icons, and templates.

Design Tokens

Manage color, spacing, and type primitives.

Usage Snippet
import Item from '@/components/ui/item.tsx'

export default function Example() {
  return (
    <div className="p-6">
      <Item />
    </div>
  )
}
Source Preview
import * as React from 'react'

import { Slot } from '@radix-ui/react-slot'
import { cva, type VariantProps } from 'class-variance-authority'

import { cn } from '@/lib/utils'
import { Separator } from '@/components/ui/separator'

function ItemGroup({ className, ...props }: React.ComponentProps<'div'>) {
  return (
    <div role='list' data-slot='item-group' className={cn('group/item-group flex flex-col', className)} {...props} />
  )
}

function ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {
  return <Separator data-slot='item-separator' orientation='horizontal' className={cn('my-0', className)} {...props} />
}

const itemVariants = cva(
  'group/item [a]:hover:bg-accent/50 focus-visible:border-ring focus-visible:ring-ring/50 flex flex-wrap items-center rounded-md border border-transparent text-sm transition-colors duration-100 outline-none focus-visible:ring-[3px] [a]:transition-colors',
  {
    variants: {
      variant: {
        default: 'bg-transparent',
        outline: 'border-border',
        muted: 'bg-muted/50'
      },
      size: {
        default: 'gap-4 p-4',
        sm: 'gap-2.5 px-4 py-3'
      }
    },
    defaultVariants: {
      variant: 'default',
      size: 'default'
    }
  }
)

function Item({
  className,
  variant = 'default',
  size = 'default',
  asChild = false,
  ...props
}: React.ComponentProps<'div'> & VariantPr