UNPKG

ivt

Version:

Ivt Components Library

1 lines 8.23 kB
{"version":3,"file":"index.mjs","sources":["../../src/components/ui/item/item.tsx"],"sourcesContent":["import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { Separator } from \"@/components/ui/separator\";\nimport { cn } from \"@/lib/utils\";\n\nfunction ItemGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t// biome-ignore lint/a11y/useSemanticElements: <role>\n\t\t<div\n\t\t\trole=\"list\"\n\t\t\tdata-slot=\"item-group\"\n\t\t\tclassName={cn(\"group/item-group flex flex-col\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ItemSeparator({ className, ...props }: React.ComponentProps<typeof Separator>) {\n\treturn (\n\t\t<Separator\n\t\t\tdata-slot=\"item-separator\"\n\t\t\torientation=\"horizontal\"\n\t\t\tclassName={cn(\"my-0\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst itemVariants = cva(\n\t\"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\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"bg-transparent\",\n\t\t\t\toutline: \"border-border\",\n\t\t\t\tmuted: \"bg-muted/50\",\n\t\t\t},\n\t\t\tsize: {\n\t\t\t\tdefault: \"p-4 gap-4 \",\n\t\t\t\tsm: \"py-3 px-4 gap-2.5\",\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\nfunction Item({\n\tclassName,\n\tvariant = \"default\",\n\tsize = \"default\",\n\tasChild = false,\n\t...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemVariants> & { asChild?: boolean }) {\n\tconst Comp = asChild ? Slot : \"div\";\n\treturn (\n\t\t<Comp\n\t\t\tdata-slot=\"item\"\n\t\t\tdata-variant={variant}\n\t\t\tdata-size={size}\n\t\t\tclassName={cn(itemVariants({ variant, size, className }))}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nconst itemMediaVariants = cva(\n\t\"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\t{\n\t\tvariants: {\n\t\t\tvariant: {\n\t\t\t\tdefault: \"bg-transparent\",\n\t\t\t\ticon: \"size-8 border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4\",\n\t\t\t\timage: \"size-10 rounded-sm overflow-hidden [&_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\nfunction ItemMedia({\n\tclassName,\n\tvariant = \"default\",\n\t...props\n}: React.ComponentProps<\"div\"> & VariantProps<typeof itemMediaVariants>) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"item-media\"\n\t\t\tdata-variant={variant}\n\t\t\tclassName={cn(itemMediaVariants({ variant, className }))}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ItemContent({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"item-content\"\n\t\t\tclassName={cn(\"flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ItemTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"item-title\"\n\t\t\tclassName={cn(\"flex w-fit items-center gap-2 text-sm leading-snug font-medium\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ItemDescription({ className, ...props }: React.ComponentProps<\"p\">) {\n\treturn (\n\t\t<p\n\t\t\tdata-slot=\"item-description\"\n\t\t\tclassName={cn(\n\t\t\t\t\"text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance\",\n\t\t\t\t\"[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4\",\n\t\t\t\tclassName,\n\t\t\t)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ItemActions({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div data-slot=\"item-actions\" className={cn(\"flex items-center gap-2\", className)} {...props} />\n\t);\n}\n\nfunction ItemHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"item-header\"\n\t\t\tclassName={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nfunction ItemFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n\treturn (\n\t\t<div\n\t\t\tdata-slot=\"item-footer\"\n\t\t\tclassName={cn(\"flex basis-full items-center justify-between gap-2\", className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n}\n\nexport {\n\tItem,\n\tItemMedia,\n\tItemContent,\n\tItemActions,\n\tItemGroup,\n\tItemSeparator,\n\tItemTitle,\n\tItemDescription,\n\tItemHeader,\n\tItemFooter,\n};\n"],"names":["ItemGroup","className","props","div","role","data-slot","cn","ItemSeparator","Separator","orientation","itemVariants","cva","variants","variant","default","outline","muted","size","sm","defaultVariants","Item","asChild","Comp","Slot","data-variant","data-size","itemMediaVariants","icon","image","ItemMedia","ItemContent","ItemTitle","ItemDescription","p","ItemActions","ItemHeader","ItemFooter"],"mappings":"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"}