@lobehub/ui
Version:
Lobe UI is an open-source UI component library for building AIGC web apps
1 lines • 5.13 kB
Source Map (JSON)
{"version":3,"file":"Tag.mjs","names":["Tag","AntTag"],"sources":["../../src/Tag/Tag.tsx"],"sourcesContent":["'use client';\n\nimport { Tag as AntTag } from 'antd';\nimport { cssVar, cx } from 'antd-style';\nimport { type FC, useMemo } from 'react';\n\nimport { colorsPreset, colorsPresetSystem, presetColors, presetSystemColors } from '@/Tag/utils';\nimport { safeReadableColor } from '@/utils/safeReadableColor';\n\nimport { variants } from './styles';\nimport type { TagProps } from './type';\n\nconst Tag: FC<TagProps> = ({\n className,\n ref,\n shape = 'normal',\n size = 'middle',\n color,\n variant = 'filled',\n children,\n onClick,\n style,\n ...rest\n}) => {\n const colors = useMemo(() => {\n const resolveActualColor = (colorValue?: string) => {\n if (!colorValue || !colorValue.startsWith('var(')) return colorValue;\n if (typeof window === 'undefined') return colorValue;\n\n const matched = colorValue.match(/var\\((--[^,\\s)]+)/);\n if (!matched?.[1]) return colorValue;\n\n const resolved = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue(matched[1])\n .trim();\n\n return resolved || colorValue;\n };\n\n let textColor = cssVar.colorTextSecondary;\n let backgroundColor;\n let borderColor;\n const isBorderless = variant === 'borderless';\n const isFilled = variant === 'filled';\n const isSolid = variant === 'solid';\n const isPresetColor = color && presetColors.includes(color);\n const isPresetSystemColors = color && presetSystemColors.has(color);\n const isHexColor = color && color.startsWith('#');\n\n if (isPresetColor) {\n const solidBgColor = colorsPreset(color);\n textColor = isSolid\n ? safeReadableColor(resolveActualColor(solidBgColor) || solidBgColor)\n : colorsPreset(color, 'active');\n backgroundColor = isSolid\n ? solidBgColor\n : isBorderless\n ? 'transparent'\n : colorsPreset(color, 'fillTertiary');\n borderColor = isSolid\n ? solidBgColor\n : colorsPreset(color, isFilled ? 'fillQuaternary' : 'fillTertiary');\n }\n if (isPresetSystemColors) {\n const solidBgColor = colorsPresetSystem(color);\n textColor = isSolid\n ? safeReadableColor(resolveActualColor(solidBgColor) || solidBgColor)\n : colorsPresetSystem(color);\n backgroundColor = isSolid\n ? solidBgColor\n : isBorderless\n ? 'transparent'\n : colorsPresetSystem(color, 'fillTertiary');\n borderColor = isSolid\n ? solidBgColor\n : colorsPresetSystem(color, isFilled ? 'fillQuaternary' : 'fillTertiary');\n }\n if (isHexColor) {\n textColor = isSolid ? safeReadableColor(color) : cssVar.colorBgLayout;\n backgroundColor = isSolid ? color : isBorderless ? 'transparent' : color;\n borderColor = isSolid ? color : borderColor;\n }\n\n return {\n backgroundColor,\n borderColor,\n textColor,\n };\n }, [color, variant]);\n\n return (\n <AntTag\n className={cx(variants({ shape, size, variant: variant as any }), className)}\n color={color}\n ref={ref}\n variant={variant === 'borderless' ? 'outlined' : variant === 'solid' ? 'filled' : variant}\n style={{\n background: colors?.backgroundColor,\n borderColor: colors?.borderColor,\n color: colors?.textColor,\n cursor: onClick ? 'pointer' : undefined,\n ...style,\n }}\n onClick={onClick}\n {...rest}\n >\n {children}\n </AntTag>\n );\n};\n\nTag.displayName = 'Tag';\n\nexport default Tag;\n"],"mappings":";;;;;;;;;AAYA,MAAMA,SAAqB,EACzB,WACA,KACA,QAAQ,UACR,OAAO,UACP,OACA,UAAU,UACV,UACA,SACA,OACA,GAAG,WACC;CACJ,MAAM,SAAS,cAAc;EAC3B,MAAM,sBAAsB,eAAwB;AAClD,OAAI,CAAC,cAAc,CAAC,WAAW,WAAW,OAAO,CAAE,QAAO;AAC1D,OAAI,OAAO,WAAW,YAAa,QAAO;GAE1C,MAAM,UAAU,WAAW,MAAM,oBAAoB;AACrD,OAAI,CAAC,UAAU,GAAI,QAAO;AAO1B,UALiB,OACd,iBAAiB,SAAS,gBAAgB,CAC1C,iBAAiB,QAAQ,GAAG,CAC5B,MAEY,IAAI;;EAGrB,IAAI,YAAY,OAAO;EACvB,IAAI;EACJ,IAAI;EACJ,MAAM,eAAe,YAAY;EACjC,MAAM,WAAW,YAAY;EAC7B,MAAM,UAAU,YAAY;EAC5B,MAAM,gBAAgB,SAAS,aAAa,SAAS,MAAM;EAC3D,MAAM,uBAAuB,SAAS,mBAAmB,IAAI,MAAM;EACnE,MAAM,aAAa,SAAS,MAAM,WAAW,IAAI;AAEjD,MAAI,eAAe;GACjB,MAAM,eAAe,aAAa,MAAM;AACxC,eAAY,UACR,kBAAkB,mBAAmB,aAAa,IAAI,aAAa,GACnE,aAAa,OAAO,SAAS;AACjC,qBAAkB,UACd,eACA,eACE,gBACA,aAAa,OAAO,eAAe;AACzC,iBAAc,UACV,eACA,aAAa,OAAO,WAAW,mBAAmB,eAAe;;AAEvE,MAAI,sBAAsB;GACxB,MAAM,eAAe,mBAAmB,MAAM;AAC9C,eAAY,UACR,kBAAkB,mBAAmB,aAAa,IAAI,aAAa,GACnE,mBAAmB,MAAM;AAC7B,qBAAkB,UACd,eACA,eACE,gBACA,mBAAmB,OAAO,eAAe;AAC/C,iBAAc,UACV,eACA,mBAAmB,OAAO,WAAW,mBAAmB,eAAe;;AAE7E,MAAI,YAAY;AACd,eAAY,UAAU,kBAAkB,MAAM,GAAG,OAAO;AACxD,qBAAkB,UAAU,QAAQ,eAAe,gBAAgB;AACnE,iBAAc,UAAU,QAAQ;;AAGlC,SAAO;GACL;GACA;GACA;GACD;IACA,CAAC,OAAO,QAAQ,CAAC;AAEpB,QACE,oBAACC,KAAD;EACE,WAAW,GAAG,SAAS;GAAE;GAAO;GAAe;GAAgB,CAAC,EAAE,UAAU;EACrE;EACF;EACL,SAAS,YAAY,eAAe,aAAa,YAAY,UAAU,WAAW;EAClF,OAAO;GACL,YAAY,QAAQ;GACpB,aAAa,QAAQ;GACrB,OAAO,QAAQ;GACf,QAAQ,UAAU,YAAY,KAAA;GAC9B,GAAG;GACJ;EACQ;EACT,GAAI;EAEH;EACM,CAAA;;AAIb,MAAI,cAAc"}