index.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132
  1. import { Box, SlideFade, Image, useColorModeValue } from '@chakra-ui/react';
  2. import Link from 'next/link';
  3. import React from 'react';
  4. import { FiChevronRight } from 'react-icons/fi';
  5. import { AppConfig } from '../../core/types';
  6. import AppStatus from './AppStatus';
  7. const AppTile: React.FC<{ app: AppConfig }> = ({ app }) => {
  8. const bg = useColorModeValue('white', '#1a202c');
  9. return (
  10. <Link href={`/apps/${app.id}`} passHref>
  11. <SlideFade in className="flex flex-1" offsetY="20px">
  12. <Box minWidth={400} bg={bg} className="flex flex-1 border-2 drop-shadow-sm rounded-lg p-3 items-center cursor-pointer group hover:drop-shadow-md transition-all">
  13. <Image alt={`${app.name} logo`} className="rounded-md drop-shadow mr-3 group-hover:scale-105 transition-all" src={app.image} width={100} height={100} />
  14. <div className="mr-3 flex-1">
  15. <h3 className="font-bold text-xl">{app.name}</h3>
  16. <span>{app.short_desc}</span>
  17. {app.installed && (
  18. <div className="flex mt-1">
  19. <AppStatus status={app.status} />
  20. </div>
  21. )}
  22. </div>
  23. <FiChevronRight className="text-slate-300" size={30} />
  24. </Box>
  25. </SlideFade>
  26. </Link>
  27. );
  28. };
  29. export default AppTile;