{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "item", "type": "registry:ui", "title": "Item", "files": [ { "path": "ui/item.tsrx", "type": "registry:ui", "target": "components/ui/item.tsrx", "content": "// Base UI base item — class strings from the maintainer-supplied radix source, verbatim. Ten of the\n// eleven parts are plain host elements, and the eleventh (`ItemSeparator`) delegates to this base's\n// own Separator, so it picks up Base UI's `aria-orientation` dialect automatically.\n//\n// NO DIALECT RISK IN THE VARIANTS, which is worth stating because they look like the ones that\n// caught toggle and slider: `data-[size=…]` and `data-[variant=…]` here read attributes THIS\n// component writes itself, not state emitted by a primitive. Nothing underneath emits anything.\n//\n// `Item` SHIPS WITHOUT `asChild`, the same call as badge and breadcrumb in this base. Radix swaps in\n// `Slot`; React Aria takes a `render` function; Base UI has no Slot, and item has no primitive to\n// borrow a `render` prop from, so nothing here settles the spelling upstream uses. Adding it later\n// is additive; shipping the wrong shape is breaking. A consumer needing a different element can\n// apply `itemVariants({ variant, size })` directly, which is what the class export is for.\nimport { cva, type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/lib/utils';\nimport { Separator } from '@/components/ui/separator';\n\ntype DivProps = { className?: string } & Record;\n\nexport function ItemGroup({ className, ...props }: DivProps) @{\n\t\n}\n\nexport function ItemSeparator({ className, ...props }: DivProps) @{\n\t\n}\n\nexport const itemVariants = cva(\n\t'group/item flex w-full flex-wrap items-center rounded-lg border text-sm transition-colors duration-100 outline-none focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 [a]:transition-colors [a]:hover:bg-muted',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'border-transparent',\n\t\t\t\toutline: 'border-border',\n\t\t\t\tmuted: 'border-transparent bg-muted/50',\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: 'gap-2.5 px-3 py-2.5',\n\t\t\t\tsm: 'gap-2.5 px-3 py-2.5',\n\t\t\t\txs: 'gap-2 px-2.5 py-2 in-data-[slot=dropdown-menu-content]:p-0',\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t\tsize: 'default',\n\t\t},\n\t},\n);\n\nexport interface ItemProps extends Record {\n\tclassName?: string;\n\t/** Not supported in this base — see the header. Declared so it fails to compile, not silently. */\n\tasChild?: never;\n\tvariant?: VariantProps['variant'];\n\tsize?: VariantProps['size'];\n}\n\nexport function Item({ className, variant = 'default', size = 'default', ...props }: ItemProps) @{\n\t\n}\n\nexport const itemMediaVariants = cva(\n\t'flex shrink-0 items-center justify-center gap-2 group-has-data-[slot=item-description]/item:translate-y-0.5 group-has-data-[slot=item-description]/item:self-start [&_svg]:pointer-events-none',\n\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: 'bg-transparent',\n\t\t\t\ticon: '[&_svg:not([class*=\\'size-\\'])]:size-4',\n\t\t\t\timage: 'size-10 overflow-hidden rounded-sm group-data-[size=sm]/item:size-8 group-data-[size=xs]/item:size-6 [&_img]:size-full [&_img]:object-cover',\n\t\t\t},\n\t\t},\n\t\tdefaultVariants: {\n\t\t\tvariant: 'default',\n\t\t},\n\t},\n);\n\nexport interface ItemMediaProps extends Record {\n\tclassName?: string;\n\tvariant?: VariantProps['variant'];\n}\n\nexport function ItemMedia({ className, variant = 'default', ...props }: ItemMediaProps) @{\n\t\n}\n\nexport function ItemContent({ className, ...props }: DivProps) @{\n\t\n}\n\nexport function ItemTitle({ className, ...props }: DivProps) @{\n\t\n}\n\nexport function ItemDescription({ className, ...props }: DivProps) @{\n\ta]:underline [&>a]:underline-offset-4 [&>a:hover]:text-primary',\n\t\t\tclassName,\n\t\t)}\n\t\t{...props}\n\t/>\n}\n\nexport function ItemActions({ className, ...props }: DivProps) @{\n\t
\n}\n\nexport function ItemHeader({ className, ...props }: DivProps) @{\n\t\n}\n\nexport function ItemFooter({ className, ...props }: DivProps) @{\n\t\n}\n" } ], "dependencies": [ "class-variance-authority" ], "registryDependencies": [ "@octane/separator", "@octane/utils" ] }