You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

137 lines
8.8 KiB

  1. import { User } from "@/types";
  2. import { Link } from "@inertiajs/react";
  3. import { PropsWithChildren } from "react";
  4. import { Edit3, Folder, FolderPlus, Trash2 } from "react-feather";
  5. export default function ProjectsOverview({ user }: PropsWithChildren<{ user: User }>) {
  6. const thisUser = user;
  7. const renderProjectOverviewContent = () => {
  8. switch (thisUser.role_id) {
  9. case 1:
  10. return (
  11. <div>
  12. <p className="font-bold text-xl flex items-center"><Folder className="stroke-[#00F5D4] mr-2" />Projects Overview</p>
  13. <div className="flex align-center">
  14. <div className="stats stats-vertical shadow mt-2 w-1/4">
  15. <div className="stat text-center">
  16. <div className="stat-value text-[#00F5D4]">000</div>
  17. <div className="stat-desc text-black">Total Projects</div>
  18. </div>
  19. <div className="stat text-center">
  20. <div className="stat-value text-secondary-main">000</div>
  21. <div className="stat-desc text-black">Active Projects</div>
  22. </div>
  23. <div className="stat text-center">
  24. <div className="stat-value text-secondary-main">000</div>
  25. <div className="stat-desc text-black">Completed Projects</div>
  26. </div>
  27. </div>
  28. <div className="w-full px-4">
  29. <div className="divider text-secondary-main font-semibold">Latest Projects</div>
  30. <table className="table">
  31. <thead>
  32. <tr>
  33. <th className="w-auto">Project Name</th>
  34. <th>Team Lead</th>
  35. <th>Status</th>
  36. <th className="w-[10px]"></th>
  37. <th className="w-[10px]"></th>
  38. </tr>
  39. </thead>
  40. <tbody>
  41. <tr className="hover:cursor-pointer hover:bg-secondary-background active:bg-primary-main active:text-white">
  42. <td>Project Title</td>
  43. <td>User</td>
  44. <td>Active</td>
  45. <td><Edit3 className="stroke-warning-main active:stroke-neutral-10" size={20} /></td>
  46. <td><Trash2 className="stroke-error-main active:stroke-neutral-10" size={20} /></td>
  47. </tr>
  48. <tr className="hover:cursor-pointer hover:bg-secondary-background active:bg-primary-main active:text-white">
  49. <td>Project Title</td>
  50. <td>User</td>
  51. <td>Completed</td>
  52. <td><Edit3 className="stroke-warning-main active:stroke-neutral-10" size={20} /></td>
  53. <td><Trash2 className="stroke-error-main active:stroke-neutral-10" size={20} /></td>
  54. </tr>
  55. <tr className="hover:cursor-pointer hover:bg-secondary-background active:bg-primary-main active:text-white">
  56. <td>Project Title</td>
  57. <td>User</td>
  58. <td>Inactive</td>
  59. <td><Edit3 className="stroke-warning-main active:stroke-neutral-10" size={20} /></td>
  60. <td><Trash2 className="stroke-error-main active:stroke-neutral-10" size={20} /></td>
  61. </tr>
  62. <tr className="hover:cursor-pointer hover:bg-secondary-background active:bg-primary-main active:text-white">
  63. <td>Project Title</td>
  64. <td>User</td>
  65. <td>Inactive</td>
  66. <td><Edit3 className="stroke-warning-main active:stroke-neutral-10" size={20} /></td>
  67. <td><Trash2 className="stroke-error-main active:stroke-neutral-10" size={20} /></td>
  68. </tr>
  69. </tbody>
  70. </table>
  71. </div>
  72. </div>
  73. </div>
  74. );
  75. case 2:
  76. return (
  77. <div>
  78. <div className="w-full px-4">
  79. <div className="flex justify-between items-center">
  80. <p className="font-bold text-xl flex items-center"><Folder className="stroke-primary-main mr-2" />Current Projects</p>
  81. <div>
  82. <div className="btn btn-link text-success-main p-0 mr-8"><Folder size={20} />View all</div>
  83. <div className="btn btn-link text-primary-main p-0"><FolderPlus size={20} />Create new</div>
  84. </div>
  85. </div>
  86. <table className="table w-full">
  87. <thead>
  88. <th className="w-1/2">Project Title</th>
  89. <th className="w-1/3">Status</th>
  90. <th></th>
  91. <th></th>
  92. </thead>
  93. <tbody>
  94. <tr className="text-sm hover:cursor-pointer hover:bg-secondary-background active:bg-primary-main active:text-white">
  95. <td className='text-sm leading-4 py-2 w-1/2'><Link href="">Project Title</Link></td>
  96. <td className="text-sm leading-4 py-2 w-1/3"><Link href="">Ongoing</Link></td>
  97. <td><Edit3 className="stroke-warning-main active:stroke-neutral-10" size={20} /></td>
  98. <td><Trash2 className="stroke-error-main active:stroke-neutral-10" size={20} /></td>
  99. </tr>
  100. <tr className="text-sm hover:cursor-pointer hover:bg-secondary-background active:bg-primary-main active:text-white">
  101. <td className='text-sm leading-4 py-2 w-1/2'><Link href="">Project Title</Link></td>
  102. <td className="text-sm leading-4 py-2 w-1/3"><Link href="">Completed</Link></td>
  103. <td><Edit3 className="stroke-warning-main active:stroke-neutral-10" size={20} /></td>
  104. <td><Trash2 className="stroke-error-main active:stroke-neutral-10" size={20} /></td>
  105. </tr>
  106. <tr className="text-sm hover:cursor-pointer hover:bg-secondary-background active:bg-primary-main active:text-white">
  107. <td className='text-sm leading-4 py-2 w-1/2'><Link href="">Project Title</Link></td>
  108. <td className="text-sm leading-4 py-2 w-1/3"><Link href="">Archived</Link></td>
  109. <td><Edit3 className="stroke-warning-main active:stroke-neutral-10" size={20} /></td>
  110. <td><Trash2 className="stroke-error-main active:stroke-neutral-10" size={20} /></td>
  111. </tr>
  112. </tbody>
  113. </table>
  114. </div>
  115. </div>
  116. );
  117. case 3:
  118. return (
  119. <div></div>
  120. );
  121. default:
  122. return null;
  123. }
  124. }
  125. return (
  126. <div className="bg-neutral-10 shadow-md p-6 rounded-lg h-full w-full">
  127. {renderProjectOverviewContent()}
  128. </div>
  129. )
  130. }