{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "gummy-item",
  "type": "registry:ui",
  "title": "Gummy Item",
  "description": "Passive, link, and button Item anatomy for dense lists without nested interactive containers.",
  "registryDependencies": [
    "https://gummyui.dev/r/gummy-primitives-styles.json"
  ],
  "files": [
    {
      "path": "components/ui/GummyItem.tsx",
      "type": "registry:ui",
      "content": "import * as React from \"react\";\n\nfunction joinClassNames(...values: Array<string | false | null | undefined>) {\n  return values.filter(Boolean).join(\" \");\n}\n\nexport type GummyItemProps = React.HTMLAttributes<HTMLElement> & {\n  as?: \"div\" | \"article\" | \"li\";\n  selected?: boolean;\n  density?: \"default\" | \"compact\";\n};\n\nexport const GummyItem = React.forwardRef<HTMLElement, GummyItemProps>(\n  function GummyItem(\n    {\n      as = \"div\",\n      selected = false,\n      density = \"default\",\n      className,\n      ...props\n    },\n    ref,\n  ) {\n    const Root = as;\n    return (\n      <Root\n        {...props}\n        ref={ref as never}\n        className={joinClassNames(\"gummy-item\", className)}\n        data-selected={selected || undefined}\n        data-density={density}\n      />\n    );\n  },\n);\n\nGummyItem.displayName = \"GummyItem\";\n\nexport type GummyItemLinkProps = React.AnchorHTMLAttributes<HTMLAnchorElement> & {\n  selected?: boolean;\n  density?: \"default\" | \"compact\";\n};\n\nexport const GummyItemLink = React.forwardRef<\n  HTMLAnchorElement,\n  GummyItemLinkProps\n>(function GummyItemLink(\n  { selected = false, density = \"default\", className, ...props },\n  ref,\n) {\n  return (\n    <a\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-item gummy-item--interactive\", className)}\n      data-selected={selected || undefined}\n      data-density={density}\n    />\n  );\n});\n\nGummyItemLink.displayName = \"GummyItemLink\";\n\nexport type GummyItemButtonProps = React.ButtonHTMLAttributes<HTMLButtonElement> & {\n  selected?: boolean;\n  density?: \"default\" | \"compact\";\n};\n\nexport const GummyItemButton = React.forwardRef<\n  HTMLButtonElement,\n  GummyItemButtonProps\n>(function GummyItemButton(\n  {\n    selected = false,\n    density = \"default\",\n    type = \"button\",\n    className,\n    ...props\n  },\n  ref,\n) {\n  return (\n    <button\n      {...props}\n      ref={ref}\n      type={type}\n      className={joinClassNames(\"gummy-item gummy-item--interactive\", className)}\n      data-selected={selected || undefined}\n      data-density={density}\n    />\n  );\n});\n\nGummyItemButton.displayName = \"GummyItemButton\";\n\nexport const GummyItemMedia = React.forwardRef<\n  HTMLSpanElement,\n  React.HTMLAttributes<HTMLSpanElement>\n>(function GummyItemMedia({ className, ...props }, ref) {\n  return (\n    <span\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-item__media\", className)}\n    />\n  );\n});\n\nGummyItemMedia.displayName = \"GummyItemMedia\";\n\nexport const GummyItemContent = React.forwardRef<\n  HTMLSpanElement,\n  React.HTMLAttributes<HTMLSpanElement>\n>(function GummyItemContent({ className, ...props }, ref) {\n  return (\n    <span\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-item__content\", className)}\n    />\n  );\n});\n\nGummyItemContent.displayName = \"GummyItemContent\";\n\nexport const GummyItemTitle = React.forwardRef<\n  HTMLSpanElement,\n  React.HTMLAttributes<HTMLSpanElement>\n>(function GummyItemTitle({ className, ...props }, ref) {\n  return (\n    <span\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-item__title\", className)}\n    />\n  );\n});\n\nGummyItemTitle.displayName = \"GummyItemTitle\";\n\nexport const GummyItemDescription = React.forwardRef<\n  HTMLSpanElement,\n  React.HTMLAttributes<HTMLSpanElement>\n>(function GummyItemDescription({ className, ...props }, ref) {\n  return (\n    <span\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-item__description\", className)}\n    />\n  );\n});\n\nGummyItemDescription.displayName = \"GummyItemDescription\";\n\nexport const GummyItemActions = React.forwardRef<\n  HTMLSpanElement,\n  React.HTMLAttributes<HTMLSpanElement>\n>(function GummyItemActions({ className, ...props }, ref) {\n  return (\n    <span\n      {...props}\n      ref={ref}\n      className={joinClassNames(\"gummy-item__actions\", className)}\n    />\n  );\n});\n\nGummyItemActions.displayName = \"GummyItemActions\";\n"
    }
  ]
}
