ClientLibrary.tsx 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import { BookOpen, Github } from 'lucide-react'
  2. import { Badge, Button } from 'ui'
  3. import { BASE_PATH } from '@/lib/constants'
  4. interface ClientLibraryProps {
  5. language: string
  6. officialSupport?: boolean
  7. docsUrl?: string
  8. gitUrl?: string
  9. altIconName?: string
  10. }
  11. export const ClientLibrary = ({
  12. language,
  13. officialSupport,
  14. docsUrl,
  15. gitUrl,
  16. altIconName,
  17. }: ClientLibraryProps) => {
  18. return (
  19. <div className="flex items-start md:space-x-6">
  20. <img
  21. src={`${BASE_PATH}/img/libraries/${
  22. altIconName ? `${altIconName}-icon.svg` : `${language.toLowerCase()}-icon.svg`
  23. }`}
  24. alt={`${language} logo`}
  25. width="21"
  26. className="hidden md:block"
  27. />
  28. <div className="space-y-4">
  29. <div className="flex items-center gap-2">
  30. <img
  31. src={`${BASE_PATH}/img/libraries/${
  32. altIconName ? `${altIconName}-icon.svg` : `${language.toLowerCase()}-icon.svg`
  33. }`}
  34. alt={`${language} logo`}
  35. width="21"
  36. className="block md:hidden"
  37. />
  38. <h5 className="flex items-center gap-2 text-base text-foreground">
  39. {language} {!officialSupport && <Badge variant="success">Community</Badge>}
  40. </h5>
  41. </div>
  42. <div className="flex gap-2">
  43. {docsUrl && (
  44. <a href={docsUrl} target="_blank" rel="noreferrer">
  45. <Button icon={<BookOpen />} type="default">
  46. Docs
  47. </Button>
  48. </a>
  49. )}
  50. {gitUrl && (
  51. <a href={gitUrl} target="_blank" rel="noreferrer">
  52. <Button icon={<Github />} type="default">
  53. <span className="hidden md:inline">See</span> GitHub
  54. </Button>
  55. </a>
  56. )}
  57. </div>
  58. </div>
  59. </div>
  60. )
  61. }