info-modal.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import React from 'react'
  2. import Modal from '@/app/components/base/modal'
  3. import AppIcon from '@/app/components/base/app-icon'
  4. import type { SiteInfo } from '@/models/share'
  5. import { appDefaultIconBackground } from '@/config'
  6. import cn from 'classnames'
  7. type Props = {
  8. data?: SiteInfo
  9. isShow: boolean
  10. onClose: () => void
  11. }
  12. const InfoModal = ({
  13. isShow,
  14. onClose,
  15. data,
  16. }: Props) => {
  17. return (
  18. <Modal
  19. isShow={isShow}
  20. onClose={onClose}
  21. className='!p-0 min-w-[400px] max-w-[400px]'
  22. closable
  23. >
  24. <div className={cn('pt-10 px-4 pb-8 flex flex-col items-center gap-4')}>
  25. <AppIcon
  26. size='xxl'
  27. iconType={data?.icon_type}
  28. icon={data?.icon}
  29. background={data?.icon_background || appDefaultIconBackground}
  30. imageUrl={data?.icon_url}
  31. />
  32. <div className='text-text-secondary system-xl-semibold'>{data?.title}</div>
  33. <div className='text-text-tertiary system-xs-regular'>
  34. {/* copyright */}
  35. {data?.copyright && (
  36. <div>© {(new Date()).getFullYear()} {data?.copyright}</div>
  37. )}
  38. {data?.custom_disclaimer && (
  39. <div className='mt-2'>{data.custom_disclaimer}</div>
  40. )}
  41. </div>
  42. </div>
  43. </Modal>
  44. )
  45. }
  46. export default InfoModal