{"version":3,"sources":["../../src/Avatar.tsx","../../../../foundation/primitives-native/src/Box.tsx","../../../../foundation/primitives-native/src/Text.tsx","../../../../foundation/primitives-native/src/Icon.tsx","../../src/AvatarGroup.tsx"],"sourcesContent":["import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box, Text, Icon } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, type ThemeOverrideProps } from \"@xsolla/xui-core\";\nimport { Badge } from \"@xsolla/xui-badge\";\nimport { User } from \"@xsolla/xui-icons-base\";\n\nexport interface AvatarProps extends ThemeOverrideProps {\n  /** Image source URL */\n  src?: string;\n  /** Icon component to display when no image is provided */\n  icon?: React.ReactNode;\n  /** Text/Initials to display when no image or icon is provided */\n  text?: string;\n  /** Size of the avatar */\n  size?: \"xl\" | \"lg\" | \"md\" | \"sm\" | \"xs\" | \"xxs\";\n  /** If true, the avatar will be square with small border radius. If false, it will be a circle. */\n  square?: boolean;\n  /** Visual tone — 'mono' (default) or 'brand'. */\n  tone?: \"mono\" | \"brand\";\n  /**\n   * Whether to render the avatar's outer border (stroke). Defaults to `true`,\n   * preserving the existing bordered look. Set to `false` to remove the border\n   * entirely — useful on surfaces that already provide separation, or in dense\n   * layouts where the border adds visual noise.\n   */\n  stroke?: boolean;\n  /** Whether to show an alert badge */\n  badge?: boolean;\n  /** Number or text to display in the badge notification */\n  badgeCount?: React.ReactNode;\n  /** Icon to display in the badge */\n  badgeIcon?: React.ReactNode;\n  /**\n   * Background colour override. Intended for internal use by AvatarGroup to\n   * drive its `avatarBackgroundMode` cycling; not part of the public API.\n   * @internal\n   */\n  backgroundColor?: string;\n  /** Disable hover effect. Used internally by AvatarGroup. */\n  disableHover?: boolean;\n  /** Accessible label for the avatar. Recommended for screen readers. */\n  \"aria-label\"?: string;\n  /** Alternative text for the avatar image */\n  alt?: string;\n  /** Click handler for the avatar */\n  onClick?: () => void;\n  /** Color tone for the badge */\n  badgeTone?:\n    | \"primary\"\n    | \"secondary\"\n    | \"brand\"\n    | \"brandExtra\"\n    | \"success\"\n    | \"warning\"\n    | \"alert\"\n    | \"neutral\";\n  testID?: string;\n}\n\nexport const Avatar: React.FC<AvatarProps> = ({\n  src,\n  icon,\n  text,\n  size = \"xl\",\n  square = false,\n  tone = \"mono\",\n  stroke = true,\n  badge = false,\n  badgeCount,\n  badgeIcon,\n  badgeTone = \"alert\",\n  backgroundColor,\n  disableHover = true,\n  \"aria-label\": ariaLabel,\n  alt,\n  onClick,\n  testID,\n  themeMode,\n  themeProductContext,\n}) => {\n  const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n  const [hasImageError, setHasImageError] = React.useState(false);\n\n  React.useEffect(() => {\n    setHasImageError(false);\n  }, [src]);\n\n  const useImage = !!src && !hasImageError;\n\n  const sizeStyles = theme.sizing.avatar(size);\n\n  const toneBackground =\n    tone === \"brand\"\n      ? theme.colors.background.brand.primary\n      : theme.colors.overlay.mono;\n  const toneHoverBackground =\n    tone === \"brand\"\n      ? theme.colors.background.brand.secondary\n      : theme.colors.overlay.monoHover;\n  const toneContent =\n    tone === \"brand\"\n      ? theme.colors.content.on.brand\n      : theme.colors.content.primary;\n\n  const borderRadius = square\n    ? sizeStyles.borderRadiusSquare\n    : sizeStyles.borderRadiusCircle;\n\n  const countSizeMap = {\n    xl: \"xl\",\n    lg: \"xl\",\n    md: \"lg\",\n    sm: \"lg\",\n    xs: \"sm\",\n    xxs: \"xs\",\n  } as const;\n  const dotSizeMap = {\n    xl: \"md\",\n    lg: \"md\",\n    md: \"sm\",\n    sm: \"sm\",\n    xs: \"sm\",\n    xxs: \"xs\",\n  } as const;\n  const hasBadgeContent = !!(badgeCount || badgeIcon);\n  const badgeSize = hasBadgeContent ? countSizeMap[size] : dotSizeMap[size];\n  // Badge sizes sm/xs are dot-only — content is dropped, so position as a dot.\n  const rendersAsDot = badgeSize === \"sm\" || badgeSize === \"xs\";\n\n  // Badge offset differs for circle vs square, and for dot vs count\n  // Dot badge (8px) needs different offset per avatar size\n  const getDotOffset = () => {\n    if (square) {\n      return size === \"xxs\" ? { right: -1, top: -1 } : { right: -3, top: -3 };\n    }\n    // Circle - position dot on the edge based on avatar size\n    const circleOffsets = {\n      xl: { right: 2, top: 2 },\n      lg: { right: 2, top: 2 },\n      md: { right: 2, top: 2 },\n      sm: { right: 2, top: 2 },\n      xs: { right: 0, top: 0 },\n      xxs: { right: 1, top: 1 },\n    };\n    return circleOffsets[size];\n  };\n\n  const badgeOffset =\n    hasBadgeContent && !rendersAsDot\n      ? square\n        ? sizeStyles.badgeOffsetSquare\n        : sizeStyles.badgeOffsetCircle\n      : getDotOffset();\n\n  const displayBadgeCount = badgeCount;\n\n  return (\n    <Box\n      testID={testID}\n      width={sizeStyles.size}\n      height={sizeStyles.size}\n      position=\"relative\"\n      {...(!useImage && { role: \"img\", \"aria-label\": ariaLabel })}\n      {...(onClick && {\n        onPress: onClick,\n        onKeyDown: (e: React.KeyboardEvent) => {\n          if (e.key === \"Enter\" || e.key === \" \") {\n            e.preventDefault();\n            onClick();\n          }\n        },\n        cursor: \"pointer\",\n        role: \"button\",\n        tabIndex: 0,\n      })}\n    >\n      <Box\n        width={sizeStyles.size}\n        height={sizeStyles.size}\n        borderRadius={borderRadius}\n        backgroundColor={backgroundColor || toneBackground}\n        alignItems=\"center\"\n        justifyContent=\"center\"\n        position=\"relative\"\n        overflow=\"hidden\"\n        borderWidth={stroke ? theme.shape.avatar[size].borderWidth : 0}\n        borderColor={stroke ? theme.colors.border.secondary : undefined}\n        {...(!disableHover &&\n          !useImage && {\n            hoverStyle: {\n              backgroundColor: toneHoverBackground,\n            },\n          })}\n      >\n        {useImage ? (\n          <Box\n            as=\"img\"\n            src={src}\n            alt={alt || ariaLabel || \"\"}\n            position=\"absolute\"\n            top={0}\n            left={0}\n            width=\"100%\"\n            height=\"100%\"\n            borderRadius={borderRadius}\n            onError={() => setHasImageError(true)}\n          />\n        ) : icon ? (\n          <Icon size={sizeStyles.iconSize} color={toneContent}>\n            {icon}\n          </Icon>\n        ) : text ? (\n          <Text\n            fontSize={sizeStyles.fontSize}\n            color={toneContent}\n            fontWeight=\"400\"\n            letterSpacing={0.4}\n          >\n            {text}\n          </Text>\n        ) : (\n          <User\n            variant=\"solid\"\n            size={sizeStyles.iconSize}\n            color={toneContent}\n          />\n        )}\n      </Box>\n\n      {badge && (\n        <Box\n          position=\"absolute\"\n          right={badgeOffset.right}\n          top={badgeOffset.top}\n        >\n          <Badge\n            size={badgeSize}\n            tone={badgeTone}\n            icon={badgeIcon}\n            showStroke={size !== \"xxs\"}\n            aria-label={\n              displayBadgeCount\n                ? `${displayBadgeCount} notifications`\n                : \"Notification\"\n            }\n          >\n            {displayBadgeCount}\n          </Badge>\n        </Box>\n      )}\n    </Box>\n  );\n};\n","import React from \"react\";\nimport {\n  View,\n  Pressable,\n  Image,\n  ViewStyle,\n  ImageStyle,\n  DimensionValue,\n  AnimatableNumericValue,\n  AccessibilityRole,\n} from \"react-native\";\nimport { BoxProps } from \"@xsolla/xui-primitives-core\";\n\nconst roleToAccessibilityRole: Record<string, AccessibilityRole> = {\n  button: \"button\",\n  link: \"link\",\n  img: \"image\",\n  image: \"image\",\n  summary: \"summary\",\n  switch: \"switch\",\n  checkbox: \"checkbox\",\n  radio: \"radio\",\n  heading: \"header\",\n  text: \"text\",\n  search: \"search\",\n  alert: \"alert\",\n  none: \"none\",\n  presentation: \"none\",\n  progressbar: \"progressbar\",\n  scrollbar: \"scrollbar\",\n  adjustable: \"adjustable\",\n  tab: \"tab\",\n  menu: \"menu\",\n  menuitem: \"menuitem\",\n  list: \"list\",\n  timer: \"timer\",\n};\n\n/** RN ViewStyle.gap is typed as number (Yoga gap), not DimensionValue. */\nconst toGapValue = (gap: number | string | undefined): number | undefined => {\n  if (gap === undefined) return undefined;\n  if (typeof gap === \"number\") return gap;\n  const pxMatch = /^(\\d+(?:\\.\\d+)?)px$/.exec(gap);\n  if (pxMatch) return Number(pxMatch[1]);\n  const asNumber = Number(gap);\n  return Number.isFinite(asNumber) ? asNumber : undefined;\n};\n\nexport const Box: React.FC<BoxProps> = ({\n  children,\n  onPress,\n  onLayout,\n  onMoveShouldSetResponder,\n  onResponderGrant,\n  onResponderMove,\n  onResponderRelease,\n  onResponderTerminate,\n  backgroundColor,\n  borderColor,\n  borderWidth,\n  borderBottomWidth,\n  borderBottomColor,\n  borderTopWidth,\n  borderTopColor,\n  borderLeftWidth,\n  borderLeftColor,\n  borderRightWidth,\n  borderRightColor,\n  borderRadius,\n  borderStyle,\n  height,\n  padding,\n  paddingHorizontal,\n  paddingVertical,\n  margin,\n  marginTop,\n  marginBottom,\n  marginLeft,\n  marginRight,\n  flexDirection,\n  flexWrap,\n  alignItems,\n  justifyContent,\n  alignSelf,\n  position,\n  top,\n  bottom,\n  left,\n  right,\n  width,\n  minWidth,\n  minHeight,\n  maxWidth,\n  maxHeight,\n  flex,\n  flexShrink,\n  gap,\n  overflow,\n  opacity,\n  zIndex,\n  hoverStyle,\n  pressStyle,\n  style,\n  disabled,\n  \"data-testid\": dataTestId,\n  testID,\n  as,\n  src,\n  alt,\n  ...rest\n}) => {\n  const getContainerStyle = (pressed?: boolean): ViewStyle => ({\n    backgroundColor:\n      pressed && pressStyle?.backgroundColor\n        ? pressStyle.backgroundColor\n        : backgroundColor,\n    borderColor,\n    borderWidth,\n    borderBottomWidth,\n    borderBottomColor,\n    borderTopWidth,\n    borderTopColor,\n    borderLeftWidth,\n    borderLeftColor,\n    borderRightWidth,\n    borderRightColor,\n    borderRadius: borderRadius as AnimatableNumericValue,\n    borderStyle: borderStyle as ViewStyle[\"borderStyle\"],\n    overflow,\n    opacity: opacity ?? (disabled ? 0.5 : undefined),\n    zIndex,\n    height: height as DimensionValue,\n    width: width as DimensionValue,\n    minWidth: minWidth as DimensionValue,\n    minHeight: minHeight as DimensionValue,\n    maxWidth: maxWidth as DimensionValue,\n    maxHeight: maxHeight as DimensionValue,\n    padding: padding as DimensionValue,\n    paddingHorizontal: paddingHorizontal as DimensionValue,\n    paddingVertical: paddingVertical as DimensionValue,\n    margin: margin as DimensionValue,\n    marginTop: marginTop as DimensionValue,\n    marginBottom: marginBottom as DimensionValue,\n    marginLeft: marginLeft as DimensionValue,\n    marginRight: marginRight as DimensionValue,\n    flexDirection,\n    flexWrap,\n    alignItems,\n    justifyContent,\n    alignSelf,\n    position: position as ViewStyle[\"position\"],\n    top: top as DimensionValue,\n    bottom: bottom as DimensionValue,\n    left: left as DimensionValue,\n    right: right as DimensionValue,\n    flex,\n    flexShrink,\n    gap: toGapValue(gap),\n    ...(style as ViewStyle),\n  });\n\n  const finalTestID = dataTestId || testID;\n\n  // Map web a11y props; drop the rest of the web-only attributes before\n  // spreading onto RN hosts (unknown props warn at runtime).\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const {\n    role,\n    tabIndex,\n    onKeyDown,\n    onKeyUp,\n    \"aria-label\": ariaLabel,\n    \"aria-labelledby\": _ariaLabelledBy,\n    \"aria-current\": _ariaCurrent,\n    \"aria-disabled\": ariaDisabled,\n    \"aria-live\": ariaLive,\n    \"aria-busy\": ariaBusy,\n    className,\n    \"data-testid\": _dataTestId,\n    cursor: _cursor,\n    type: _type,\n    ...nativeRest\n  } = rest as Record<string, unknown>;\n\n  const accessibilityRole =\n    (typeof role === \"string\" && roleToAccessibilityRole[role]) ||\n    (as === \"button\" ? \"button\" : undefined);\n  const isDisabled = Boolean(disabled || ariaDisabled);\n  const accessibilityState = {\n    disabled: isDisabled || undefined,\n    busy: Boolean(ariaBusy) || undefined,\n  };\n  const accessibilityLiveRegion =\n    ariaLive === \"polite\" || ariaLive === \"assertive\" ? ariaLive : undefined;\n\n  // Handle as=\"img\" for React Native\n  if (as === \"img\" && src) {\n    const imageStyle: ImageStyle = {\n      width: width as DimensionValue,\n      height: height as DimensionValue,\n      borderRadius: borderRadius as number,\n      position: position as ImageStyle[\"position\"],\n      top: top as DimensionValue,\n      bottom: bottom as DimensionValue,\n      left: left as DimensionValue,\n      right: right as DimensionValue,\n      ...(style as ImageStyle),\n    };\n\n    return (\n      <Image\n        source={{ uri: src }}\n        style={imageStyle}\n        testID={finalTestID}\n        accessibilityLabel={typeof ariaLabel === \"string\" ? ariaLabel : alt}\n        resizeMode=\"cover\"\n        {...nativeRest}\n      />\n    );\n  }\n\n  // Prefer Pressable whenever the node is interactive or explicitly a button,\n  // so disabled / aria-disabled controls stay in the a11y tree as buttons.\n  if (onPress || as === \"button\") {\n    return (\n      <Pressable\n        onPress={!isDisabled && onPress ? onPress : undefined}\n        disabled={isDisabled}\n        onLayout={onLayout}\n        onMoveShouldSetResponder={onMoveShouldSetResponder}\n        onResponderGrant={onResponderGrant}\n        onResponderMove={onResponderMove}\n        onResponderRelease={onResponderRelease}\n        onResponderTerminate={onResponderTerminate}\n        style={({ pressed }) => getContainerStyle(pressed)}\n        testID={finalTestID}\n        accessibilityRole={accessibilityRole}\n        accessibilityLabel={\n          typeof ariaLabel === \"string\" ? ariaLabel : undefined\n        }\n        accessibilityState={accessibilityState}\n        accessibilityLiveRegion={accessibilityLiveRegion}\n        {...nativeRest}\n      >\n        {children}\n      </Pressable>\n    );\n  }\n\n  return (\n    <View\n      style={getContainerStyle()}\n      testID={finalTestID}\n      onLayout={onLayout}\n      onMoveShouldSetResponder={onMoveShouldSetResponder}\n      onResponderGrant={onResponderGrant}\n      onResponderMove={onResponderMove}\n      onResponderRelease={onResponderRelease}\n      onResponderTerminate={onResponderTerminate}\n      accessibilityRole={accessibilityRole}\n      accessibilityLabel={typeof ariaLabel === \"string\" ? ariaLabel : undefined}\n      accessibilityState={accessibilityState}\n      accessibilityLiveRegion={accessibilityLiveRegion}\n      {...nativeRest}\n    >\n      {children}\n    </View>\n  );\n};\n","import React from \"react\";\nimport {\n  Text as RNText,\n  TextStyle,\n  AccessibilityRole,\n  StyleSheet,\n} from \"react-native\";\nimport { TextProps } from \"@xsolla/xui-primitives-core\";\n\nconst roleMap: Record<string, AccessibilityRole> = {\n  alert: \"alert\",\n  heading: \"header\",\n  button: \"button\",\n  link: \"link\",\n  text: \"text\",\n};\n\nconst parseNumericValue = (\n  value: string | number | undefined\n): number | undefined => {\n  if (value === undefined) return undefined;\n  if (typeof value === \"number\") return value;\n  const parsed = parseFloat(value);\n  return isNaN(parsed) ? undefined : parsed;\n};\n\nexport const Text: React.FC<TextProps> = ({\n  children,\n  color,\n  fontSize,\n  fontWeight,\n  fontFamily,\n  textAlign,\n  lineHeight,\n  numberOfLines,\n  id,\n  role,\n  testID,\n  \"data-testid\": dataTestId,\n  style: styleProp,\n  ...props\n}) => {\n  let resolvedFontFamily = fontFamily\n    ? fontFamily.split(\",\")[0].replace(/['\"]/g, \"\").trim()\n    : undefined;\n\n  if (\n    resolvedFontFamily === \"Pilat Wide\" ||\n    resolvedFontFamily === \"Pilat Wide Bold\" ||\n    resolvedFontFamily === \"Aktiv Grotesk\"\n  ) {\n    resolvedFontFamily = undefined;\n  }\n\n  const incomingStyle = StyleSheet.flatten(styleProp) as TextStyle | undefined;\n\n  const baseStyle: TextStyle = {\n    color: color ?? incomingStyle?.color,\n    fontSize: typeof fontSize === \"number\" ? fontSize : undefined,\n    fontWeight: fontWeight as TextStyle[\"fontWeight\"],\n    fontFamily: resolvedFontFamily,\n    textDecorationLine: props.textDecoration as TextStyle[\"textDecorationLine\"],\n    textAlign: textAlign ?? incomingStyle?.textAlign,\n    lineHeight: parseNumericValue(lineHeight ?? incomingStyle?.lineHeight),\n    marginTop: parseNumericValue(\n      incomingStyle?.marginTop as number | string | undefined\n    ),\n    marginBottom: parseNumericValue(\n      incomingStyle?.marginBottom as number | string | undefined\n    ),\n  };\n\n  const accessibilityRole = role ? roleMap[role] : undefined;\n\n  return (\n    <RNText\n      style={baseStyle}\n      numberOfLines={numberOfLines}\n      testID={dataTestId || testID || id}\n      accessibilityRole={accessibilityRole}\n    >\n      {children}\n    </RNText>\n  );\n};\n","import React from \"react\";\nimport { View, ViewStyle } from \"react-native\";\nimport { IconProps } from \"@xsolla/xui-primitives-core\";\n\nexport const Icon: React.FC<IconProps> = ({\n  children,\n  color,\n  size,\n  testID,\n  \"data-testid\": dataTestId,\n}) => {\n  const style: ViewStyle = {\n    width: typeof size === \"number\" ? size : undefined,\n    height: typeof size === \"number\" ? size : undefined,\n    alignItems: \"center\",\n    justifyContent: \"center\",\n  };\n\n  // On native, we try to pass the color down to children (like Text primitives)\n  // to mimic the CSS inheritance behavior of the web version.\n  const childrenWithProps = React.Children.map(children, (child) => {\n    if (React.isValidElement(child)) {\n      return React.cloneElement(child, {\n        color: child.props.color || color,\n        // Also pass size if child seems to be an icon that needs it\n        size: child.props.size || size,\n      });\n    }\n    return child;\n  });\n\n  return (\n    <View style={style} testID={dataTestId || testID}>\n      {childrenWithProps}\n    </View>\n  );\n};\n","import React from \"react\";\n// @ts-expect-error - this will be resolved at build time\nimport { Box } from \"@xsolla/xui-primitives\";\nimport { useResolvedTheme, type ThemeOverrideProps } from \"@xsolla/xui-core\";\nimport { Tooltip } from \"@xsolla/xui-tooltip\";\nimport { Avatar, AvatarProps } from \"./Avatar\";\n\ntype Theme = ReturnType<typeof useResolvedTheme>[\"theme\"];\n\n/** Item in the avatar group list */\nexport interface AvatarGroupItem {\n  /** Image source URL */\n  src?: string;\n  /** Initials to display when no image is provided */\n  initials?: string;\n  /** Tooltip text to display on hover */\n  tooltip?: string;\n  /** Whether to show a badge on the avatar */\n  badge?: boolean;\n  /** Number or text to display in the badge notification */\n  badgeCount?: React.ReactNode;\n  /** Icon to display in the badge */\n  badgeIcon?: React.ReactNode;\n  /** Color tone for the badge */\n  badgeTone?: AvatarProps[\"badgeTone\"];\n}\n\n/** Avatar background mode - preset colors, 'mixed' for cycling, or a theme function */\nexport type AvatarBackgroundMode =\n  | \"mixed\"\n  | \"brand\"\n  | \"brandExtra\"\n  | \"success\"\n  | \"warning\"\n  | \"alert\"\n  | \"neutral\"\n  | ((theme: Theme) => string);\n\nexport interface AvatarGroupProps extends ThemeOverrideProps {\n  /**\n   * List of avatars to display in the group.\n   * `tooltip` property is text to be displayed in the tooltip when hovering over the avatar.\n   */\n  list: AvatarGroupItem[];\n  /** Size of the avatars in the group */\n  size?: \"xxs\" | \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\";\n  /**\n   * Maximum number of slots rendered, including the \"+N\" overflow counter.\n   * When the list exceeds this, (maxVisible - 1) avatars are shown plus a \"+N\" indicator.\n   * When the list fits, all avatars are shown and no \"+N\" is rendered.\n   */\n  maxVisible?: number;\n  /**\n   * Controls the background color mode for avatars in the group.\n   * - 'mixed' (default): Avatars cycle through different colors\n   * - 'brand', 'brandExtra', 'success', 'warning', 'alert', 'neutral': Single color for all avatars\n   * - Theme function: A function that receives theme and returns any color from the design system.\n   *   Example: (theme) => theme.colors.core.link.link\n   */\n  avatarBackgroundMode?: AvatarBackgroundMode;\n  /** Accessible label for the avatar group. Defaults to \"Group of X users\". */\n  \"aria-label\"?: string;\n  testID?: string;\n}\n\nconst DEFAULT_MAX_VISIBLE = 6;\n\nexport const AvatarGroup: React.FC<AvatarGroupProps> = ({\n  list,\n  size = \"sm\",\n  maxVisible = DEFAULT_MAX_VISIBLE,\n  avatarBackgroundMode = \"mixed\",\n  \"aria-label\": ariaLabel,\n  testID,\n  themeMode,\n  themeProductContext,\n}) => {\n  const { theme } = useResolvedTheme({ themeMode, themeProductContext });\n\n  if (maxVisible < 1) {\n    console.warn(\n      `[AvatarGroup] \"maxVisible\" must be a positive number. Received ${maxVisible}, falling back to default (${DEFAULT_MAX_VISIBLE}).`\n    );\n  }\n  const effectiveMaxVisible = maxVisible < 1 ? DEFAULT_MAX_VISIBLE : maxVisible;\n\n  const totalCount = list.length;\n  const overflows = totalCount > effectiveMaxVisible;\n  const visibleCount = overflows ? effectiveMaxVisible - 1 : totalCount;\n  const visibleListItems = list.slice(0, visibleCount);\n  const remainingCount = totalCount - visibleCount;\n\n  // Overlap amount: 4px in Figma\n  const overlap = -4;\n\n  // Background colors for text/icon avatars (cycling through theme colors)\n  const mixedBackgrounds = [\n    theme.colors.background.alert.secondary,\n    theme.colors.background.warning.secondary,\n    theme.colors.background.brandExtra.secondary,\n    theme.colors.background.neutral.secondary,\n    theme.colors.background.brand.secondary,\n    theme.colors.background.success.secondary,\n    theme.colors.background.success.primary,\n  ];\n\n  const presetColors: Record<string, string> = {\n    brand: theme.colors.background.brand.secondary,\n    brandExtra: theme.colors.background.brandExtra.secondary,\n    success: theme.colors.background.success.secondary,\n    warning: theme.colors.background.warning.secondary,\n    alert: theme.colors.background.alert.secondary,\n    neutral: theme.colors.background.neutral.secondary,\n  };\n\n  const getBackgroundColor = (index: number): string => {\n    if (typeof avatarBackgroundMode === \"function\") {\n      return avatarBackgroundMode(theme);\n    }\n    if (avatarBackgroundMode === \"mixed\") {\n      return mixedBackgrounds[index % mixedBackgrounds.length];\n    }\n    return (\n      presetColors[avatarBackgroundMode] || theme.colors.background.secondary\n    );\n  };\n\n  const defaultAriaLabel =\n    totalCount === 1\n      ? \"1 user\"\n      : totalCount === visibleCount\n        ? `${totalCount} users`\n        : `${visibleCount} of ${totalCount} users`;\n\n  const renderAvatarWithTooltip = (\n    avatar: React.ReactNode,\n    tooltip: string | undefined,\n    key: number\n  ) => {\n    if (tooltip) {\n      return (\n        <Tooltip key={key} content={tooltip} placement=\"top\">\n          {avatar}\n        </Tooltip>\n      );\n    }\n    return avatar;\n  };\n\n  return (\n    <Box\n      testID={testID}\n      flexDirection=\"row\"\n      alignItems=\"center\"\n      role=\"group\"\n      aria-label={ariaLabel || defaultAriaLabel}\n    >\n      {visibleListItems.map((item, index) => {\n        const shouldApplyBackground = !item.src;\n        const backgroundColor = shouldApplyBackground\n          ? getBackgroundColor(index)\n          : undefined;\n\n        const avatar = (\n          <Box\n            key={index}\n            marginLeft={index === 0 ? 0 : overlap}\n            zIndex={totalCount - index}\n          >\n            <Avatar\n              src={item.src}\n              text={item.initials}\n              size={size}\n              backgroundColor={backgroundColor}\n              disableHover={true}\n              badge={item.badge}\n              badgeCount={item.badgeCount}\n              badgeIcon={item.badgeIcon}\n              badgeTone={item.badgeTone}\n              {...(item.tooltip ? { \"aria-label\": item.tooltip } : {})}\n            />\n          </Box>\n        );\n\n        return renderAvatarWithTooltip(avatar, item.tooltip, index);\n      })}\n\n      {remainingCount > 0 && (\n        <Box marginLeft={overlap} zIndex={0}>\n          <Avatar\n            size={size}\n            text={remainingCount > 99 ? \"99+\" : `+${remainingCount}`}\n            backgroundColor={theme.colors.background.secondary}\n            disableHover={true}\n            aria-label={`${remainingCount} more ${remainingCount === 1 ? \"user\" : \"users\"}`}\n          />\n        </Box>\n      )}\n    </Box>\n  );\n};\n"],"mappings":"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","names":["React","jsx","View","jsx","jsx","React","useResolvedTheme","jsx","jsxs","useResolvedTheme"]}