UNPKG

@lobehub/ui

Version:

Lobe UI is an open-source UI component library for building AIGC web apps

1 lines • 3.75 kB
{"version":3,"file":"Badge.mjs","names":[],"sources":["../../../src/base-ui/Badge/Badge.tsx"],"sourcesContent":["'use client';\n\nimport { cx } from 'antd-style';\nimport { memo, type ReactNode } from 'react';\n\nimport { pillSize, statusColor, styles } from './style';\nimport type { BadgeProps } from './type';\n\nconst Badge = memo<BadgeProps>(\n ({\n children,\n className,\n color,\n count,\n dot = false,\n offset,\n overflowCount = 99,\n ref,\n showZero = false,\n size = 'default',\n status,\n style,\n text,\n ...rest\n }) => {\n const isStatusMode = children == null && (status !== undefined || text !== undefined);\n\n if (isStatusMode) {\n const dotColor = color ?? statusColor[status ?? 'default'];\n\n return (\n <span className={cx(styles.statusRoot, className)} ref={ref} style={style} {...rest}>\n <span\n className={cx(styles.statusDot, status === 'processing' && styles.statusDotProcessing)}\n style={{ background: dotColor, color: dotColor }}\n />\n {text && <span className={styles.statusText}>{text}</span>}\n </span>\n );\n }\n\n let content: ReactNode = null;\n let renderPill = dot;\n\n if (!dot) {\n if (typeof count === 'number') {\n if (count !== 0 || showZero) {\n renderPill = true;\n content = count > overflowCount ? `${overflowCount}+` : count;\n }\n } else if (count != null) {\n renderPill = true;\n content = count;\n }\n }\n\n const pillStyle = {\n background: color,\n transform: offset ? `translate(${offset[0]}px, ${offset[1]}px)` : undefined,\n };\n\n if (children == null) {\n if (!renderPill) return null;\n\n return (\n <span\n className={cx(pillSize({ size }), dot && styles.pillDot, className)}\n ref={ref}\n style={{ ...pillStyle, ...style }}\n {...rest}\n >\n {!dot && content}\n </span>\n );\n }\n\n return (\n <span className={cx(styles.wrapper, className)} ref={ref} style={style} {...rest}>\n {children}\n {renderPill && (\n <span\n className={cx(pillSize({ size }), styles.pillAbsolute, dot && styles.pillDot)}\n style={pillStyle}\n >\n {!dot && content}\n </span>\n )}\n </span>\n );\n },\n);\n\nBadge.displayName = 'Badge';\n\nexport default Badge;\n"],"mappings":";;;;;;AAQA,MAAM,QAAQ,MACX,EACC,UACA,WACA,OACA,OACA,MAAM,OACN,QACA,gBAAgB,IAChB,KACA,WAAW,OACX,OAAO,WACP,QACA,OACA,MACA,GAAG,WACC;CAGJ,IAFqB,YAAY,SAAS,WAAW,KAAA,KAAa,SAAS,KAAA,IAEzD;EAChB,MAAM,WAAW,SAAS,YAAY,UAAU;EAEhD,OACE,qBAAC,QAAD;GAAM,WAAW,GAAG,OAAO,YAAY,SAAS;GAAQ;GAAY;GAAO,GAAI;GAA/E,UAAA,CACE,oBAAC,QAAD;IACE,WAAW,GAAG,OAAO,WAAW,WAAW,gBAAgB,OAAO,mBAAmB;IACrF,OAAO;KAAE,YAAY;KAAU,OAAO;IAAS;GAChD,CAAA,GACA,QAAQ,oBAAC,QAAD;IAAM,WAAW,OAAO;IAAa,UAAA;GAAW,CAAA,CACrD;;CAEV;CAEA,IAAI,UAAqB;CACzB,IAAI,aAAa;CAEjB,IAAI,CAAC,KAAK;EACR,IAAI,OAAO,UAAU,UACf;OAAA,UAAU,KAAK,UAAU;IAC3B,aAAa;IACb,UAAU,QAAQ,gBAAgB,GAAG,cAAc,KAAK;GAC1D;SACK,IAAI,SAAS,MAAM;GACxB,aAAa;GACb,UAAU;EACZ;CACF;CAEA,MAAM,YAAY;EAChB,YAAY;EACZ,WAAW,SAAS,aAAa,OAAO,GAAG,MAAM,OAAO,GAAG,OAAO,KAAA;CACpE;CAEA,IAAI,YAAY,MAAM;EACpB,IAAI,CAAC,YAAY,OAAO;EAExB,OACE,oBAAC,QAAD;GACE,WAAW,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,OAAO,OAAO,SAAS,SAAS;GAC7D;GACL,OAAO;IAAE,GAAG;IAAW,GAAG;GAAM;GAChC,GAAI;GAEH,UAAA,CAAC,OAAO;EACL,CAAA;CAEV;CAEA,OACE,qBAAC,QAAD;EAAM,WAAW,GAAG,OAAO,SAAS,SAAS;EAAQ;EAAY;EAAO,GAAI;EAA5E,UAAA,CACG,UACA,cACC,oBAAC,QAAD;GACE,WAAW,GAAG,SAAS,EAAE,KAAK,CAAC,GAAG,OAAO,cAAc,OAAO,OAAO,OAAO;GAC5E,OAAO;GAEN,UAAA,CAAC,OAAO;EACL,CAAA,CAEJ;;AAEV,CACF;AAEA,MAAM,cAAc"}