PluginCard.tsx 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. // import { faCircleArrowDown, faCircleCheck } from '@fortawesome/free-solid-svg-icons';
  2. // import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
  3. import { useState } from 'react';
  4. import Image from 'next/image';
  5. import Link from 'next/link';
  6. import { SearchResultItem } from '~/models/SearchResultItem';
  7. type Props = {
  8. name: string,
  9. url: string,
  10. description: string,
  11. }
  12. export const PluginCard = (props: Props) => {
  13. // const {
  14. // name, fullName, description, htmlUrl, topics, stargazersCount, owner,
  15. // } = props;
  16. const {
  17. name, url, description,
  18. } = props;
  19. const [isEnabled, setIsEnabled] = useState(true);
  20. const updateCheckboxHandler = (event: { target: { checked: boolean }; }) => {
  21. if (isEnabled === true) {
  22. setIsEnabled(true);
  23. }
  24. else {
  25. setIsEnabled(false);
  26. }
  27. };
  28. return (
  29. <div className="card shadow border-0" key={'1'}>
  30. <div className="card-body px-5 py-4">
  31. <div className="row mb-3">
  32. <div className="col-9">
  33. <h2 className="card-title h3 border-bottom pb-2 mb-3">
  34. <Link href={`${url}`}>{name}</Link>
  35. </h2>
  36. <p className="card-text text-muted">{description}</p>
  37. </div>
  38. <div className="col-3">
  39. <div className="custom-control custom-switch custom-switch-lg custom-switch-slack">
  40. <input
  41. type="checkbox"
  42. className="custom-control-input border-0"
  43. checked={isEnabled}
  44. onChange={updateCheckboxHandler}
  45. />
  46. <label className="custom-control-label align-center"></label>
  47. </div>
  48. {/* <Image className="mx-auto" alt="GitHub avator image" src={owner.avatar_url} width={250} height={250} /> */}
  49. </div>
  50. </div>
  51. <div className="row">
  52. <div className="col-12 d-flex flex-wrap gap-2">
  53. {/* {topics?.map((topic: string) => {
  54. return (
  55. <span key={`${name}-${topic}`} className="badge rounded-1 mp-bg-light-blue text-dark fw-normal">
  56. {topic}
  57. </span>
  58. );
  59. })} */}
  60. </div>
  61. </div>
  62. </div>
  63. <div className="card-footer px-5 border-top-0 mp-bg-light-blue">
  64. <p className="d-flex justify-content-between align-self-center mb-0">
  65. <span>
  66. {/* {owner.login === 'weseek' ? <FontAwesomeIcon icon={faCircleCheck} className="me-1 text-primary" /> : <></>}
  67. <a href={owner.html_url} target="_blank" rel="noreferrer">
  68. {owner.login}
  69. </a> */}
  70. </span>
  71. {/* <span>
  72. <FontAwesomeIcon icon={faCircleArrowDown} className="me-1" /> {stargazersCount}
  73. </span> */}
  74. </p>
  75. </div>
  76. </div>
  77. );
  78. };