{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "item", "title": "Item", "description": "A list item system with media, content, and actions.", "registryDependencies": [ "https://ds.formance.com/r/separator.json" ], "files": [ { "path": "registry/default/ui/item.tsx", "content": "import { cva, type VariantProps } from 'class-variance-authority';\nimport { Slot as SlotPrimitive } from 'radix-ui';\nimport * as React from 'react';\n\nimport { Separator } from '@/registry/default/ui/separator';\nimport { cn } from '@/lib/utils';\n\n// Stays a `div` with an explicit `role`: `Item` and `ItemSeparator` render\n// divs, and a `ul` may only contain `li`, so a real `ul` here is invalid HTML\n// and browsers drop the list semantics it was reached for. `Item` is also used\n// standalone (4 call sites), where an `li` would be just as wrong.\nfunction ItemGroup({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n \n );\n}\n\nfunction ItemSeparator({\n className,\n ...props\n}: React.ComponentProps) {\n return (\n \n );\n}\n\nconst itemVariants = cva(\n 'group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n outline: 'border-border bg-background',\n muted: 'bg-muted/50',\n },\n size: {\n default: 'p-4 gap-4 ',\n sm: 'py-3 px-4 gap-2.5',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction Item({\n className,\n variant = 'default',\n size = 'default',\n asChild = false,\n ...props\n}: React.ComponentProps<'div'> &\n VariantProps & { asChild?: boolean }) {\n const Comp = asChild ? SlotPrimitive.Slot : 'div';\n\n return (\n \n );\n}\n\nconst itemMediaVariants = cva(\n 'flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none group-has-data-[slot=item-description]/item:translate-y-0.5',\n {\n variants: {\n variant: {\n default: 'bg-transparent',\n icon: \"size-8 border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4\",\n image:\n 'size-10 rounded-sm overflow-hidden [&_img]:size-full [&_img]:object-cover',\n },\n },\n defaultVariants: {\n variant: 'default',\n },\n }\n);\n\nfunction ItemMedia({\n className,\n variant = 'default',\n ...props\n}: React.ComponentProps<'div'> & VariantProps) {\n return (\n \n );\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n \n );\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n \n );\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<'p'>) {\n return (\n a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4',\n className\n )}\n {...props}\n />\n );\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n \n );\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n \n );\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<'div'>) {\n return (\n \n );\n}\n\nexport {\n Item,\n ItemActions,\n ItemContent,\n ItemDescription,\n ItemFooter,\n ItemGroup,\n ItemHeader,\n ItemMedia,\n ItemSeparator,\n ItemTitle,\n};\n", "type": "registry:ui" } ], "type": "registry:ui" }