{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "tag-node",
  "title": "Tag Element",
  "description": "A tag element component with selection states and styling.",
  "dependencies": [],
  "registryDependencies": [],
  "files": [
    {
      "path": "src/registry/ui/tag-node.tsx",
      "content": "'use client';\n\nimport * as React from 'react';\n\nimport type { TTagElement } from 'platejs';\nimport type { PlateElementProps } from 'platejs/react';\n\nimport Link from 'next/link';\nimport {\n  PlateElement,\n  useFocused,\n  useReadOnly,\n  useSelected,\n} from 'platejs/react';\n\nimport { cn } from '@/lib/utils';\n\nexport function TagElement(props: PlateElementProps<TTagElement>) {\n  const { element } = props;\n  const selected = useSelected();\n  const focused = useFocused();\n  const readOnly = useReadOnly();\n\n  const badge = (\n    <div\n      className={cn(\n        'shrink-0 break-normal rounded-full border px-2.5 align-middle font-semibold text-sm transition-colors focus:outline-none',\n        'border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/60',\n        selected && focused && 'ring-2 ring-ring ring-offset-0',\n        'flex items-center gap-1.5'\n      )}\n    >\n      {element.value as string}\n    </div>\n  );\n\n  const content =\n    readOnly && element.url ? (\n      <Link href={element.url as string}>{badge}</Link>\n    ) : (\n      badge\n    );\n\n  return (\n    <PlateElement\n      {...props}\n      className=\"m-0.5 inline-flex cursor-pointer select-none\"\n      attributes={{\n        ...props.attributes,\n        draggable: true,\n      }}\n    >\n      {content}\n      {props.children}\n    </PlateElement>\n  );\n}\n",
      "type": "registry:ui"
    }
  ],
  "meta": {
    "docs": [
      {
        "route": "/docs/multi-select"
      }
    ],
    "examples": [
      "select-editor-demo"
    ]
  },
  "type": "registry:ui"
}