integration-card.tsx 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import OLBadge from '@/features/ui/components/ol/ol-badge'
  2. import MaterialIcon from '@/shared/components/material-icon'
  3. import { useTranslation } from 'react-i18next'
  4. export default function IntegrationCard({
  5. onClick,
  6. title,
  7. description,
  8. icon,
  9. showPaywallBadge,
  10. }: {
  11. onClick: () => void
  12. title: string
  13. description: string
  14. icon: React.ReactNode
  15. showPaywallBadge: boolean
  16. }) {
  17. const { t } = useTranslation()
  18. return (
  19. <button onClick={onClick} className="integrations-panel-card-button">
  20. <div className="integrations-panel-card-contents">
  21. {icon}
  22. <div className="integrations-panel-card-inner">
  23. <header className="integrations-panel-card-header">
  24. <div className="integrations-panel-card-title">{title}</div>
  25. {showPaywallBadge && (
  26. <OLBadge
  27. prepend={<MaterialIcon type="star" />}
  28. bg="light"
  29. className="integrations-panel-card-premium-badge"
  30. >
  31. {t('premium')}
  32. </OLBadge>
  33. )}
  34. </header>
  35. <p className="integrations-panel-card-description">{description}</p>
  36. </div>
  37. </div>
  38. </button>
  39. )
  40. }