|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react'; |
|
|
import { Card, Collapse, Empty } from '@douyinfe/semi-ui'; |
|
|
import { HelpCircle } from 'lucide-react'; |
|
|
import { IconPlus, IconMinus } from '@douyinfe/semi-icons'; |
|
|
import { marked } from 'marked'; |
|
|
import { |
|
|
IllustrationConstruction, |
|
|
IllustrationConstructionDark, |
|
|
} from '@douyinfe/semi-illustrations'; |
|
|
import ScrollableContainer from '../common/ui/ScrollableContainer'; |
|
|
|
|
|
const FaqPanel = ({ |
|
|
faqData, |
|
|
CARD_PROPS, |
|
|
FLEX_CENTER_GAP2, |
|
|
ILLUSTRATION_SIZE, |
|
|
t, |
|
|
}) => { |
|
|
return ( |
|
|
<Card |
|
|
{...CARD_PROPS} |
|
|
className='shadow-sm !rounded-2xl lg:col-span-1' |
|
|
title={ |
|
|
<div className={FLEX_CENTER_GAP2}> |
|
|
<HelpCircle size={16} /> |
|
|
{t('常见问答')} |
|
|
</div> |
|
|
} |
|
|
bodyStyle={{ padding: 0 }} |
|
|
> |
|
|
<ScrollableContainer maxHeight='24rem'> |
|
|
{faqData.length > 0 ? ( |
|
|
<Collapse |
|
|
accordion |
|
|
expandIcon={<IconPlus />} |
|
|
collapseIcon={<IconMinus />} |
|
|
> |
|
|
{faqData.map((item, index) => ( |
|
|
<Collapse.Panel |
|
|
key={index} |
|
|
header={item.question} |
|
|
itemKey={index.toString()} |
|
|
> |
|
|
<div |
|
|
dangerouslySetInnerHTML={{ |
|
|
__html: marked.parse(item.answer || ''), |
|
|
}} |
|
|
/> |
|
|
</Collapse.Panel> |
|
|
))} |
|
|
</Collapse> |
|
|
) : ( |
|
|
<div className='flex justify-center items-center py-8'> |
|
|
<Empty |
|
|
image={<IllustrationConstruction style={ILLUSTRATION_SIZE} />} |
|
|
darkModeImage={ |
|
|
<IllustrationConstructionDark style={ILLUSTRATION_SIZE} /> |
|
|
} |
|
|
title={t('暂无常见问答')} |
|
|
description={t('请联系管理员在系统设置中配置常见问答')} |
|
|
/> |
|
|
</div> |
|
|
)} |
|
|
</ScrollableContainer> |
|
|
</Card> |
|
|
); |
|
|
}; |
|
|
|
|
|
export default FaqPanel; |
|
|
|