{"version":3,"file":"index.cjs","sources":["../../../../../../packages/components/tag/style/index.ts"],"sourcesContent":["import type { CSSObject, FullToken } from '@antdv/theme';\nimport type { CSSProperties } from 'vue';\nimport { genComponentStyleHook, mergeToken, resetComponent } from '@antdv/theme';\nimport { genPresetColor } from '@antdv/theme/style/presetColor';\nimport { capitalize } from '@antdv/utils';\n\nexport interface ComponentToken {}\n\ninterface TagToken extends FullToken<'Tag'> {\n  tagFontSize: number\n  tagLineHeight: CSSProperties['lineHeight']\n  tagDefaultBg: string\n  tagDefaultColor: string\n  tagIconSize: number\n  tagPaddingHorizontal: number\n  tagBorderlessBg: string\n}\n\n// ============================== Styles ==============================\n\ntype CssVariableType = 'Success' | 'Info' | 'Error' | 'Warning';\n\nfunction genTagStatusStyle(token: TagToken, status: 'success' | 'processing' | 'error' | 'warning', cssVariableType: CssVariableType): CSSObject {\n  const capitalizedCssVariableType = capitalize(cssVariableType);\n  return {\n    [`${token.componentCls}-${status}`]: {\n      color: token[`color${cssVariableType}`],\n      background: token[`color${capitalizedCssVariableType}Bg`],\n      borderColor: token[`color${capitalizedCssVariableType}Border`],\n      [`&${token.componentCls}-borderless`]: {\n        borderColor: 'transparent',\n      },\n    },\n  };\n}\n\nfunction genPresetStyle(token: TagToken) {\n  return genPresetColor(token, (colorKey, { textColor, lightBorderColor, lightColor, darkColor }) => ({\n    [`${token.componentCls}-${colorKey}`]: {\n      'color': textColor,\n      'background': lightColor,\n      'borderColor': lightBorderColor,\n\n      // Inverse color\n      '&-inverse': {\n        color: token.colorTextLightSolid,\n        background: darkColor,\n        borderColor: darkColor,\n      },\n      [`&${token.componentCls}-borderless`]: {\n        borderColor: 'transparent',\n      },\n    },\n  }));\n}\n\nfunction genBaseStyle(token: TagToken): CSSObject {\n  const { paddingXXS, lineWidth, tagPaddingHorizontal, componentCls } = token;\n  const paddingInline = tagPaddingHorizontal - lineWidth;\n  const iconMarginInline = paddingXXS - lineWidth;\n\n  return {\n    // Result\n    [componentCls]: {\n      ...resetComponent(token),\n      'display': 'inline-block',\n      'height': 'auto',\n      'marginInlineEnd': token.marginXS,\n      paddingInline,\n      'fontSize': token.tagFontSize,\n      'lineHeight': `${token.tagLineHeight}px`,\n      'whiteSpace': 'nowrap',\n      'background': token.tagDefaultBg,\n      'border': `${token.lineWidth}px ${token.lineType} ${token.colorBorder}`,\n      'borderRadius': token.borderRadiusSM,\n      'opacity': 1,\n      'transition': `all ${token.motionDurationMid}`,\n      'textAlign': 'start',\n\n      // RTL\n      [`&${componentCls}-rtl`]: {\n        direction: 'rtl',\n      },\n\n      '&, a, a:hover': {\n        color: token.tagDefaultColor,\n      },\n\n      [`${componentCls}-close-icon`]: {\n        'marginInlineStart': iconMarginInline,\n        'color': token.colorTextDescription,\n        'fontSize': token.tagIconSize,\n        'cursor': 'pointer',\n        'transition': `all ${token.motionDurationMid}`,\n\n        '&:hover': {\n          color: token.colorTextHeading,\n        },\n      },\n\n      [`&${componentCls}-has-color`]: {\n        borderColor: 'transparent',\n\n        [`&, a, a:hover, ${token.iconCls}-close, ${token.iconCls}-close:hover`]: {\n          color: token.colorTextLightSolid,\n        },\n      },\n\n      '&-checkable': {\n        'backgroundColor': 'transparent',\n        'borderColor': 'transparent',\n        'cursor': 'pointer',\n\n        [`&:not(${componentCls}-checkable-checked):hover`]: {\n          color: token.colorPrimary,\n          backgroundColor: token.colorFillSecondary,\n        },\n\n        '&:active, &-checked': {\n          color: token.colorTextLightSolid,\n        },\n\n        '&-checked': {\n          'backgroundColor': token.colorPrimary,\n          '&:hover': {\n            backgroundColor: token.colorPrimaryHover,\n          },\n        },\n\n        '&:active': {\n          backgroundColor: token.colorPrimaryActive,\n        },\n      },\n\n      '&-hidden': {\n        display: 'none',\n      },\n\n      // To ensure that a space will be placed between character and `Icon`.\n      [`> ${token.iconCls} + span, > span + ${token.iconCls}`]: {\n        marginInlineStart: paddingInline,\n      },\n      [`${componentCls}-borderless`]: {\n        borderColor: 'transparent',\n        background: token.tagBorderlessBg,\n      },\n    },\n  };\n}\n\n// ============================== Export ==============================\nexport default genComponentStyleHook('Tag', (token) => {\n  const { fontSize, lineHeight, lineWidth, fontSizeIcon } = token;\n  const tagHeight = Math.round(fontSize * lineHeight);\n\n  const tagFontSize = token.fontSizeSM;\n  const tagLineHeight = tagHeight - lineWidth * 2;\n  const tagDefaultBg = token.colorFillAlter;\n  const tagDefaultColor = token.colorText;\n\n  const tagToken = mergeToken<TagToken>(token, {\n    tagFontSize,\n    tagLineHeight,\n    tagDefaultBg,\n    tagDefaultColor,\n    tagIconSize: fontSizeIcon - 2 * lineWidth, // Tag icon is much more smaller\n    tagPaddingHorizontal: 8, // Fixed padding.\n    tagBorderlessBg: token.colorFillTertiary,\n  });\n\n  return [\n    genBaseStyle(tagToken),\n    genPresetStyle(tagToken),\n    genTagStatusStyle(tagToken, 'success', 'Success'),\n    genTagStatusStyle(tagToken, 'processing', 'Info'),\n    genTagStatusStyle(tagToken, 'error', 'Error'),\n    genTagStatusStyle(tagToken, 'warning', 'Warning'),\n  ];\n});\n"],"names":["capitalize","genPresetColor","resetComponent","genComponentStyleHook","mergeToken"],"mappings":"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"}