{"version":3,"file":"Avatar.cjs","sources":["../../../src/components/Avatar/Avatar.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, type ComponentProps, type ReactElement } from \"react\";\nimport { get } from \"../../helpers/get\";\nimport { resolveProps } from \"../../helpers/resolve-props\";\nimport { useResolveTheme } from \"../../helpers/resolve-theme\";\nimport { twMerge } from \"../../helpers/tailwind-merge\";\nimport { useThemeProvider } from \"../../theme/provider\";\nimport type {\n  DynamicStringEnumKeysOf,\n  FlowbiteBoolean,\n  FlowbiteColors,\n  FlowbitePositions,\n  FlowbiteSizes,\n  ThemingProps,\n} from \"../../types\";\nimport type { AvatarGroupTheme } from \"./AvatarGroup\";\nimport type { AvatarGroupCounterTheme } from \"./AvatarGroupCounter\";\nimport { avatarTheme } from \"./theme\";\n\nexport interface AvatarTheme {\n  root: AvatarRootTheme;\n  group: AvatarGroupTheme;\n  groupCounter: AvatarGroupCounterTheme;\n}\n\nexport interface AvatarRootTheme {\n  base: string;\n  bordered: string;\n  color: AvatarColors;\n  img: AvatarImageTheme;\n  initials: AvatarInitialsTheme;\n  rounded: string;\n  size: AvatarSizes;\n  stacked: string;\n  status: AvatarStatusTheme;\n  statusPosition: FlowbitePositions;\n}\n\nexport interface AvatarImageTheme extends FlowbiteBoolean {\n  base: string;\n  placeholder: string;\n}\n\nexport interface AvatarStatusTheme {\n  away: string;\n  base: string;\n  busy: string;\n  offline: string;\n  online: string;\n}\n\nexport interface AvatarInitialsTheme {\n  base: string;\n  text: string;\n}\n\nexport interface AvatarColors\n  extends Pick<FlowbiteColors, \"failure\" | \"gray\" | \"info\" | \"pink\" | \"purple\" | \"success\" | \"warning\"> {\n  [key: string]: string;\n}\n\nexport interface AvatarSizes extends Pick<FlowbiteSizes, \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\"> {\n  [key: string]: string;\n}\n\nexport interface AvatarImageProps {\n  alt?: string;\n  className: string;\n  \"data-testid\": string;\n}\n\nexport interface AvatarProps extends Omit<ComponentProps<\"div\">, \"color\">, ThemingProps<AvatarTheme> {\n  alt?: string;\n  bordered?: boolean;\n  img?: string | ((props: AvatarImageProps) => ReactElement);\n  color?: DynamicStringEnumKeysOf<AvatarColors>;\n  rounded?: boolean;\n  size?: DynamicStringEnumKeysOf<AvatarSizes>;\n  stacked?: boolean;\n  status?: \"away\" | \"busy\" | \"offline\" | \"online\";\n  statusPosition?: keyof FlowbitePositions;\n  placeholderInitials?: string;\n}\n\nexport const Avatar = forwardRef<HTMLDivElement, AvatarProps>((props, ref) => {\n  const provider = useThemeProvider();\n  const theme = useResolveTheme(\n    [avatarTheme, provider.theme?.avatar, props.theme],\n    [get(provider.clearTheme, \"avatar\"), props.clearTheme],\n    [get(provider.applyTheme, \"avatar\"), props.applyTheme],\n  );\n\n  const {\n    alt = \"\",\n    bordered = false,\n    children,\n    className,\n    color = \"light\",\n    img,\n    placeholderInitials = \"\",\n    rounded = false,\n    size = \"md\",\n    stacked = false,\n    status,\n    statusPosition = \"top-left\",\n    ...restProps\n  } = resolveProps(props, provider.props?.avatar);\n\n  const imgClassName = twMerge(\n    theme.root.img.base,\n    bordered && theme.root.bordered,\n    bordered && theme.root.color[color],\n    rounded && theme.root.rounded,\n    stacked && theme.root.stacked,\n    theme.root.img.on,\n    theme.root.size[size],\n  );\n\n  const imgProps = {\n    className: twMerge(imgClassName, theme.root.img.on),\n    \"data-testid\": \"flowbite-avatar-img\",\n  };\n\n  return (\n    <div ref={ref} className={twMerge(theme.root.base, className)} data-testid=\"flowbite-avatar\" {...restProps}>\n      <div className=\"relative\">\n        {img ? (\n          typeof img === \"string\" ? (\n            <img alt={alt} src={img} {...imgProps} />\n          ) : (\n            img({ alt, ...imgProps })\n          )\n        ) : placeholderInitials ? (\n          <div\n            className={twMerge(\n              theme.root.img.off,\n              theme.root.initials.base,\n              stacked && theme.root.stacked,\n              bordered && theme.root.bordered,\n              bordered && theme.root.color[color],\n              theme.root.size[size],\n              rounded && theme.root.rounded,\n            )}\n            data-testid=\"flowbite-avatar-initials-placeholder\"\n          >\n            <span className={twMerge(theme.root.initials.text)} data-testid=\"flowbite-avatar-initials-placeholder-text\">\n              {placeholderInitials}\n            </span>\n          </div>\n        ) : (\n          <div className={twMerge(imgClassName, theme.root.img.off)} data-testid=\"flowbite-avatar-img\">\n            <svg\n              className={theme.root.img.placeholder}\n              fill=\"currentColor\"\n              viewBox=\"0 0 20 20\"\n              xmlns=\"http://www.w3.org/2000/svg\"\n            >\n              <path fillRule=\"evenodd\" d=\"M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z\" clipRule=\"evenodd\" />\n            </svg>\n          </div>\n        )}\n        {status && (\n          <span\n            data-testid=\"flowbite-avatar-status\"\n            className={twMerge(\n              theme.root.status.base,\n              theme.root.status[status],\n              theme.root.statusPosition[statusPosition],\n            )}\n          />\n        )}\n      </div>\n      {children && <div>{children}</div>}\n    </div>\n  );\n});\n\nAvatar.displayName = \"Avatar\";\n"],"names":["forwardRef","provider","useThemeProvider","theme","useResolveTheme","avatarTheme","get","resolveProps","twMerge","jsxs","jsx"],"mappings":"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"}