@hed-hog/operations 0.0.328 → 0.0.330

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (596) hide show
  1. package/dist/controllers/operations-tasks.controller.d.ts +5 -5
  2. package/dist/operations.service.d.ts +5 -5
  3. package/dist/operations.service.d.ts.map +1 -1
  4. package/dist/operations.service.js +24 -4
  5. package/dist/operations.service.js.map +1 -1
  6. package/dist/operations.service.spec.js +1 -1
  7. package/dist/operations.service.spec.js.map +1 -1
  8. package/hedhog/data/dashboard_component_role.yaml +8 -8
  9. package/hedhog/data/dashboard_role.yaml +1 -1
  10. package/hedhog/data/menu.yaml +6 -16
  11. package/hedhog/data/role.yaml +1 -1
  12. package/hedhog/data/route.yaml +55 -55
  13. package/hedhog/frontend/app/_components/async-options-combobox.tsx.ejs +15 -9
  14. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +7 -7
  15. package/hedhog/frontend/app/_components/department-picker.tsx.ejs +125 -0
  16. package/hedhog/frontend/app/_components/department-select-with-create.tsx.ejs +64 -325
  17. package/hedhog/frontend/app/_components/project-costs-section.tsx.ejs +51 -81
  18. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +39 -11
  19. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +37 -20
  20. package/hedhog/frontend/app/_components/system-user-picker.tsx.ejs +198 -0
  21. package/hedhog/frontend/app/_components/system-user-select-with-create.tsx.ejs +107 -569
  22. package/hedhog/frontend/app/_components/task-file-attachments.tsx.ejs +10 -8
  23. package/hedhog/frontend/app/_lib/hooks/use-values-visibility.ts.ejs +61 -0
  24. package/hedhog/frontend/app/approvals/page.tsx.ejs +5 -1
  25. package/hedhog/frontend/app/collaborators/page.tsx.ejs +68 -34
  26. package/hedhog/frontend/app/my-projects/page.tsx.ejs +45 -6
  27. package/hedhog/frontend/app/my-tasks/page.tsx.ejs +1 -1
  28. package/hedhog/frontend/app/projects/page.tsx.ejs +60 -5
  29. package/hedhog/frontend/app/reports/collaborators/page.tsx.ejs +65 -52
  30. package/hedhog/frontend/app/reports/projects/page.tsx.ejs +80 -82
  31. package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +7 -1
  32. package/hedhog/frontend/messages/en.json +284 -8
  33. package/hedhog/frontend/messages/operations/en.json +67 -3
  34. package/hedhog/frontend/messages/operations/pt.json +67 -3
  35. package/hedhog/frontend/messages/pt.json +282 -6
  36. package/package.json +5 -5
  37. package/src/operations.service.spec.ts +1 -1
  38. package/src/operations.service.ts +25 -5
  39. package/hedhog/frontend/app/_components/collaborator-details-screen.tsx.ejs +0 -476
  40. package/hedhog/frontend/app/_components/collaborator-select-with-create.tsx.ejs +0 -261
  41. package/hedhog/frontend/app/_components/contract-content-editor.tsx.ejs +0 -258
  42. package/hedhog/frontend/app/_components/person-select-with-create.tsx.ejs +0 -1
  43. package/hedhog/frontend/messages/en.json.ejs +0 -2060
  44. package/hedhog/frontend/messages/operations/operations/en.json +0 -2102
  45. package/hedhog/frontend/messages/operations/operations/pt.json +0 -2111
  46. package/hedhog/frontend/messages/pt.json.ejs +0 -2067
  47. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts +0 -29
  48. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts.map +0 -1
  49. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js +0 -95
  50. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js.map +0 -1
  51. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.tsx +0 -233
  52. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts +0 -10
  53. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts.map +0 -1
  54. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js +0 -577
  55. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js.map +0 -1
  56. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.tsx +0 -868
  57. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts +0 -4
  58. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts.map +0 -1
  59. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js +0 -337
  60. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js.map +0 -1
  61. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.tsx +0 -476
  62. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts +0 -9
  63. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts.map +0 -1
  64. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js +0 -1348
  65. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js.map +0 -1
  66. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.tsx +0 -2233
  67. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts +0 -12
  68. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts.map +0 -1
  69. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js +0 -162
  70. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js.map +0 -1
  71. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.tsx +0 -261
  72. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts +0 -18
  73. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts.map +0 -1
  74. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js +0 -145
  75. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js.map +0 -1
  76. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.tsx +0 -258
  77. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts +0 -4
  78. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts.map +0 -1
  79. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js +0 -223
  80. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js.map +0 -1
  81. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.tsx +0 -342
  82. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts +0 -58
  83. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts.map +0 -1
  84. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js +0 -438
  85. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js.map +0 -1
  86. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.tsx +0 -698
  87. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts +0 -20
  88. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts.map +0 -1
  89. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js +0 -233
  90. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js.map +0 -1
  91. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.tsx +0 -392
  92. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts +0 -4
  93. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts.map +0 -1
  94. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js +0 -814
  95. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js.map +0 -1
  96. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.tsx +0 -1288
  97. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts +0 -21
  98. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts.map +0 -1
  99. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js +0 -174
  100. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js.map +0 -1
  101. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.tsx +0 -306
  102. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts +0 -10
  103. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts.map +0 -1
  104. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js +0 -12
  105. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js.map +0 -1
  106. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.tsx +0 -29
  107. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts +0 -15
  108. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts.map +0 -1
  109. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js +0 -501
  110. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js.map +0 -1
  111. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.tsx +0 -853
  112. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts +0 -6
  113. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts.map +0 -1
  114. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js +0 -847
  115. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js.map +0 -1
  116. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.tsx +0 -1340
  117. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts +0 -4
  118. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts.map +0 -1
  119. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js +0 -2930
  120. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js.map +0 -1
  121. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.tsx +0 -4378
  122. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts +0 -9
  123. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts.map +0 -1
  124. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js +0 -1013
  125. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js.map +0 -1
  126. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.tsx +0 -1745
  127. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts +0 -13
  128. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts.map +0 -1
  129. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js +0 -38
  130. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js.map +0 -1
  131. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.tsx +0 -74
  132. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts +0 -7
  133. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts.map +0 -1
  134. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js +0 -11
  135. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js.map +0 -1
  136. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.tsx +0 -15
  137. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts +0 -18
  138. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts.map +0 -1
  139. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js +0 -406
  140. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js.map +0 -1
  141. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.tsx +0 -660
  142. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts +0 -26
  143. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts.map +0 -1
  144. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js +0 -332
  145. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js.map +0 -1
  146. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.tsx +0 -518
  147. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts +0 -6
  148. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts.map +0 -1
  149. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js +0 -255
  150. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js.map +0 -1
  151. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.tsx +0 -388
  152. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts +0 -10
  153. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts.map +0 -1
  154. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js +0 -131
  155. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js.map +0 -1
  156. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.tsx +0 -214
  157. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts +0 -108
  158. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts.map +0 -1
  159. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js +0 -162
  160. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js.map +0 -1
  161. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.ts +0 -428
  162. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts +0 -8
  163. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts.map +0 -1
  164. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js +0 -36
  165. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js.map +0 -1
  166. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.ts +0 -44
  167. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts +0 -837
  168. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts.map +0 -1
  169. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js +0 -3
  170. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js.map +0 -1
  171. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.ts +0 -861
  172. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts +0 -16
  173. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts.map +0 -1
  174. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js +0 -182
  175. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js.map +0 -1
  176. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.ts +0 -250
  177. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts +0 -4
  178. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts.map +0 -1
  179. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js +0 -51
  180. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js.map +0 -1
  181. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.ts +0 -61
  182. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts +0 -2
  183. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts.map +0 -1
  184. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js +0 -954
  185. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js.map +0 -1
  186. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.tsx +0 -1277
  187. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts +0 -2
  188. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts.map +0 -1
  189. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js +0 -488
  190. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js.map +0 -1
  191. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.tsx +0 -805
  192. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts +0 -6
  193. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts.map +0 -1
  194. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js +0 -9
  195. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js.map +0 -1
  196. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.tsx +0 -11
  197. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts +0 -6
  198. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts.map +0 -1
  199. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js +0 -9
  200. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js.map +0 -1
  201. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.tsx +0 -11
  202. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts +0 -2
  203. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts.map +0 -1
  204. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js +0 -8
  205. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js.map +0 -1
  206. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.tsx +0 -5
  207. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts +0 -2
  208. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts.map +0 -1
  209. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js +0 -612
  210. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js.map +0 -1
  211. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.tsx +0 -939
  212. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts +0 -6
  213. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts.map +0 -1
  214. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js +0 -9
  215. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js.map +0 -1
  216. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.tsx +0 -11
  217. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts +0 -6
  218. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts.map +0 -1
  219. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js +0 -9
  220. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js.map +0 -1
  221. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.tsx +0 -11
  222. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts +0 -6
  223. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts.map +0 -1
  224. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js +0 -9
  225. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js.map +0 -1
  226. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.tsx +0 -17
  227. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts +0 -2
  228. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts.map +0 -1
  229. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js +0 -348
  230. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js.map +0 -1
  231. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.tsx +0 -536
  232. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts +0 -2
  233. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts.map +0 -1
  234. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js +0 -401
  235. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js.map +0 -1
  236. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.tsx +0 -607
  237. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts +0 -5
  238. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts.map +0 -1
  239. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js +0 -7
  240. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js.map +0 -1
  241. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.tsx +0 -9
  242. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts +0 -6
  243. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts.map +0 -1
  244. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js +0 -9
  245. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js.map +0 -1
  246. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.tsx +0 -11
  247. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts +0 -2
  248. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts.map +0 -1
  249. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js +0 -321
  250. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js.map +0 -1
  251. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.tsx +0 -440
  252. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts +0 -2
  253. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts.map +0 -1
  254. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js +0 -939
  255. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js.map +0 -1
  256. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.tsx +0 -1499
  257. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts +0 -29
  258. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts.map +0 -1
  259. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js +0 -95
  260. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js.map +0 -1
  261. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.tsx +0 -233
  262. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts +0 -10
  263. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts.map +0 -1
  264. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js +0 -577
  265. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js.map +0 -1
  266. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.tsx +0 -868
  267. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts +0 -4
  268. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts.map +0 -1
  269. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js +0 -337
  270. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js.map +0 -1
  271. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.tsx +0 -476
  272. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts +0 -9
  273. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts.map +0 -1
  274. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js +0 -1348
  275. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js.map +0 -1
  276. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.tsx +0 -2233
  277. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts +0 -12
  278. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts.map +0 -1
  279. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js +0 -162
  280. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js.map +0 -1
  281. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.tsx +0 -261
  282. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts +0 -18
  283. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts.map +0 -1
  284. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js +0 -145
  285. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js.map +0 -1
  286. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.tsx +0 -258
  287. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts +0 -4
  288. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts.map +0 -1
  289. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js +0 -223
  290. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js.map +0 -1
  291. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.tsx +0 -342
  292. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts +0 -58
  293. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts.map +0 -1
  294. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js +0 -438
  295. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js.map +0 -1
  296. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.tsx +0 -698
  297. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts +0 -20
  298. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts.map +0 -1
  299. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js +0 -233
  300. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js.map +0 -1
  301. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.tsx +0 -392
  302. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts +0 -4
  303. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts.map +0 -1
  304. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js +0 -814
  305. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js.map +0 -1
  306. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.tsx +0 -1288
  307. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts +0 -21
  308. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts.map +0 -1
  309. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js +0 -174
  310. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js.map +0 -1
  311. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.tsx +0 -306
  312. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts +0 -10
  313. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts.map +0 -1
  314. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js +0 -12
  315. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js.map +0 -1
  316. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.tsx +0 -29
  317. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts +0 -15
  318. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts.map +0 -1
  319. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js +0 -501
  320. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js.map +0 -1
  321. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.tsx +0 -853
  322. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts +0 -6
  323. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts.map +0 -1
  324. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js +0 -459
  325. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js.map +0 -1
  326. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.tsx +0 -598
  327. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts +0 -6
  328. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts.map +0 -1
  329. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js +0 -876
  330. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js.map +0 -1
  331. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.tsx +0 -1368
  332. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts +0 -4
  333. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts.map +0 -1
  334. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js +0 -2930
  335. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js.map +0 -1
  336. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.tsx +0 -4378
  337. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts +0 -9
  338. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts.map +0 -1
  339. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js +0 -1013
  340. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js.map +0 -1
  341. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.tsx +0 -1745
  342. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts +0 -13
  343. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts.map +0 -1
  344. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js +0 -38
  345. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js.map +0 -1
  346. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.tsx +0 -74
  347. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts +0 -7
  348. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts.map +0 -1
  349. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js +0 -11
  350. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js.map +0 -1
  351. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.tsx +0 -15
  352. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts +0 -18
  353. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts.map +0 -1
  354. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js +0 -406
  355. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js.map +0 -1
  356. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.tsx +0 -660
  357. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts +0 -26
  358. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts.map +0 -1
  359. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js +0 -332
  360. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js.map +0 -1
  361. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.tsx +0 -518
  362. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts +0 -6
  363. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts.map +0 -1
  364. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js +0 -255
  365. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js.map +0 -1
  366. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.tsx +0 -388
  367. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts +0 -10
  368. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts.map +0 -1
  369. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js +0 -131
  370. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js.map +0 -1
  371. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.tsx +0 -214
  372. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts +0 -108
  373. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts.map +0 -1
  374. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js +0 -162
  375. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js.map +0 -1
  376. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.ts +0 -428
  377. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts +0 -8
  378. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts.map +0 -1
  379. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js +0 -36
  380. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js.map +0 -1
  381. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.ts +0 -44
  382. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts +0 -837
  383. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts.map +0 -1
  384. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js +0 -3
  385. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js.map +0 -1
  386. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.ts +0 -861
  387. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts +0 -16
  388. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts.map +0 -1
  389. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js +0 -182
  390. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js.map +0 -1
  391. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.ts +0 -250
  392. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts +0 -4
  393. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts.map +0 -1
  394. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js +0 -51
  395. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js.map +0 -1
  396. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.ts +0 -61
  397. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts +0 -2
  398. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts.map +0 -1
  399. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js +0 -954
  400. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js.map +0 -1
  401. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.tsx +0 -1277
  402. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts +0 -2
  403. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts.map +0 -1
  404. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js +0 -488
  405. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js.map +0 -1
  406. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.tsx +0 -805
  407. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts +0 -6
  408. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts.map +0 -1
  409. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js +0 -9
  410. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js.map +0 -1
  411. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.tsx +0 -11
  412. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts +0 -6
  413. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts.map +0 -1
  414. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js +0 -9
  415. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js.map +0 -1
  416. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.tsx +0 -11
  417. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts +0 -2
  418. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts.map +0 -1
  419. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js +0 -8
  420. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js.map +0 -1
  421. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.tsx +0 -5
  422. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts +0 -2
  423. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts.map +0 -1
  424. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js +0 -612
  425. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js.map +0 -1
  426. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.tsx +0 -939
  427. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts +0 -6
  428. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts.map +0 -1
  429. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js +0 -9
  430. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js.map +0 -1
  431. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.tsx +0 -11
  432. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts +0 -6
  433. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts.map +0 -1
  434. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js +0 -9
  435. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js.map +0 -1
  436. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.tsx +0 -11
  437. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts +0 -6
  438. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts.map +0 -1
  439. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js +0 -9
  440. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js.map +0 -1
  441. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.tsx +0 -17
  442. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts +0 -2
  443. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts.map +0 -1
  444. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js +0 -348
  445. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js.map +0 -1
  446. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.tsx +0 -536
  447. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts +0 -2
  448. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts.map +0 -1
  449. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js +0 -401
  450. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js.map +0 -1
  451. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.tsx +0 -607
  452. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts +0 -5
  453. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts.map +0 -1
  454. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js +0 -7
  455. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js.map +0 -1
  456. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.tsx +0 -9
  457. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts +0 -6
  458. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts.map +0 -1
  459. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js +0 -9
  460. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js.map +0 -1
  461. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.tsx +0 -11
  462. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts +0 -2
  463. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts.map +0 -1
  464. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js +0 -321
  465. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js.map +0 -1
  466. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.tsx +0 -440
  467. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts +0 -2
  468. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts.map +0 -1
  469. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js +0 -939
  470. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js.map +0 -1
  471. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.tsx +0 -1499
  472. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts +0 -2
  473. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts.map +0 -1
  474. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js +0 -8
  475. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js.map +0 -1
  476. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.tsx +0 -5
  477. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts +0 -2
  478. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts.map +0 -1
  479. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js +0 -436
  480. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js.map +0 -1
  481. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.tsx +0 -675
  482. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts +0 -2
  483. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts.map +0 -1
  484. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js +0 -563
  485. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js.map +0 -1
  486. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.tsx +0 -846
  487. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts +0 -6
  488. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts.map +0 -1
  489. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js +0 -9
  490. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js.map +0 -1
  491. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.tsx +0 -10
  492. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts +0 -6
  493. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts.map +0 -1
  494. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js +0 -9
  495. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js.map +0 -1
  496. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.tsx +0 -11
  497. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts +0 -6
  498. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts.map +0 -1
  499. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js +0 -9
  500. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js.map +0 -1
  501. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.tsx +0 -11
  502. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts +0 -2
  503. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts.map +0 -1
  504. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js +0 -8
  505. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js.map +0 -1
  506. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.tsx +0 -5
  507. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts +0 -2
  508. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts.map +0 -1
  509. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js +0 -492
  510. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js.map +0 -1
  511. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.tsx +0 -757
  512. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts +0 -2
  513. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts.map +0 -1
  514. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js +0 -342
  515. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js.map +0 -1
  516. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.tsx +0 -430
  517. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts +0 -2
  518. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts.map +0 -1
  519. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js +0 -338
  520. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js.map +0 -1
  521. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.tsx +0 -428
  522. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts +0 -2
  523. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts.map +0 -1
  524. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js +0 -660
  525. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js.map +0 -1
  526. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.tsx +0 -992
  527. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts +0 -2
  528. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts.map +0 -1
  529. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js +0 -515
  530. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js.map +0 -1
  531. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.tsx +0 -707
  532. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts +0 -2
  533. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts.map +0 -1
  534. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js +0 -1141
  535. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js.map +0 -1
  536. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.tsx +0 -1705
  537. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts +0 -2
  538. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts.map +0 -1
  539. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js +0 -8
  540. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js.map +0 -1
  541. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.tsx +0 -5
  542. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts +0 -2
  543. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts.map +0 -1
  544. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js +0 -436
  545. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js.map +0 -1
  546. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.tsx +0 -675
  547. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts +0 -2
  548. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts.map +0 -1
  549. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js +0 -563
  550. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js.map +0 -1
  551. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.tsx +0 -846
  552. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts +0 -6
  553. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts.map +0 -1
  554. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js +0 -9
  555. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js.map +0 -1
  556. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.tsx +0 -11
  557. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts +0 -6
  558. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts.map +0 -1
  559. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js +0 -9
  560. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js.map +0 -1
  561. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.tsx +0 -11
  562. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts +0 -2
  563. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts.map +0 -1
  564. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js +0 -8
  565. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js.map +0 -1
  566. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.tsx +0 -5
  567. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts +0 -2
  568. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts.map +0 -1
  569. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js +0 -492
  570. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js.map +0 -1
  571. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.tsx +0 -757
  572. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts +0 -2
  573. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts.map +0 -1
  574. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js +0 -342
  575. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js.map +0 -1
  576. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.tsx +0 -430
  577. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts +0 -2
  578. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts.map +0 -1
  579. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js +0 -338
  580. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js.map +0 -1
  581. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.tsx +0 -428
  582. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts +0 -2
  583. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts.map +0 -1
  584. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js +0 -660
  585. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js.map +0 -1
  586. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.tsx +0 -992
  587. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts +0 -2
  588. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts.map +0 -1
  589. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js +0 -515
  590. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js.map +0 -1
  591. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.tsx +0 -707
  592. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts +0 -2
  593. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts.map +0 -1
  594. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js +0 -1141
  595. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js.map +0 -1
  596. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.tsx +0 -1705
@@ -1,1288 +0,0 @@
1
- 'use client';
2
-
3
- import { EmptyState, Page } from '@/components/entity-list';
4
- import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
5
- import { Button } from '@/components/ui/button';
6
- import {
7
- Dialog,
8
- DialogContent,
9
- DialogFooter,
10
- DialogHeader,
11
- DialogTitle,
12
- } from '@/components/ui/dialog';
13
- import { Input } from '@/components/ui/input';
14
- import { Label } from '@/components/ui/label';
15
- import {
16
- Select,
17
- SelectContent,
18
- SelectItem,
19
- SelectTrigger,
20
- SelectValue,
21
- } from '@/components/ui/select';
22
- import {
23
- Table,
24
- TableBody,
25
- TableCell,
26
- TableHead,
27
- TableHeader,
28
- TableRow,
29
- } from '@/components/ui/table';
30
- import { Progress } from '@/components/ui/progress';
31
- import { Textarea } from '@/components/ui/textarea';
32
- import {
33
- closestCenter,
34
- DndContext,
35
- PointerSensor,
36
- useDraggable,
37
- useDroppable,
38
- useSensor,
39
- useSensors,
40
- type DragEndEvent,
41
- type UniqueIdentifier,
42
- } from '@dnd-kit/core';
43
- import { CSS } from '@dnd-kit/utilities';
44
- import { useApp, useQuery } from '@hed-hog/next-app-provider';
45
- import { AnimatePresence, motion } from 'framer-motion';
46
- import {
47
- AlarmClock,
48
- Archive,
49
- ArchiveRestore,
50
- FolderKanban,
51
- MessageSquare,
52
- Paperclip,
53
- Pencil,
54
- Plus,
55
- Rows3,
56
- Timer,
57
- Trash2,
58
- } from 'lucide-react';
59
- import { useTranslations } from 'next-intl';
60
- import { useCallback, useMemo, useState } from 'react';
61
- import { fetchOperations, mutateOperations } from '../_lib/api';
62
- import type {
63
- OperationsMyProjectSummary,
64
- OperationsTaskOption,
65
- PaginatedResponse,
66
- } from '../_lib/types';
67
- import {
68
- formatDate,
69
- formatEnumLabel,
70
- getStatusBadgeClass,
71
- } from '../_lib/utils/format';
72
- import { OperationsHeader } from './operations-header';
73
- import { SectionCard } from './section-card';
74
- import { StatusBadge } from './status-badge';
75
- import { TaskDetailSheet, type TaskDetailSheetData } from './task-detail-sheet';
76
-
77
- type BoardColumnId = 'todo' | 'doing' | 'review' | 'done';
78
-
79
- type BoardTask = {
80
- id: number;
81
- name: string;
82
- description: string | null;
83
- status: BoardColumnId;
84
- priority: string;
85
- dueDate: string | null;
86
- estimateHours: number | null;
87
- tags: string | null;
88
- assigneeCollaboratorId: number | null;
89
- assigneeName: string | null;
90
- assigneeUserPhotoId: number | null;
91
- assigneePersonAvatarId: number | null;
92
- commentCount: number;
93
- fileCount: number;
94
- };
95
-
96
- type TaskFormState = {
97
- name: string;
98
- description: string;
99
- priority: 'low' | 'medium' | 'high';
100
- status: BoardColumnId;
101
- dueDate: string;
102
- estimateHours: string;
103
- tags: string;
104
- };
105
-
106
- const EMPTY_TASK_FORM: TaskFormState = {
107
- name: '',
108
- description: '',
109
- priority: 'medium',
110
- status: 'todo',
111
- dueDate: '',
112
- estimateHours: '',
113
- tags: '',
114
- };
115
-
116
- type BoardColumns = Record<BoardColumnId, BoardTask[]>;
117
-
118
- type BoardState = {
119
- projectId: number;
120
- columns: BoardColumns;
121
- };
122
-
123
- const KANBAN_COLUMNS: Array<{ id: BoardColumnId; label: string }> = [
124
- { id: 'todo', label: 'Backlog' },
125
- { id: 'doing', label: 'Em execução' },
126
- { id: 'review', label: 'Revisão' },
127
- { id: 'done', label: 'Concluído' },
128
- ];
129
-
130
- function taskDragId(taskId: number) {
131
- return `task-${taskId}`;
132
- }
133
-
134
- function columnDropId(columnId: BoardColumnId) {
135
- return `col-${columnId}`;
136
- }
137
-
138
- function parseTaskId(value: UniqueIdentifier | null | undefined) {
139
- if (!value) return null;
140
- const match = String(value).match(/^task-(\d+)$/);
141
- return match ? Number(match[1]) : null;
142
- }
143
-
144
- function parseColumnId(
145
- value: UniqueIdentifier | null | undefined
146
- ): BoardColumnId | null {
147
- if (!value) return null;
148
- const match = String(value).match(/^col-(.+)$/);
149
- const id = match?.[1];
150
- return KANBAN_COLUMNS.some((c) => c.id === id) ? (id as BoardColumnId) : null;
151
- }
152
-
153
- function apiTaskToBoardTask(
154
- row: OperationsMyProjectSummary['tasks'][number]
155
- ): BoardTask {
156
- const status = KANBAN_COLUMNS.some((c) => c.id === row.status)
157
- ? (row.status as BoardColumnId)
158
- : 'todo';
159
- return {
160
- id: row.id,
161
- name: row.name,
162
- description: row.description ?? null,
163
- status,
164
- priority: row.priority ?? 'medium',
165
- dueDate: row.dueDate ?? null,
166
- estimateHours: row.estimateHours ?? null,
167
- tags: row.tags ?? null,
168
- assigneeCollaboratorId: row.assigneeCollaboratorId ?? null,
169
- assigneeName: row.assigneeName ?? null,
170
- assigneeUserPhotoId: row.assigneeUserPhotoId ?? null,
171
- assigneePersonAvatarId: row.assigneePersonAvatarId ?? null,
172
- commentCount: (row as BoardTask & Record<string, unknown>).commentCount as number ?? 0,
173
- fileCount: (row as BoardTask & Record<string, unknown>).fileCount as number ?? 0,
174
- };
175
- }
176
-
177
- function splitTasksByColumn(tasks: BoardTask[]): BoardColumns {
178
- return {
179
- todo: tasks.filter((t) => t.status === 'todo'),
180
- doing: tasks.filter((t) => t.status === 'doing'),
181
- review: tasks.filter((t) => t.status === 'review'),
182
- done: tasks.filter((t) => t.status === 'done'),
183
- };
184
- }
185
-
186
- function getInitials(value?: string | null) {
187
- const parts = String(value ?? '')
188
- .trim()
189
- .split(/\s+/)
190
- .filter(Boolean)
191
- .slice(0, 2);
192
- if (!parts.length) return '??';
193
- return parts.map((part) => part[0]?.toUpperCase() ?? '').join('');
194
- }
195
-
196
- function getPersonAvatarUrl(avatarId?: number | null) {
197
- return typeof avatarId === 'number' && avatarId > 0
198
- ? `${process.env.NEXT_PUBLIC_API_BASE_URL}/person/avatar/${avatarId}`
199
- : '/placeholder.png';
200
- }
201
-
202
- function getUserPhotoUrl(photoId?: number | null) {
203
- return typeof photoId === 'number' && photoId > 0
204
- ? `${process.env.NEXT_PUBLIC_API_BASE_URL}/file/open/${photoId}`
205
- : null;
206
- }
207
-
208
- function normalizeDateInputValue(value?: string | null) {
209
- if (!value) {
210
- return '';
211
- }
212
-
213
- const normalizedValue = String(value).trim();
214
- const directMatch = normalizedValue.match(/^\d{4}-\d{2}-\d{2}/);
215
-
216
- if (directMatch?.[0]) {
217
- return directMatch[0];
218
- }
219
-
220
- const parsedDate = new Date(normalizedValue);
221
- if (Number.isNaN(parsedDate.getTime())) {
222
- return '';
223
- }
224
-
225
- return parsedDate.toISOString().slice(0, 10);
226
- }
227
-
228
- function getTaskPriorityLabel(value?: string | null) {
229
- const labels: Record<string, string> = {
230
- low: 'Baixa',
231
- medium: 'Média',
232
- high: 'Alta',
233
- };
234
- return labels[value ?? ''] ?? String(value ?? '');
235
- }
236
-
237
- function getPriorityClassName(priority?: string | null) {
238
- if (priority === 'high') return 'border-rose-300 bg-rose-100 text-rose-700';
239
- if (priority === 'medium') return 'border-amber-300 bg-amber-100 text-amber-700';
240
- return 'border-emerald-300 bg-emerald-100 text-emerald-700';
241
- }
242
-
243
- function getTaskProgress(status?: string | null) {
244
- const map: Record<string, number> = {
245
- todo: 0,
246
- doing: 33,
247
- review: 66,
248
- done: 100,
249
- };
250
- return map[status ?? ''] ?? 0;
251
- }
252
-
253
- function isPastDue(dueDate?: string | null) {
254
- if (!dueDate) return false;
255
- return new Date(dueDate) < new Date();
256
- }
257
-
258
- function getTaskTags(task: BoardTask) {
259
- if (!task.tags) return [];
260
- return task.tags.split(',').map((tag) => tag.trim()).filter(Boolean);
261
- }
262
-
263
- function getTaskCommentCount(task: BoardTask) {
264
- return task.commentCount ?? 0;
265
- }
266
-
267
- function getTaskAttachmentCount(task: BoardTask) {
268
- return task.fileCount ?? 0;
269
- }
270
-
271
- function DraggableTaskCard({
272
- task,
273
- children,
274
- }: {
275
- task: BoardTask;
276
- children: (isDragging: boolean) => React.ReactNode;
277
- }) {
278
- const { attributes, listeners, setNodeRef, transform, isDragging } =
279
- useDraggable({
280
- id: taskDragId(task.id),
281
- });
282
- return (
283
- <div
284
- ref={setNodeRef}
285
- style={{ transform: CSS.Translate.toString(transform) }}
286
- {...listeners}
287
- {...attributes}
288
- className={isDragging ? 'z-20' : undefined}
289
- >
290
- {children(isDragging)}
291
- </div>
292
- );
293
- }
294
-
295
- function DroppableColumn({
296
- columnId,
297
- children,
298
- }: {
299
- columnId: BoardColumnId;
300
- children: (isOver: boolean) => React.ReactNode;
301
- }) {
302
- const { setNodeRef, isOver } = useDroppable({ id: columnDropId(columnId) });
303
- return <div ref={setNodeRef}>{children(isOver)}</div>;
304
- }
305
-
306
- export function MyProjectSummaryScreen({ projectId }: { projectId: number }) {
307
- const t = useTranslations('operations.ProjectDetailsPage');
308
- const commonT = useTranslations('operations.Common');
309
- const formT = useTranslations('operations.ProjectFormPage');
310
- const { request, currentLocaleCode, getSettingValue } = useApp();
311
-
312
- const getProjectStatusLabel = (value?: string | null) => {
313
- if (!value) return commonT('labels.notAvailable');
314
- try {
315
- return formT(`options.statuses.${value}`);
316
- } catch {
317
- return value;
318
- }
319
- };
320
-
321
- const { data: project, refetch } = useQuery<OperationsMyProjectSummary>({
322
- queryKey: ['operations-my-project-summary', projectId],
323
- queryFn: () =>
324
- fetchOperations<OperationsMyProjectSummary>(
325
- request,
326
- `/operations/my-projects/${projectId}/summary`
327
- ),
328
- });
329
- const { data: archivedTasksResponse, refetch: refetchArchivedTasks } =
330
- useQuery<PaginatedResponse<OperationsTaskOption>>({
331
- queryKey: [
332
- 'operations-my-project-archived-tasks',
333
- projectId,
334
- currentLocaleCode,
335
- ],
336
- queryFn: () =>
337
- fetchOperations<PaginatedResponse<OperationsTaskOption>>(
338
- request,
339
- `/operations/tasks?projectId=${projectId}&archived=true&pageSize=200&sortField=createdAt&sortOrder=desc`
340
- ),
341
- placeholderData: (previous) => previous,
342
- });
343
-
344
- const [boardState, setBoardState] = useState<BoardState | null>(null);
345
- const [selectedTask, setSelectedTask] = useState<TaskDetailSheetData | null>(
346
- null
347
- );
348
- const [deletePromptTask, setDeletePromptTask] =
349
- useState<TaskDetailSheetData | null>(null);
350
- const [taskFormOpen, setTaskFormOpen] = useState(false);
351
- const [editingTaskId, setEditingTaskId] = useState<number | null>(null);
352
- const [taskFormData, setTaskFormData] =
353
- useState<TaskFormState>(EMPTY_TASK_FORM);
354
- const [taskFormLoading, setTaskFormLoading] = useState(false);
355
-
356
- const apiTasks = useMemo(
357
- () => (project?.tasks ?? []).map(apiTaskToBoardTask),
358
- [project]
359
- );
360
- const archivedTasks = useMemo(
361
- () =>
362
- (archivedTasksResponse?.data ?? []).filter((task) =>
363
- Boolean(task.deletedAt)
364
- ),
365
- [archivedTasksResponse]
366
- );
367
- const currentCollaboratorId = useMemo(() => {
368
- if (!project?.myAssignmentId) {
369
- return null;
370
- }
371
-
372
- return (
373
- project.assignments.find(
374
- (assignment) => assignment.id === project.myAssignmentId
375
- )?.collaboratorId ?? null
376
- );
377
- }, [project]);
378
-
379
- const taskColumns: BoardColumns = useMemo(() => {
380
- if (project && boardState?.projectId === project.id) {
381
- return boardState.columns;
382
- }
383
- return splitTasksByColumn(apiTasks);
384
- }, [project, boardState, apiTasks]);
385
-
386
- const sensors = useSensors(
387
- useSensor(PointerSensor, { activationConstraint: { distance: 6 } })
388
- );
389
-
390
- const findColumnByTask = (taskId: number) => {
391
- const match = KANBAN_COLUMNS.find((column) =>
392
- taskColumns[column.id].some((task) => task.id === taskId)
393
- );
394
- return match?.id ?? null;
395
- };
396
-
397
- const moveTaskToColumn = useCallback(
398
- (taskId: number, targetColumn: BoardColumnId) => {
399
- const originColumn = findColumnByTask(taskId);
400
- if (!originColumn || originColumn === targetColumn || !project) return;
401
-
402
- const sourceTask = taskColumns[originColumn].find(
403
- (task) => task.id === taskId
404
- );
405
- if (!sourceTask) return;
406
-
407
- setBoardState({
408
- projectId: project.id,
409
- columns: {
410
- ...taskColumns,
411
- [originColumn]: taskColumns[originColumn].filter(
412
- (task) => task.id !== taskId
413
- ),
414
- [targetColumn]: [
415
- { ...sourceTask, status: targetColumn },
416
- ...taskColumns[targetColumn],
417
- ],
418
- },
419
- });
420
-
421
- mutateOperations(request, `/operations/tasks/${taskId}`, 'PATCH', {
422
- status: targetColumn,
423
- }).catch(() => {
424
- setBoardState(null);
425
- void refetch();
426
- });
427
- },
428
- [taskColumns, project, request, refetch] // eslint-disable-line react-hooks/exhaustive-deps
429
- );
430
-
431
- const onBoardDragEnd = (event: DragEndEvent) => {
432
- const taskId = parseTaskId(event.active.id);
433
- const targetColumn = parseColumnId(event.over?.id);
434
- if (!taskId || !targetColumn) return;
435
- moveTaskToColumn(taskId, targetColumn);
436
- };
437
-
438
- const openCreateTaskForm = useCallback(
439
- (defaultStatus: BoardColumnId = 'todo') => {
440
- setEditingTaskId(null);
441
- setTaskFormData({ ...EMPTY_TASK_FORM, status: defaultStatus });
442
- setSelectedTask(null);
443
- setTaskFormOpen(true);
444
- },
445
- []
446
- );
447
-
448
- const openEditTaskForm = useCallback((task: BoardTask) => {
449
- setEditingTaskId(task.id);
450
- setTaskFormData({
451
- name: task.name,
452
- description: task.description ?? '',
453
- priority: task.priority as TaskFormState['priority'],
454
- status: task.status,
455
- dueDate: normalizeDateInputValue(task.dueDate),
456
- estimateHours:
457
- task.estimateHours != null ? String(task.estimateHours) : '',
458
- tags: task.tags ?? '',
459
- });
460
- setSelectedTask(null);
461
- setTaskFormOpen(true);
462
- }, []);
463
-
464
- const refetchAll = useCallback(async () => {
465
- await Promise.all([refetch(), refetchArchivedTasks()]);
466
- }, [refetch, refetchArchivedTasks]);
467
-
468
- const handleTaskFormSubmit = useCallback(async () => {
469
- if (!taskFormData.name.trim()) return;
470
-
471
- setTaskFormLoading(true);
472
- try {
473
- const payload: Record<string, unknown> = {
474
- projectId,
475
- projectAssignmentId: project?.myAssignmentId ?? null,
476
- assigneeCollaboratorId: currentCollaboratorId,
477
- name: taskFormData.name.trim(),
478
- description: taskFormData.description || null,
479
- priority: taskFormData.priority,
480
- status: taskFormData.status,
481
- dueDate: taskFormData.dueDate || null,
482
- estimateHours: taskFormData.estimateHours
483
- ? Number(taskFormData.estimateHours)
484
- : null,
485
- tags: taskFormData.tags || null,
486
- };
487
-
488
- if (editingTaskId) {
489
- await mutateOperations(
490
- request,
491
- `/operations/tasks/${editingTaskId}`,
492
- 'PATCH',
493
- payload
494
- );
495
- } else {
496
- await mutateOperations(request, '/operations/tasks', 'POST', payload);
497
- }
498
-
499
- setBoardState(null);
500
- setTaskFormOpen(false);
501
- setEditingTaskId(null);
502
- setTaskFormData(EMPTY_TASK_FORM);
503
- await refetchAll();
504
- } finally {
505
- setTaskFormLoading(false);
506
- }
507
- }, [
508
- currentCollaboratorId,
509
- editingTaskId,
510
- project,
511
- projectId,
512
- refetchAll,
513
- request,
514
- taskFormData,
515
- ]);
516
-
517
- const handleArchiveTask = useCallback(
518
- async (taskId: number) => {
519
- await mutateOperations(request, `/operations/tasks/${taskId}`, 'PATCH', {
520
- archived: true,
521
- });
522
- setBoardState(null);
523
- setSelectedTask(null);
524
- await refetchAll();
525
- },
526
- [request, refetchAll]
527
- );
528
-
529
- const handleRestoreTask = useCallback(
530
- async (taskId: number) => {
531
- await mutateOperations(request, `/operations/tasks/${taskId}`, 'PATCH', {
532
- archived: false,
533
- });
534
- setBoardState(null);
535
- setSelectedTask(null);
536
- setDeletePromptTask(null);
537
- await refetchAll();
538
- },
539
- [request, refetchAll]
540
- );
541
-
542
- const handleDeleteTask = useCallback(
543
- async (taskId: number) => {
544
- await mutateOperations(
545
- request,
546
- `/operations/tasks/${taskId}?permanent=true`,
547
- 'DELETE'
548
- );
549
- setBoardState(null);
550
- setSelectedTask(null);
551
- setDeletePromptTask(null);
552
- await refetchAll();
553
- },
554
- [request, refetchAll]
555
- );
556
-
557
- if (!project) {
558
- return (
559
- <Page>
560
- <OperationsHeader
561
- title="—"
562
- description=""
563
- current={commonT('labels.loading') || 'Carregando...'}
564
- />
565
- <EmptyState
566
- icon={<FolderKanban className="size-12" />}
567
- title={commonT('states.emptyTitle')}
568
- description={t('notFound')}
569
- actionLabel={commonT('actions.refresh')}
570
- onAction={() => void refetch()}
571
- />
572
- </Page>
573
- );
574
- }
575
-
576
- return (
577
- <Page>
578
- <OperationsHeader
579
- title={project.name}
580
- description={
581
- [project.code, project.myRoleLabel].filter(Boolean).join(' • ') || ''
582
- }
583
- current={project.name}
584
- />
585
-
586
- <div className="rounded-xl border bg-muted/20 p-4">
587
- <dl className="grid gap-3 text-sm sm:grid-cols-2 xl:grid-cols-4">
588
- <div>
589
- <dt className="text-muted-foreground">
590
- {commonT('labels.status')}
591
- </dt>
592
- <dd className="mt-0.5 font-medium">
593
- <StatusBadge
594
- label={getProjectStatusLabel(project.status)}
595
- className={getStatusBadgeClass(project.status)}
596
- />
597
- </dd>
598
- </div>
599
- <div>
600
- <dt className="text-muted-foreground">
601
- {commonT('labels.startDate')}
602
- </dt>
603
- <dd className="mt-0.5 font-medium">
604
- {formatDate(
605
- project.startDate,
606
- getSettingValue,
607
- currentLocaleCode
608
- )}
609
- </dd>
610
- </div>
611
- <div>
612
- <dt className="text-muted-foreground">
613
- {commonT('labels.endDate')}
614
- </dt>
615
- <dd className="mt-0.5 font-medium">
616
- {formatDate(project.endDate, getSettingValue, currentLocaleCode)}
617
- </dd>
618
- </div>
619
- {project.myRoleLabel ? (
620
- <div>
621
- <dt className="text-muted-foreground">
622
- {commonT('labels.role')}
623
- </dt>
624
- <dd className="mt-0.5 font-medium">{project.myRoleLabel}</dd>
625
- </div>
626
- ) : null}
627
- </dl>
628
- {project.summary ? (
629
- <p className="mt-3 rounded-lg border border-border/70 bg-background/60 p-3 text-sm text-muted-foreground">
630
- {project.summary}
631
- </p>
632
- ) : null}
633
- </div>
634
-
635
- <SectionCard
636
- title={t('sections.taskBoard')}
637
- description={t('sections.taskBoardDescription')}
638
- className="rounded-xl border bg-card p-4 shadow-sm"
639
- actions={
640
- <Button
641
- size="sm"
642
- className="gap-2"
643
- onClick={() => openCreateTaskForm()}
644
- >
645
- <Plus className="size-4" />
646
- {commonT('actions.create')}
647
- </Button>
648
- }
649
- >
650
- <DndContext
651
- sensors={sensors}
652
- collisionDetection={closestCenter}
653
- onDragEnd={onBoardDragEnd}
654
- >
655
- <div className="grid gap-4 xl:grid-cols-4">
656
- {KANBAN_COLUMNS.map((column) => (
657
- <DroppableColumn key={column.id} columnId={column.id}>
658
- {(isOver) => (
659
- <div
660
- className={[
661
- 'rounded-xl border bg-muted/20 p-3 transition-colors',
662
- isOver ? 'border-primary bg-primary/5' : 'border-border',
663
- ].join(' ')}
664
- >
665
- <div className="mb-3 flex items-center justify-between">
666
- <div className="flex items-center gap-2 text-sm font-semibold">
667
- <Rows3 className="size-4 text-muted-foreground" />
668
- {column.label}
669
- </div>
670
- <span className="rounded-full bg-background px-2 py-0.5 text-xs text-muted-foreground">
671
- {taskColumns[column.id].length}
672
- </span>
673
- </div>
674
-
675
- <div className="flex flex-1 flex-col gap-2">
676
- <AnimatePresence initial={false}>
677
- {taskColumns[column.id].map((task) => {
678
- const tags = getTaskTags(task);
679
- const comments = getTaskCommentCount(task);
680
- const attachments = getTaskAttachmentCount(task);
681
- return (
682
- <DraggableTaskCard key={task.id} task={task}>
683
- {(isDragging) => (
684
- <motion.div
685
- initial={{ opacity: 0, scale: 0.96 }}
686
- animate={{ opacity: 1, scale: 1 }}
687
- exit={{ opacity: 0, scale: 0.95, y: -4 }}
688
- transition={{ duration: 0.18 }}
689
- role="button"
690
- tabIndex={0}
691
- onClick={() =>
692
- !isDragging && setSelectedTask(task)
693
- }
694
- onKeyDown={(event) => {
695
- if (event.key === 'Enter' || event.key === ' ') {
696
- event.preventDefault();
697
- setSelectedTask(task);
698
- }
699
- }}
700
- className={[
701
- 'group w-full cursor-pointer rounded-2xl border bg-card p-3 text-left shadow-xs transition',
702
- isDragging
703
- ? 'opacity-0'
704
- : 'hover:border-primary/40 hover:shadow-lg',
705
- ].join(' ')}
706
- >
707
- <div className="mb-3 flex items-start justify-between gap-2">
708
- <div className="min-w-0 space-y-1">
709
- <p className="line-clamp-2 text-sm font-semibold leading-snug">
710
- {task.name}
711
- </p>
712
- {task.description ? (
713
- <p className="line-clamp-2 text-xs leading-5 text-muted-foreground">
714
- {task.description.replace(/<[^>]*>/g, '')}
715
- </p>
716
- ) : null}
717
- </div>
718
- <div className="flex items-start gap-2">
719
- <span
720
- className={[
721
- 'shrink-0 rounded-full border px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide',
722
- getPriorityClassName(task.priority),
723
- ].join(' ')}
724
- >
725
- {getTaskPriorityLabel(task.priority)}
726
- </span>
727
- <Button
728
- type="button"
729
- variant="ghost"
730
- size="icon"
731
- className="size-7 shrink-0 rounded-full opacity-0 transition group-hover:opacity-100"
732
- onPointerDown={(event) =>
733
- event.stopPropagation()
734
- }
735
- onClick={(event) => {
736
- event.stopPropagation();
737
- openEditTaskForm(task);
738
- }}
739
- >
740
- <Pencil className="size-3.5" />
741
- </Button>
742
- </div>
743
- </div>
744
-
745
- {tags.length > 0 ? (
746
- <div className="mb-3 flex flex-wrap gap-1">
747
- {tags.slice(0, 4).map((tag) => (
748
- <span
749
- key={`${task.id}-${tag}`}
750
- className="rounded-full border bg-muted/60 px-2 py-0.5 text-[10px] font-medium text-muted-foreground"
751
- >
752
- {tag}
753
- </span>
754
- ))}
755
- {tags.length > 4 ? (
756
- <span className="rounded-full border bg-muted/60 px-2 py-0.5 text-[10px] font-medium text-muted-foreground">
757
- +{tags.length - 4}
758
- </span>
759
- ) : null}
760
- </div>
761
- ) : null}
762
-
763
- <div className="grid grid-cols-2 gap-2 text-xs">
764
- <div
765
- className={[
766
- 'rounded-xl border bg-muted/20 px-2 py-1.5',
767
- isPastDue(task.dueDate) && task.status !== 'done'
768
- ? 'border-rose-500/30 bg-rose-500/10 text-rose-700 dark:text-rose-300'
769
- : 'text-muted-foreground',
770
- ].join(' ')}
771
- >
772
- <span className="flex items-center gap-1">
773
- <AlarmClock className="size-3.5" />
774
- {formatDate(
775
- task.dueDate,
776
- getSettingValue,
777
- currentLocaleCode
778
- )}
779
- </span>
780
- </div>
781
- <div className="rounded-xl border bg-muted/20 px-2 py-1.5 text-muted-foreground">
782
- <span className="flex items-center gap-1">
783
- <Timer className="size-3.5" />
784
- {task.estimateHours != null
785
- ? `${task.estimateHours}h`
786
- : '—'}
787
- </span>
788
- </div>
789
- </div>
790
-
791
- <div className="mt-3 space-y-1.5">
792
- <div className="flex items-center justify-between text-[11px] text-muted-foreground">
793
- <span>Progresso</span>
794
- <span>{getTaskProgress(task.status)}%</span>
795
- </div>
796
- <Progress
797
- value={getTaskProgress(task.status)}
798
- className="h-1.5"
799
- />
800
- </div>
801
-
802
- <div className="mt-3 flex items-center justify-between gap-3 border-t pt-3">
803
- <div className="flex min-w-0 items-center gap-2">
804
- <div className="flex size-7 shrink-0 items-center justify-center overflow-hidden rounded-full bg-muted text-[10px] font-semibold uppercase text-muted-foreground ring-1 ring-border">
805
- {(() => {
806
- const photoUrl = getUserPhotoUrl(
807
- task.assigneeUserPhotoId
808
- );
809
- const avatarUrl =
810
- task.assigneePersonAvatarId
811
- ? getPersonAvatarUrl(
812
- task.assigneePersonAvatarId
813
- )
814
- : null;
815
- const imgSrc = photoUrl ?? avatarUrl;
816
- return imgSrc ? (
817
- // eslint-disable-next-line @next/next/no-img-element
818
- <img
819
- src={imgSrc}
820
- alt={task.assigneeName ?? ''}
821
- className="size-full object-cover"
822
- />
823
- ) : (
824
- getInitials(task.assigneeName)
825
- );
826
- })()}
827
- </div>
828
- <span className="truncate text-[11px] text-muted-foreground">
829
- {task.assigneeName ?? '—'}
830
- </span>
831
- </div>
832
- <div className="flex shrink-0 items-center gap-2 text-[11px] text-muted-foreground">
833
- <span className="inline-flex items-center gap-1">
834
- <MessageSquare className="size-3.5" />
835
- {comments}
836
- </span>
837
- <span className="inline-flex items-center gap-1">
838
- <Paperclip className="size-3.5" />
839
- {attachments}
840
- </span>
841
- </div>
842
- </div>
843
- </motion.div>
844
- )}
845
- </DraggableTaskCard>
846
- );
847
- })}
848
- </AnimatePresence>
849
- </div>
850
- </div>
851
- )}
852
- </DroppableColumn>
853
- ))}
854
- </div>
855
- </DndContext>
856
- </SectionCard>
857
-
858
- <SectionCard
859
- title={t('sections.archivedTasks')}
860
- description={t('sections.archivedTasksDescription')}
861
- className="rounded-xl border bg-card p-4 shadow-sm"
862
- >
863
- {archivedTasks.length > 0 ? (
864
- <div className="overflow-x-auto rounded-lg border bg-muted/10">
865
- <Table>
866
- <TableHeader>
867
- <TableRow>
868
- <TableHead>{commonT('labels.name')}</TableHead>
869
- <TableHead>{commonT('labels.status')}</TableHead>
870
- <TableHead>{commonT('labels.deadline')}</TableHead>
871
- <TableHead className="text-right">
872
- {commonT('labels.actions')}
873
- </TableHead>
874
- </TableRow>
875
- </TableHeader>
876
- <TableBody>
877
- {archivedTasks.map((task) => (
878
- <TableRow
879
- key={task.id}
880
- className="cursor-pointer hover:bg-muted/30"
881
- onClick={() => setSelectedTask(task)}
882
- >
883
- <TableCell>
884
- <div className="min-w-0">
885
- <div className="truncate font-medium">{task.name}</div>
886
- {task.description ? (
887
- <div className="truncate text-xs text-muted-foreground">
888
- {task.description}
889
- </div>
890
- ) : null}
891
- </div>
892
- </TableCell>
893
- <TableCell>
894
- <StatusBadge
895
- label={
896
- KANBAN_COLUMNS.find(
897
- (column) => column.id === task.status
898
- )?.label ?? formatEnumLabel(task.status)
899
- }
900
- className={getStatusBadgeClass(task.status)}
901
- />
902
- </TableCell>
903
- <TableCell>
904
- {formatDate(
905
- task.dueDate,
906
- getSettingValue,
907
- currentLocaleCode
908
- )}
909
- </TableCell>
910
- <TableCell>
911
- <div className="flex justify-end gap-2">
912
- <Button
913
- variant="outline"
914
- size="sm"
915
- className="gap-2"
916
- onClick={(event) => {
917
- event.stopPropagation();
918
- void handleRestoreTask(task.id);
919
- }}
920
- >
921
- <ArchiveRestore className="size-4" />
922
- {commonT('actions.unarchive')}
923
- </Button>
924
- <Button
925
- variant="destructive"
926
- size="sm"
927
- className="gap-2"
928
- onClick={(event) => {
929
- event.stopPropagation();
930
- setDeletePromptTask(task);
931
- }}
932
- >
933
- <Trash2 className="size-4" />
934
- {commonT('actions.delete')}
935
- </Button>
936
- </div>
937
- </TableCell>
938
- </TableRow>
939
- ))}
940
- </TableBody>
941
- </Table>
942
- </div>
943
- ) : (
944
- <p className="text-sm text-muted-foreground">
945
- {t('emptyArchivedDescription')}
946
- </p>
947
- )}
948
- </SectionCard>
949
-
950
- <SectionCard
951
- title={t('sections.team')}
952
- description={t('sections.teamDescription')}
953
- className="rounded-xl border bg-card p-4 shadow-sm"
954
- >
955
- {project.assignments.length > 0 ? (
956
- <div className="overflow-x-auto rounded-lg border bg-muted/10">
957
- <Table>
958
- <TableHeader>
959
- <TableRow>
960
- <TableHead>{commonT('labels.collaborator')}</TableHead>
961
- <TableHead>{commonT('labels.role')}</TableHead>
962
- <TableHead>{commonT('labels.status')}</TableHead>
963
- </TableRow>
964
- </TableHeader>
965
- <TableBody>
966
- {project.assignments.map((assignment) => (
967
- <TableRow key={assignment.id}>
968
- <TableCell>
969
- <div className="flex items-center gap-2">
970
- <Avatar className="h-8 w-8 border border-border/60 bg-muted">
971
- <AvatarImage
972
- src={
973
- getUserPhotoUrl(assignment.userPhotoId) ||
974
- getPersonAvatarUrl(assignment.avatarId)
975
- }
976
- alt={assignment.collaboratorName}
977
- />
978
- <AvatarFallback className="bg-muted text-xs font-semibold text-foreground">
979
- {getInitials(assignment.collaboratorName)}
980
- </AvatarFallback>
981
- </Avatar>
982
- <span>{assignment.collaboratorName}</span>
983
- </div>
984
- </TableCell>
985
- <TableCell>
986
- {assignment.roleLabel || commonT('labels.notAssigned')}
987
- </TableCell>
988
- <TableCell>
989
- <StatusBadge
990
- label={assignment.status}
991
- className={getStatusBadgeClass(assignment.status)}
992
- />
993
- </TableCell>
994
- </TableRow>
995
- ))}
996
- </TableBody>
997
- </Table>
998
- </div>
999
- ) : (
1000
- <p className="text-sm text-muted-foreground">{t('noAssignments')}</p>
1001
- )}
1002
- </SectionCard>
1003
-
1004
- <TaskDetailSheet
1005
- task={selectedTask}
1006
- open={selectedTask !== null}
1007
- onOpenChange={(open) => {
1008
- if (!open) setSelectedTask(null);
1009
- }}
1010
- statusLabel={(status) => {
1011
- const map: Record<string, string> = {
1012
- todo: 'Backlog',
1013
- doing: 'Em execução',
1014
- review: 'Revisão',
1015
- done: 'Concluído',
1016
- };
1017
- return map[status] ?? status;
1018
- }}
1019
- footer={
1020
- selectedTask ? (
1021
- <div className="grid grid-cols-2 gap-3">
1022
- {archivedTasks.some((task) => task.id === selectedTask.id) ? (
1023
- <>
1024
- <Button
1025
- variant="outline"
1026
- size="sm"
1027
- className="h-10 gap-2"
1028
- onClick={() => void handleRestoreTask(selectedTask.id)}
1029
- >
1030
- <ArchiveRestore className="size-3.5" />
1031
- {commonT('actions.unarchive')}
1032
- </Button>
1033
- <Button
1034
- variant="destructive"
1035
- size="sm"
1036
- className="h-10 gap-2"
1037
- onClick={() => setDeletePromptTask(selectedTask)}
1038
- >
1039
- <Trash2 className="size-3.5" />
1040
- {commonT('actions.delete')}
1041
- </Button>
1042
- </>
1043
- ) : (
1044
- <>
1045
- <Button
1046
- variant="outline"
1047
- size="sm"
1048
- className="h-10 gap-2"
1049
- onClick={() => openEditTaskForm(selectedTask as BoardTask)}
1050
- >
1051
- <Pencil className="size-3.5" />
1052
- {commonT('actions.edit')}
1053
- </Button>
1054
- <Button
1055
- variant="destructive"
1056
- size="sm"
1057
- className="h-10 gap-2"
1058
- onClick={() => void handleArchiveTask(selectedTask.id)}
1059
- >
1060
- <Archive className="size-3.5" />
1061
- {commonT('actions.archive')}
1062
- </Button>
1063
- </>
1064
- )}
1065
- </div>
1066
- ) : null
1067
- }
1068
- />
1069
-
1070
- <Dialog
1071
- open={taskFormOpen}
1072
- onOpenChange={(open) => {
1073
- if (!open) {
1074
- setTaskFormOpen(false);
1075
- setEditingTaskId(null);
1076
- setTaskFormData(EMPTY_TASK_FORM);
1077
- }
1078
- }}
1079
- >
1080
- <DialogContent className="sm:max-w-lg">
1081
- <DialogHeader>
1082
- <DialogTitle>
1083
- {editingTaskId ? t('taskForm.titleEdit') : t('taskForm.titleNew')}
1084
- </DialogTitle>
1085
- </DialogHeader>
1086
-
1087
- <div className="space-y-4">
1088
- <div className="space-y-1.5">
1089
- <Label htmlFor="task-name">{t('taskForm.nameLabel')} *</Label>
1090
- <Input
1091
- id="task-name"
1092
- placeholder={t('taskForm.namePlaceholder')}
1093
- value={taskFormData.name}
1094
- onChange={(e) =>
1095
- setTaskFormData((prev) => ({
1096
- ...prev,
1097
- name: e.target.value,
1098
- }))
1099
- }
1100
- />
1101
- </div>
1102
-
1103
- <div className="space-y-1.5">
1104
- <Label htmlFor="task-description">
1105
- {t('taskForm.descriptionLabel')}
1106
- </Label>
1107
- <Textarea
1108
- id="task-description"
1109
- placeholder={t('taskForm.descriptionPlaceholder')}
1110
- rows={3}
1111
- value={taskFormData.description}
1112
- onChange={(e) =>
1113
- setTaskFormData((prev) => ({
1114
- ...prev,
1115
- description: e.target.value,
1116
- }))
1117
- }
1118
- />
1119
- </div>
1120
-
1121
- <div className="grid grid-cols-2 gap-3">
1122
- <div className="space-y-1.5">
1123
- <Label>{t('taskForm.priorityLabel')}</Label>
1124
- <Select
1125
- value={taskFormData.priority}
1126
- onValueChange={(v) =>
1127
- setTaskFormData((prev) => ({
1128
- ...prev,
1129
- priority: v as TaskFormState['priority'],
1130
- }))
1131
- }
1132
- >
1133
- <SelectTrigger className="w-full">
1134
- <SelectValue />
1135
- </SelectTrigger>
1136
- <SelectContent>
1137
- <SelectItem value="low">
1138
- {getTaskPriorityLabel('low')}
1139
- </SelectItem>
1140
- <SelectItem value="medium">
1141
- {getTaskPriorityLabel('medium')}
1142
- </SelectItem>
1143
- <SelectItem value="high">
1144
- {getTaskPriorityLabel('high')}
1145
- </SelectItem>
1146
- </SelectContent>
1147
- </Select>
1148
- </div>
1149
-
1150
- <div className="space-y-1.5">
1151
- <Label>{t('taskForm.columnLabel')}</Label>
1152
- <Select
1153
- value={taskFormData.status}
1154
- onValueChange={(v) =>
1155
- setTaskFormData((prev) => ({
1156
- ...prev,
1157
- status: v as BoardColumnId,
1158
- }))
1159
- }
1160
- >
1161
- <SelectTrigger className="w-full">
1162
- <SelectValue />
1163
- </SelectTrigger>
1164
- <SelectContent>
1165
- {KANBAN_COLUMNS.map((col) => (
1166
- <SelectItem key={col.id} value={col.id}>
1167
- {col.label}
1168
- </SelectItem>
1169
- ))}
1170
- </SelectContent>
1171
- </Select>
1172
- </div>
1173
- </div>
1174
-
1175
- <div className="grid grid-cols-2 gap-3">
1176
- <div className="space-y-1.5">
1177
- <Label htmlFor="task-due-date">
1178
- {t('taskForm.deadlineLabel')}
1179
- </Label>
1180
- <Input
1181
- id="task-due-date"
1182
- type="date"
1183
- value={taskFormData.dueDate}
1184
- onChange={(e) =>
1185
- setTaskFormData((prev) => ({
1186
- ...prev,
1187
- dueDate: e.target.value,
1188
- }))
1189
- }
1190
- />
1191
- </div>
1192
-
1193
- <div className="space-y-1.5">
1194
- <Label htmlFor="task-estimate">
1195
- {t('taskForm.estimateLabel')}
1196
- </Label>
1197
- <Input
1198
- id="task-estimate"
1199
- type="number"
1200
- min="0"
1201
- step="0.5"
1202
- placeholder="0"
1203
- value={taskFormData.estimateHours}
1204
- onChange={(e) =>
1205
- setTaskFormData((prev) => ({
1206
- ...prev,
1207
- estimateHours: e.target.value,
1208
- }))
1209
- }
1210
- />
1211
- </div>
1212
- </div>
1213
-
1214
- <div className="space-y-1.5">
1215
- <Label htmlFor="task-tags">{t('taskForm.tagsLabel')}</Label>
1216
- <Input
1217
- id="task-tags"
1218
- placeholder={t('taskForm.tagsPlaceholder')}
1219
- value={taskFormData.tags}
1220
- onChange={(e) =>
1221
- setTaskFormData((prev) => ({
1222
- ...prev,
1223
- tags: e.target.value,
1224
- }))
1225
- }
1226
- />
1227
- </div>
1228
- </div>
1229
-
1230
- <DialogFooter className="mt-4">
1231
- <Button
1232
- variant="outline"
1233
- onClick={() => {
1234
- setTaskFormOpen(false);
1235
- setEditingTaskId(null);
1236
- setTaskFormData(EMPTY_TASK_FORM);
1237
- }}
1238
- disabled={taskFormLoading}
1239
- >
1240
- {commonT('actions.cancel')}
1241
- </Button>
1242
- <Button
1243
- onClick={() => void handleTaskFormSubmit()}
1244
- disabled={taskFormLoading || !taskFormData.name.trim()}
1245
- >
1246
- {taskFormLoading
1247
- ? t('taskForm.saving')
1248
- : editingTaskId
1249
- ? commonT('actions.save')
1250
- : commonT('actions.create')}
1251
- </Button>
1252
- </DialogFooter>
1253
- </DialogContent>
1254
- </Dialog>
1255
-
1256
- <Dialog
1257
- open={deletePromptTask !== null}
1258
- onOpenChange={(open) => {
1259
- if (!open) {
1260
- setDeletePromptTask(null);
1261
- }
1262
- }}
1263
- >
1264
- <DialogContent className="sm:max-w-lg">
1265
- <DialogHeader>
1266
- <DialogTitle>{t('dialogs.deleteTitle')}</DialogTitle>
1267
- </DialogHeader>
1268
- <p className="text-sm text-muted-foreground">
1269
- {t('dialogs.deleteDescription')}
1270
- </p>
1271
- <DialogFooter className="gap-2 sm:justify-between">
1272
- <Button variant="ghost" onClick={() => setDeletePromptTask(null)}>
1273
- {commonT('actions.cancel')}
1274
- </Button>
1275
- {deletePromptTask ? (
1276
- <Button
1277
- variant="destructive"
1278
- onClick={() => void handleDeleteTask(deletePromptTask.id)}
1279
- >
1280
- {commonT('actions.delete')}
1281
- </Button>
1282
- ) : null}
1283
- </DialogFooter>
1284
- </DialogContent>
1285
- </Dialog>
1286
- </Page>
1287
- );
1288
- }