12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- import React, { type FC } from 'react'
- import { RiFileList2Line } from '@remixicon/react'
- import { useTranslation } from 'react-i18next'
- type IEmptyProps = {
- onClearFilter: () => void
- }
- const EmptyCard = React.memo(() => {
- return (
- <div className='w-full h-32 rounded-xl opacity-30 bg-background-section-burn shrink-0' />
- )
- })
- EmptyCard.displayName = 'EmptyCard'
- type LineProps = {
- className?: string
- }
- const Line = React.memo(({
- className,
- }: LineProps) => {
- return (
- <svg xmlns="http://www.w3.org/2000/svg" width="2" height="241" viewBox="0 0 2 241" fill="none" className={className}>
- <path d="M1 0.5L1 240.5" stroke="url(#paint0_linear_1989_74474)"/>
- <defs>
- <linearGradient id="paint0_linear_1989_74474" x1="-7.99584" y1="240.5" x2="-7.88094" y2="0.50004" gradientUnits="userSpaceOnUse">
- <stop stopColor="white" stopOpacity="0.01"/>
- <stop offset="0.503965" stopColor="#101828" stopOpacity="0.08"/>
- <stop offset="1" stopColor="white" stopOpacity="0.01"/>
- </linearGradient>
- </defs>
- </svg>
- )
- })
- Line.displayName = 'Line'
- const Empty: FC<IEmptyProps> = ({
- onClearFilter,
- }) => {
- const { t } = useTranslation()
- return (
- <div className={'h-full relative flex items-center justify-center z-0'}>
- <div className='flex flex-col items-center'>
- <div className='relative z-10 flex items-center justify-center w-14 h-14 border border-divider-subtle bg-components-card-bg rounded-xl shadow-lg shadow-shadow-shadow-5'>
- <RiFileList2Line className='w-6 h-6 text-text-secondary' />
- <Line className='absolute -right-[1px] top-1/2 -translate-y-1/2' />
- <Line className='absolute -left-[1px] top-1/2 -translate-y-1/2' />
- <Line className='absolute top-0 left-1/2 -translate-x-1/2 -translate-y-1/2 rotate-90' />
- <Line className='absolute top-full left-1/2 -translate-x-1/2 -translate-y-1/2 rotate-90' />
- </div>
- <div className='text-text-tertiary system-md-regular mt-3'>
- {t('datasetDocuments.segment.empty')}
- </div>
- <button
- type='button'
- className='text-text-accent system-sm-medium mt-1'
- onClick={onClearFilter}
- >
- {t('datasetDocuments.segment.clearFilter')}
- </button>
- </div>
- <div className='h-full w-full absolute top-0 left-0 flex flex-col gap-y-3 -z-20 overflow-hidden'>
- {
- Array.from({ length: 10 }).map((_, i) => (
- <EmptyCard key={i} />
- ))
- }
- </div>
- <div className='h-full w-full absolute top-0 left-0 bg-dataset-chunk-list-mask-bg -z-10' />
- </div>
- )
- }
- export default React.memo(Empty)
|