AppStoreTile.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. import { Tag, TagLabel } from '@chakra-ui/react';
  2. import Link from 'next/link';
  3. import React from 'react';
  4. import AppLogo from '../../../components/AppLogo/AppLogo';
  5. import { AppCategoriesEnum } from '../../../generated/graphql';
  6. import { colorSchemeForCategory, limitText } from '../helpers/table.helpers';
  7. type App = {
  8. id: string;
  9. name: string;
  10. categories: string[];
  11. short_desc: string;
  12. image: string;
  13. };
  14. const AppStoreTile: React.FC<{ app: App }> = ({ app }) => {
  15. return (
  16. <Link href={`/app-store/${app.id}`} passHref>
  17. <div key={app.id} className="p-2 rounded-md app-store-tile flex items-center group">
  18. <AppLogo src={app.image} className="group-hover:scale-105 transition-all" />
  19. <div className="ml-2">
  20. <div className="font-bold">{limitText(app.name, 20)}</div>
  21. <div className="text-sm mb-1">{limitText(app.short_desc, 45)}</div>
  22. {app.categories?.map((category) => (
  23. <Tag colorScheme={colorSchemeForCategory[category as AppCategoriesEnum]} className="mr-1" borderRadius="full" key={`${app.id}-${category}`} size="sm" variant="solid">
  24. <TagLabel>{category.toLocaleLowerCase()}</TagLabel>
  25. </Tag>
  26. ))}
  27. </div>
  28. </div>
  29. </Link>
  30. );
  31. };
  32. export default AppStoreTile;