{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "profile-card",
  "type": "registry:block",
  "title": "Profile Card",
  "description": "A card for displaying a user profile.",
  "registryDependencies": [
    "profile-picture",
    "username-display",
    "profile-description",
    "profile-stat",
    "follow-button"
  ],
  "files": [
    {
      "path": "src/components/deso/profile-card.tsx",
      "content": "import { ProfileCoverPhoto } from './profile-cover-photo';\nimport { ProfileDescription } from './profile-description';\nimport { UserInfo } from './user-info';\nimport { FollowButton } from './follow-button';\nimport { MessageButton } from './message-button';\nimport { ProfileStat } from './profile-stat';\nimport { ProfileActions } from './profile-actions';\nimport { cn } from '@/lib/utils/deso';\nimport { ProfileTag } from './profile-tag';\nimport { Calendar, LinkIcon, MapPin } from 'lucide-react';\n\nexport interface ProfileCardProps {\n  publicKey: string;\n  variant?: 'default' | 'compact';\n  showFeaturedImage?: boolean;\n  showFollowButton?: boolean;\n  showMessageButton?: boolean;  \n  showActionMenu?: boolean;\n  followButtonVariant?: 'default' | 'icon-only';\n  messageButtonVariant?: 'default' | 'icon-only';\n  className?: string;\n  showDescription?: boolean;\n  showTags?: boolean;\n  showStats?: boolean;\n}\n\nexport function ProfileCard({\n  publicKey,\n  variant = 'default',\n  showFeaturedImage = true,\n  showFollowButton = true,\n  showMessageButton = true,\n  showActionMenu = true,\n  followButtonVariant = 'default',\n  messageButtonVariant = 'default',\n  showDescription = true,\n  showTags = true,\n  showStats = true,\n  className,\n}: ProfileCardProps) {\n\n  const profileTagList: Record<string, { icon: React.ReactNode, text: string, link?: string }> = {\n    location: {\n      icon: <MapPin className=\"size-3\" />,\n      text: 'New York, NY',\n    },\n    website: {\n      icon: <LinkIcon className=\"size-3\" />,\n      text: 'deso.com',\n      link: 'https://deso.com',\n    },\n    joined: {\n      icon: <Calendar className=\"size-3\" />,\n      text: 'Joined June 2024',\n    },\n  }\n\n  if (variant === 'compact') {\n    return (\n      <div\n        className={cn(\n          'w-full mx-auto bg-background rounded-lg overflow-hidden border border-border',\n          className\n        )}\n      >\n        <div className={cn('p-4 flex flex-col gap-4', className)}>\n          <div className=\"flex items-center justify-between gap-2\">\n            <UserInfo\n              publicKey={publicKey}\n              pictureSize=\"sm\"\n              isVerified={true}\n              showVerification\n              showPublicKey\n              className=\"z-10\"\n            />\n            <div className=\"flex items-center gap-2\">\n              {showActionMenu && <ProfileActions />}\n              {showMessageButton && <MessageButton variant={messageButtonVariant} showTooltip />}\n              {showFollowButton && <FollowButton variant={followButtonVariant} />}\n            </div>\n          </div>\n        </div>\n      </div>\n    );\n  }\n\n  return (\n    <div\n      className={cn(\n        'w-full mx-auto bg-background rounded-lg overflow-hidden border border-border',\n        className\n      )}\n    >\n      {showFeaturedImage && (\n        <ProfileCoverPhoto\n          publicKey={publicKey}\n          aspectRatio=\"16:9\"\n          showOverlay\n          overlayOpacity={0.3}\n          className=\"rounded-b-none\"\n        />\n      )}\n      <div className={cn('p-6 flex flex-col gap-4')}>\n        <div className=\"flex items-center justify-between gap-2\">\n          <UserInfo\n            publicKey={publicKey}\n            pictureSize=\"sm\"\n            showVerification\n            isVerified={true}\n            showPublicKey\n            className=\"z-10\"\n          />\n          <div className=\"flex items-center gap-2\">\n            {showActionMenu && <ProfileActions />}\n            {showMessageButton && <MessageButton variant={messageButtonVariant} showTooltip />}\n            {showFollowButton && <FollowButton variant={followButtonVariant} />}\n          </div>\n        </div>\n        {showStats && ( \n        <div className=\"flex items-center gap-4\">\n          <ProfileStat variant=\"followers\" count={32430} />\n          <ProfileStat variant=\"following\" count={2540} />\n        </div>\n        )}\n        {showDescription && (\n          <ProfileDescription\n            publicKey={publicKey}\n            lineClamp={4}\n            showMoreText=\"Show more\"\n            showLessText=\"Show less\"\n          />\n        )}\n        {showTags && (\n          <div className=\"flex flex-wrap items-center gap-2\">\n            {Object.entries(profileTagList).map(([key, value]) => (\n              <ProfileTag icon={value.icon} key={key} link={value.link}>\n                {value.text}\n              </ProfileTag>\n            ))}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n} ",
      "type": "registry:component",
      "target": "src/components/deso-ui/profile-card.tsx"
    }
  ]
}