@chatui/core
Version:
The React library for Chatbot UI
93 lines • 3.41 kB
JavaScript
import React from 'react';
import clsx from 'clsx';
import { Price } from '../Price';
import { Button } from '../Button';
import { Flex, FlexItem } from '../Flex';
import { Text } from '../Text';
import { Image } from '../Image';
import { Ribbon } from '../Ribbon';
import { formatExpireTime } from '../../utils/date';
var statusLabelMap = {
normal: '',
nearExpired: '快失效',
expired: '已过期',
used: '已使用'
};
export var RedPacket = function RedPacket(props) {
var className = props.className,
value = props.value,
condition = props.condition,
name = props.name,
endAt = props.endAt,
dateDesc = props.dateDesc,
desc = props.desc,
_props$status = props.status,
status = _props$status === void 0 ? 'normal' : _props$status,
_props$variant = props.variant,
variant = _props$variant === void 0 ? 'redPacket' : _props$variant,
tag = props.tag,
image = props.image,
_props$inList = props.inList,
inList = _props$inList === void 0 ? false : _props$inList,
_props$btnText = props.btnText,
btnText = _props$btnText === void 0 ? '查看' : _props$btnText,
onClick = props.onClick;
var statusLabel = statusLabelMap[status] || '';
return /*#__PURE__*/React.createElement(Flex, {
className: clsx('RedPacket', className),
"data-variant": variant,
"data-status": status,
"data-in-list": inList,
onClick: inList ? undefined : onClick
}, /*#__PURE__*/React.createElement(Flex, {
className: "RedPacket-object",
center: true,
direction: "column"
}, image ? /*#__PURE__*/React.createElement(Image, {
className: "RedPacket-img",
src: image,
width: "70",
height: "53"
}) : /*#__PURE__*/React.createElement(React.Fragment, null, value && /*#__PURE__*/React.createElement(Price, {
className: "RedPacket-value",
price: value,
currency: "\xA5",
autoFit: true
}), /*#__PURE__*/React.createElement(Text, {
className: "RedPacket-condition",
truncate: true
}, condition)), /*#__PURE__*/React.createElement("svg", {
className: "RedPacket-arc",
width: "12",
height: "80",
viewBox: "0 0 24 160",
fill: "none"
}, /*#__PURE__*/React.createElement("path", {
fill: "var(--red-packet-arc-color)",
d: "M0 160h24V0H.4C6.77 20.445 10.7 48.462 10.7 79.369 10.701 110.917 6.607 139.454 0 160"
}))), /*#__PURE__*/React.createElement(FlexItem, {
className: "RedPacket-main"
}, /*#__PURE__*/React.createElement(Text, {
className: "RedPacket-name",
truncate: true
}, name), dateDesc ? /*#__PURE__*/React.createElement(Text, {
className: "RedPacket-desc",
truncate: true
}, dateDesc) : endAt ? /*#__PURE__*/React.createElement(Text, {
className: "RedPacket-desc",
truncate: true
}, formatExpireTime(endAt)) : null, /*#__PURE__*/React.createElement(Text, {
className: "RedPacket-desc",
truncate: true
}, desc)), onClick && /*#__PURE__*/React.createElement(Flex, {
className: "RedPacket-actions",
center: true
}, /*#__PURE__*/React.createElement(Button, {
className: "RedPacket-btn",
onClick: inList ? onClick : undefined
}, btnText)), statusLabel && /*#__PURE__*/React.createElement(Ribbon, {
color: ['expired', 'used'].includes(status) ? 'gray' : 'primary',
position: "right",
size: "sm"
}, statusLabel), tag && /*#__PURE__*/React.createElement(Ribbon, null, tag));
};