{"version":3,"sources":["../src/components/Avatar/Avatar.tsx"],"names":["forwardRef","jsxs","cn","jsx"],"mappings":";;;;;;AAIA,IAAM,UAAA,GAAa;AAAA,EACjB,EAAA,EAAI,SAAA;AAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA;AAAA,EACJ,WAAA,EAAa;AAAA;AACf,CAAA;AAKA,IAAM,oBAAA,GAAmD;AAAA,EACvD,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,gBAAA,GAA+C;AAAA,EACnD,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,WAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,iBAAA,GAAgD;AAAA,EACpD,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI,aAAA;AAAA,EACJ,EAAA,EAAI,SAAA;AAAA,EACJ,EAAA,EAAI;AACN,CAAA;AAEA,IAAM,kBAAA,GAAmD;AAAA,EACvD,MAAA,EAAQ,cAAA;AAAA,EACR,OAAA,EAAS,aAAA;AAAA,EACT,IAAA,EAAM,YAAA;AAAA,EACN,IAAA,EAAM;AACR,CAAA;AAEO,IAAM,MAAA,GAASA,gBAAA;AAAA,EACpB,CACE;AAAA,IACE,GAAA;AAAA,IACA,GAAA,GAAM,EAAA;AAAA,IACN,QAAA;AAAA,IACA,IAAA,GAAO,IAAA;AAAA,IACP,MAAA;AAAA,IACA,IAAA;AAAA,IACA;AAAA,KAEF,GAAA,KACG;AACH,IAAA,MAAM,OAAA,GAAU,IAAA,KAAS,IAAA,GAAO,IAAA,GAAO,IAAA,IAAQ,IAAA;AAC/C,IAAA,uBACEC,eAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QACC,GAAA;AAAA,QACA,yBAAA,EAAwB,EAAA;AAAA,QACxB,SAAA,EAAWC,oBAAA;AAAA,UACT,+DAAA;AAAA,UACA,qBAAqB,IAAI,CAAA;AAAA,UACzB,CAAC,GAAA,IAAO,8BAAA;AAAA,UACR;AAAA,SACF;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,OAAA,oBACCC,cAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,aAAA,EAAW,IAAA;AAAA,cACX,8BAAA,EAA8B,OAAA;AAAA,cAC9B,SAAA,EAAU,mBAAA;AAAA,cACV,KAAA,EAAO,EAAE,cAAA,EAAgB,UAAA,CAAW,OAAO,CAAA;AAAE;AAAA,WAC/C;AAAA,UAED,GAAA,mBACCA,cAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,GAAA;AAAA,cACA,GAAA;AAAA,cACA,SAAA,EAAU;AAAA;AAAA,WACZ,mBAEAA,cAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWD,oBAAA;AAAA,gBACT,0DAAA;AAAA,gBACA,iBAAiB,IAAI;AAAA,eACvB;AAAA,cAEC,QAAA,EAAA;AAAA;AAAA,WACH;AAAA,UAED,MAAA,oBACCC,cAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAWD,oBAAA;AAAA,gBACT,6EAAA;AAAA,gBACA,kBAAkB,IAAI,CAAA;AAAA,gBACtB,mBAAmB,MAAM;AAAA;AAC3B;AAAA;AACF;AAAA;AAAA,KAEJ;AAAA,EAEJ;AACF;AAEA,MAAA,CAAO,WAAA,GAAc,QAAA","file":"chunk-5CXJ5Z4C.cjs","sourcesContent":["import { forwardRef, type CSSProperties } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { AvatarProps } from \"./Avatar.types\";\n\nconst glowColors = {\n  on: \"#a855f7\", // violet — neutral\n  xp: \"#22c55e\", // green\n  achievement: \"#f59e0b\", // amber\n} as const;\n\ntype AvatarSize = NonNullable<AvatarProps[\"size\"]>;\ntype AvatarStatus = NonNullable<AvatarProps[\"status\"]>;\n\nconst containerSizeClasses: Record<AvatarSize, string> = {\n  xs: \"h-6 w-6\",\n  sm: \"h-8 w-8\",\n  md: \"h-10 w-10\",\n  lg: \"h-12 w-12\",\n  xl: \"h-16 w-16\",\n};\n\nconst fallbackTextSize: Record<AvatarSize, string> = {\n  xs: \"text-xs\",\n  sm: \"text-xs\",\n  md: \"text-sm\",\n  lg: \"text-base\",\n  xl: \"text-lg\",\n};\n\nconst statusSizeClasses: Record<AvatarSize, string> = {\n  xs: \"h-1.5 w-1.5\",\n  sm: \"h-2 w-2\",\n  md: \"h-2.5 w-2.5\",\n  lg: \"h-3 w-3\",\n  xl: \"h-4 w-4\",\n};\n\nconst statusColorClasses: Record<AvatarStatus, string> = {\n  online: \"bg-green-500\",\n  offline: \"bg-zinc-400\",\n  busy: \"bg-red-500\",\n  away: \"bg-amber-500\",\n};\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>(\n  (\n    {\n      src,\n      alt = \"\",\n      fallback,\n      size = \"md\",\n      status,\n      glow,\n      className,\n    },\n    ref,\n  ) => {\n    const glowKey = glow === true ? \"on\" : glow || null;\n    return (\n      <div\n        ref={ref}\n        data-react-fancy-avatar=\"\"\n        className={cn(\n          \"relative inline-flex items-center justify-center rounded-full\",\n          containerSizeClasses[size],\n          !src && \"bg-zinc-200 dark:bg-zinc-700\",\n          className,\n        )}\n      >\n        {glowKey && (\n          <span\n            aria-hidden\n            data-react-fancy-avatar-glow={glowKey}\n            className=\"fancy-avatar-glow\"\n            style={{ \"--fancy-glow\": glowColors[glowKey] } as CSSProperties}\n          />\n        )}\n        {src ? (\n          <img\n            src={src}\n            alt={alt}\n            className=\"h-full w-full rounded-full object-cover\"\n          />\n        ) : (\n          <span\n            className={cn(\n              \"font-medium text-zinc-600 dark:text-zinc-300 select-none\",\n              fallbackTextSize[size],\n            )}\n          >\n            {fallback}\n          </span>\n        )}\n        {status && (\n          <span\n            className={cn(\n              \"absolute bottom-0 right-0 rounded-full ring-2 ring-white dark:ring-zinc-900\",\n              statusSizeClasses[size],\n              statusColorClasses[status],\n            )}\n          />\n        )}\n      </div>\n    );\n  },\n);\n\nAvatar.displayName = \"Avatar\";\n"]}