{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/avatar/style/index.ts"],"sourcesContent":["import type { CSSObject, FullToken, GenerateStyle } from '@antdv/theme';\nimport { genComponentStyleHook, mergeToken, resetComponent } from '@antdv/theme';\n\nexport interface ComponentToken {\n  /**\n   * @desc 头像背景色\n   * @descEN Background color of Avatar\n   */\n  containerSize: number\n  /**\n   * @desc 大号头像尺寸\n   * @descEN Size of large Avatar\n   */\n  containerSizeLG: number\n  /**\n   * @desc 小号头像尺寸\n   * @descEN Size of small Avatar\n   */\n  containerSizeSM: number\n  /**\n   * @desc 头像文字大小\n   * @descEN Font size of Avatar\n   */\n  textFontSize: number\n  /**\n   * @desc 大号头像文字大小\n   * @descEN Font size of large Avatar\n   */\n  textFontSizeLG: number\n  /**\n   * @desc 小号头像文字大小\n   * @descEN Font size of small Avatar\n   */\n  textFontSizeSM: number\n  /**\n   * @desc 头像组间距\n   * @descEN Spacing between avatars in a group\n   */\n  groupSpace: number\n  /**\n   * @desc 头像组重叠宽度\n   * @descEN Overlapping of avatars in a group\n   */\n  groupOverlapping: number\n  /**\n   * @desc 头像组边框颜色\n   * @descEN Border color of avatars in a group\n   */\n  groupBorderColor: string\n}\n\ntype AvatarToken = FullToken<'Avatar'> & {\n  avatarBg: string\n  avatarColor: string\n  avatarBgColor: string\n};\n\nconst genBaseStyle: GenerateStyle<AvatarToken> = (token) => {\n  const {\n    antCls,\n    componentCls,\n    iconCls,\n    avatarBg,\n    avatarColor,\n    containerSize,\n    containerSizeLG,\n    containerSizeSM,\n    textFontSize,\n    textFontSizeLG,\n    textFontSizeSM,\n    borderRadius,\n    borderRadiusLG,\n    borderRadiusSM,\n    lineWidth,\n    lineType,\n  } = token;\n\n  // Avatar size style\n  const avatarSizeStyle = (size: number, fontSize: number, radius: number): CSSObject => ({\n    width: size,\n    height: size,\n    lineHeight: `${size - lineWidth * 2}px`,\n    borderRadius: '50%',\n\n    [`&${componentCls}-square`]: {\n      borderRadius: radius,\n    },\n\n    [`${componentCls}-string`]: {\n      position: 'absolute',\n      left: {\n        _skip_check_: true,\n        value: '50%',\n      },\n      transformOrigin: '0 center',\n    },\n\n    [`&${componentCls}-icon`]: {\n      fontSize,\n      [`> ${iconCls}`]: {\n        margin: 0,\n      },\n    },\n  });\n\n  return {\n    [componentCls]: {\n      ...resetComponent(token),\n      'position': 'relative',\n      'display': 'inline-block',\n      'overflow': 'hidden',\n      'color': avatarColor,\n      'whiteSpace': 'nowrap',\n      'textAlign': 'center',\n      'verticalAlign': 'middle',\n      'background': avatarBg,\n      'border': `${lineWidth}px ${lineType} transparent`,\n\n      '&-image': {\n        background: 'transparent',\n      },\n\n      [`${antCls}-image-img`]: {\n        display: 'block',\n      },\n\n      ...avatarSizeStyle(containerSize, textFontSize, borderRadius),\n\n      '&-lg': {\n        ...avatarSizeStyle(containerSizeLG, textFontSizeLG, borderRadiusLG),\n      },\n\n      '&-sm': {\n        ...avatarSizeStyle(containerSizeSM, textFontSizeSM, borderRadiusSM),\n      },\n\n      '> img': {\n        display: 'block',\n        width: '100%',\n        height: '100%',\n        objectFit: 'cover',\n      },\n    },\n  };\n};\n\nconst genGroupStyle: GenerateStyle<AvatarToken> = (token) => {\n  const { componentCls, groupBorderColor, groupOverlapping, groupSpace } = token;\n\n  return {\n    [`${componentCls}-group`]: {\n      'display': 'inline-flex',\n\n      [`${componentCls}`]: {\n        borderColor: groupBorderColor,\n      },\n\n      '> *:not(:first-child)': {\n        marginInlineStart: groupOverlapping,\n      },\n    },\n    [`${componentCls}-group-popover`]: {\n      [`${componentCls} + ${componentCls}`]: {\n        marginInlineStart: groupSpace,\n      },\n    },\n  };\n};\n\nexport default genComponentStyleHook(\n  'Avatar',\n  (token) => {\n    const { colorTextLightSolid, colorTextPlaceholder } = token;\n    const avatarToken = mergeToken<AvatarToken>(token, {\n      avatarBg: colorTextPlaceholder,\n      avatarColor: colorTextLightSolid,\n    });\n    return [genBaseStyle(avatarToken), genGroupStyle(avatarToken)];\n  },\n  (token) => {\n    const {\n      controlHeight,\n      controlHeightLG,\n      controlHeightSM,\n\n      fontSize,\n      fontSizeLG,\n      fontSizeXL,\n      fontSizeHeading3,\n\n      marginXS,\n      marginXXS,\n      colorBorderBg,\n    } = token;\n    return {\n      containerSize: controlHeight,\n      containerSizeLG: controlHeightLG,\n      containerSizeSM: controlHeightSM,\n\n      textFontSize: Math.round((fontSizeLG + fontSizeXL) / 2),\n      textFontSizeLG: fontSizeHeading3,\n      textFontSizeSM: fontSize,\n\n      groupSpace: marginXXS,\n      groupOverlapping: -marginXS,\n      groupBorderColor: colorBorderBg,\n    };\n  },\n);\n"],"names":["mergeToken"],"mappings":"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"}