@hed-hog/operations 0.0.321 → 0.0.325

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 (701) hide show
  1. package/dist/controllers/operations-collaborators.controller.d.ts +9 -0
  2. package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -1
  3. package/dist/controllers/operations-collaborators.controller.js +25 -0
  4. package/dist/controllers/operations-collaborators.controller.js.map +1 -1
  5. package/dist/controllers/operations-contracts.controller.d.ts +9 -9
  6. package/dist/controllers/operations-project-costs.controller.d.ts +422 -0
  7. package/dist/controllers/operations-project-costs.controller.d.ts.map +1 -0
  8. package/dist/controllers/operations-project-costs.controller.js +250 -0
  9. package/dist/controllers/operations-project-costs.controller.js.map +1 -0
  10. package/dist/controllers/operations-reports.controller.d.ts +9 -0
  11. package/dist/controllers/operations-reports.controller.d.ts.map +1 -1
  12. package/dist/controllers/operations-tasks.controller.d.ts +64 -0
  13. package/dist/controllers/operations-tasks.controller.d.ts.map +1 -1
  14. package/dist/controllers/operations-tasks.controller.js +85 -0
  15. package/dist/controllers/operations-tasks.controller.js.map +1 -1
  16. package/dist/controllers/operations-timesheets.controller.d.ts +1 -0
  17. package/dist/controllers/operations-timesheets.controller.d.ts.map +1 -1
  18. package/dist/dto/create-collaborator-project-assignment.dto.d.ts +5 -0
  19. package/dist/dto/create-collaborator-project-assignment.dto.d.ts.map +1 -0
  20. package/dist/dto/create-collaborator-project-assignment.dto.js +30 -0
  21. package/dist/dto/create-collaborator-project-assignment.dto.js.map +1 -0
  22. package/dist/dto/create-project-cost-category.dto.d.ts +10 -0
  23. package/dist/dto/create-project-cost-category.dto.d.ts.map +1 -0
  24. package/dist/dto/create-project-cost-category.dto.js +59 -0
  25. package/dist/dto/create-project-cost-category.dto.js.map +1 -0
  26. package/dist/dto/create-project-cost-type.dto.d.ts +14 -0
  27. package/dist/dto/create-project-cost-type.dto.d.ts.map +1 -0
  28. package/dist/dto/create-project-cost-type.dto.js +87 -0
  29. package/dist/dto/create-project-cost-type.dto.js.map +1 -0
  30. package/dist/dto/create-project-cost.dto.d.ts +22 -0
  31. package/dist/dto/create-project-cost.dto.d.ts.map +1 -0
  32. package/dist/dto/create-project-cost.dto.js +135 -0
  33. package/dist/dto/create-project-cost.dto.js.map +1 -0
  34. package/dist/dto/create-task.dto.d.ts.map +1 -1
  35. package/dist/dto/create-task.dto.js +0 -1
  36. package/dist/dto/create-task.dto.js.map +1 -1
  37. package/dist/dto/get-project-cost-report.dto.d.ts +10 -0
  38. package/dist/dto/get-project-cost-report.dto.d.ts.map +1 -0
  39. package/dist/dto/get-project-cost-report.dto.js +65 -0
  40. package/dist/dto/get-project-cost-report.dto.js.map +1 -0
  41. package/dist/dto/list-project-cost-categories.dto.d.ts +6 -0
  42. package/dist/dto/list-project-cost-categories.dto.d.ts.map +1 -0
  43. package/dist/dto/list-project-cost-categories.dto.js +34 -0
  44. package/dist/dto/list-project-cost-categories.dto.js.map +1 -0
  45. package/dist/dto/list-project-cost-types.dto.d.ts +8 -0
  46. package/dist/dto/list-project-cost-types.dto.d.ts.map +1 -0
  47. package/dist/dto/list-project-cost-types.dto.js +45 -0
  48. package/dist/dto/list-project-cost-types.dto.js.map +1 -0
  49. package/dist/dto/list-project-costs.dto.d.ts +14 -0
  50. package/dist/dto/list-project-costs.dto.d.ts.map +1 -0
  51. package/dist/dto/list-project-costs.dto.js +81 -0
  52. package/dist/dto/list-project-costs.dto.js.map +1 -0
  53. package/dist/dto/list-tasks.dto.d.ts +1 -0
  54. package/dist/dto/list-tasks.dto.d.ts.map +1 -1
  55. package/dist/dto/list-tasks.dto.js +6 -0
  56. package/dist/dto/list-tasks.dto.js.map +1 -1
  57. package/dist/dto/list-timesheets.dto.d.ts +1 -0
  58. package/dist/dto/list-timesheets.dto.d.ts.map +1 -1
  59. package/dist/dto/list-timesheets.dto.js +7 -0
  60. package/dist/dto/list-timesheets.dto.js.map +1 -1
  61. package/dist/dto/update-collaborator-project-assignment.dto.d.ts +11 -0
  62. package/dist/dto/update-collaborator-project-assignment.dto.d.ts.map +1 -0
  63. package/dist/dto/update-collaborator-project-assignment.dto.js +65 -0
  64. package/dist/dto/update-collaborator-project-assignment.dto.js.map +1 -0
  65. package/dist/dto/update-project-cost-category.dto.d.ts +6 -0
  66. package/dist/dto/update-project-cost-category.dto.d.ts.map +1 -0
  67. package/dist/dto/update-project-cost-category.dto.js +9 -0
  68. package/dist/dto/update-project-cost-category.dto.js.map +1 -0
  69. package/dist/dto/update-project-cost-type.dto.d.ts +6 -0
  70. package/dist/dto/update-project-cost-type.dto.d.ts.map +1 -0
  71. package/dist/dto/update-project-cost-type.dto.js +9 -0
  72. package/dist/dto/update-project-cost-type.dto.js.map +1 -0
  73. package/dist/dto/update-project-cost.dto.d.ts +6 -0
  74. package/dist/dto/update-project-cost.dto.d.ts.map +1 -0
  75. package/dist/dto/update-project-cost.dto.js +9 -0
  76. package/dist/dto/update-project-cost.dto.js.map +1 -0
  77. package/dist/dto/update-task.dto.d.ts.map +1 -1
  78. package/dist/dto/update-task.dto.js +0 -1
  79. package/dist/dto/update-task.dto.js.map +1 -1
  80. package/dist/operations.module.d.ts.map +1 -1
  81. package/dist/operations.module.js +2 -0
  82. package/dist/operations.module.js.map +1 -1
  83. package/dist/operations.service.d.ts +584 -0
  84. package/dist/operations.service.d.ts.map +1 -1
  85. package/dist/operations.service.js +1734 -69
  86. package/dist/operations.service.js.map +1 -1
  87. package/hedhog/data/menu.yaml +52 -0
  88. package/hedhog/data/operations_project_cost_category.yaml +80 -0
  89. package/hedhog/data/operations_project_cost_type.yaml +503 -0
  90. package/hedhog/data/route.yaml +313 -0
  91. package/hedhog/frontend/app/_components/collaborator-costs-section.tsx.ejs +2 -18
  92. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +185 -276
  93. package/hedhog/frontend/app/_components/collaborator-tasks-tab.tsx.ejs +358 -0
  94. package/hedhog/frontend/app/_components/collaborator-timesheets-tab.tsx.ejs +242 -0
  95. package/hedhog/frontend/app/_components/my-project-summary-screen.tsx.ejs +167 -59
  96. package/hedhog/frontend/app/_components/person-select-with-create.tsx.ejs +1 -826
  97. package/hedhog/frontend/app/_components/project-assignments-tab.tsx.ejs +450 -0
  98. package/hedhog/frontend/app/_components/project-cost-report-screen.tsx.ejs +602 -0
  99. package/hedhog/frontend/app/_components/project-costs-section.tsx.ejs +1401 -0
  100. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +3390 -889
  101. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +118 -79
  102. package/hedhog/frontend/app/_components/task-detail-sheet.tsx.ejs +297 -2
  103. package/hedhog/frontend/app/_components/task-file-attachments.tsx.ejs +388 -0
  104. package/hedhog/frontend/app/_components/task-form-sheet.tsx.ejs +530 -0
  105. package/hedhog/frontend/app/_lib/api.ts.ejs +247 -0
  106. package/hedhog/frontend/app/_lib/types.ts.ejs +197 -7
  107. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +9 -3
  108. package/hedhog/frontend/app/collaborators/page.tsx.ejs +18 -7
  109. package/hedhog/frontend/app/my-tasks/page.tsx.ejs +340 -133
  110. package/hedhog/frontend/app/project-cost-categories/page.tsx.ejs +674 -0
  111. package/hedhog/frontend/app/project-cost-types/page.tsx.ejs +845 -0
  112. package/hedhog/frontend/app/projects/[id]/costs-report/page.tsx.ejs +10 -0
  113. package/hedhog/frontend/app/projects/page.tsx.ejs +105 -22
  114. package/hedhog/frontend/app/reports/collaborators/page.tsx.ejs +20 -349
  115. package/hedhog/frontend/app/reports/projects/page.tsx.ejs +192 -484
  116. package/hedhog/frontend/messages/en.json +421 -11
  117. package/hedhog/frontend/messages/en.json.ejs +2043 -0
  118. package/hedhog/frontend/messages/operations/en.json +2068 -0
  119. package/hedhog/frontend/messages/operations/operations/en.json +2102 -0
  120. package/hedhog/frontend/messages/operations/operations/pt.json +2111 -0
  121. package/hedhog/frontend/messages/operations/pt.json +2072 -0
  122. package/hedhog/frontend/messages/pt.json +426 -14
  123. package/hedhog/frontend/messages/pt.json.ejs +2056 -0
  124. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts +29 -0
  125. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts.map +1 -0
  126. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js +95 -0
  127. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js.map +1 -0
  128. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.tsx +233 -0
  129. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts +10 -0
  130. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts.map +1 -0
  131. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js +577 -0
  132. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js.map +1 -0
  133. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.tsx +868 -0
  134. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts +4 -0
  135. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts.map +1 -0
  136. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js +337 -0
  137. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js.map +1 -0
  138. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.tsx +476 -0
  139. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts +9 -0
  140. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts.map +1 -0
  141. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js +1348 -0
  142. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js.map +1 -0
  143. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.tsx +2233 -0
  144. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts +12 -0
  145. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts.map +1 -0
  146. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js +162 -0
  147. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js.map +1 -0
  148. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.tsx +261 -0
  149. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts +18 -0
  150. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts.map +1 -0
  151. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js +145 -0
  152. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js.map +1 -0
  153. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.tsx +258 -0
  154. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts +4 -0
  155. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts.map +1 -0
  156. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js +223 -0
  157. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js.map +1 -0
  158. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.tsx +342 -0
  159. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts +58 -0
  160. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts.map +1 -0
  161. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js +438 -0
  162. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js.map +1 -0
  163. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.tsx +698 -0
  164. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts +20 -0
  165. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts.map +1 -0
  166. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js +233 -0
  167. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js.map +1 -0
  168. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.tsx +392 -0
  169. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts +4 -0
  170. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts.map +1 -0
  171. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js +814 -0
  172. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js.map +1 -0
  173. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.tsx +1288 -0
  174. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts +21 -0
  175. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts.map +1 -0
  176. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js +174 -0
  177. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js.map +1 -0
  178. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.tsx +306 -0
  179. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts +10 -0
  180. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts.map +1 -0
  181. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js +12 -0
  182. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js.map +1 -0
  183. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.tsx +29 -0
  184. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts +15 -0
  185. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts.map +1 -0
  186. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js +501 -0
  187. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js.map +1 -0
  188. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.tsx +853 -0
  189. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts +6 -0
  190. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts.map +1 -0
  191. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js +847 -0
  192. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js.map +1 -0
  193. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.tsx +1340 -0
  194. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts +4 -0
  195. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts.map +1 -0
  196. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js +2930 -0
  197. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js.map +1 -0
  198. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.tsx +4378 -0
  199. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts +9 -0
  200. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts.map +1 -0
  201. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js +1013 -0
  202. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js.map +1 -0
  203. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.tsx +1745 -0
  204. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts +13 -0
  205. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts.map +1 -0
  206. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js +38 -0
  207. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js.map +1 -0
  208. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.tsx +74 -0
  209. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts +7 -0
  210. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts.map +1 -0
  211. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js +11 -0
  212. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js.map +1 -0
  213. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.tsx +15 -0
  214. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts +18 -0
  215. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts.map +1 -0
  216. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js +406 -0
  217. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js.map +1 -0
  218. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.tsx +660 -0
  219. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts +26 -0
  220. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts.map +1 -0
  221. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js +332 -0
  222. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js.map +1 -0
  223. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.tsx +518 -0
  224. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts +6 -0
  225. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts.map +1 -0
  226. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js +255 -0
  227. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js.map +1 -0
  228. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.tsx +388 -0
  229. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts +10 -0
  230. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts.map +1 -0
  231. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js +131 -0
  232. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js.map +1 -0
  233. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.tsx +214 -0
  234. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts +108 -0
  235. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts.map +1 -0
  236. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js +162 -0
  237. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js.map +1 -0
  238. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.ts +428 -0
  239. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts +8 -0
  240. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts.map +1 -0
  241. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js +36 -0
  242. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js.map +1 -0
  243. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.ts +44 -0
  244. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts +836 -0
  245. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts.map +1 -0
  246. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js +3 -0
  247. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js.map +1 -0
  248. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.ts +860 -0
  249. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts +16 -0
  250. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts.map +1 -0
  251. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js +182 -0
  252. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js.map +1 -0
  253. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.ts +250 -0
  254. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts +4 -0
  255. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts.map +1 -0
  256. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js +51 -0
  257. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js.map +1 -0
  258. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.ts +61 -0
  259. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts +2 -0
  260. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts.map +1 -0
  261. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js +954 -0
  262. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js.map +1 -0
  263. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.tsx +1277 -0
  264. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts +2 -0
  265. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts.map +1 -0
  266. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js +488 -0
  267. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js.map +1 -0
  268. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.tsx +805 -0
  269. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts +6 -0
  270. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts.map +1 -0
  271. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js +9 -0
  272. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js.map +1 -0
  273. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.tsx +11 -0
  274. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts +6 -0
  275. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts.map +1 -0
  276. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js +9 -0
  277. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js.map +1 -0
  278. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.tsx +11 -0
  279. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts +2 -0
  280. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts.map +1 -0
  281. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js +8 -0
  282. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js.map +1 -0
  283. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.tsx +5 -0
  284. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts +2 -0
  285. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts.map +1 -0
  286. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js +612 -0
  287. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js.map +1 -0
  288. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.tsx +939 -0
  289. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts +6 -0
  290. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts.map +1 -0
  291. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js +9 -0
  292. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js.map +1 -0
  293. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.tsx +11 -0
  294. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts +6 -0
  295. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts.map +1 -0
  296. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js +9 -0
  297. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js.map +1 -0
  298. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.tsx +11 -0
  299. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts +6 -0
  300. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts.map +1 -0
  301. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js +9 -0
  302. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js.map +1 -0
  303. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.tsx +17 -0
  304. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts +2 -0
  305. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts.map +1 -0
  306. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js +348 -0
  307. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js.map +1 -0
  308. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.tsx +536 -0
  309. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts +2 -0
  310. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts.map +1 -0
  311. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js +401 -0
  312. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js.map +1 -0
  313. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.tsx +607 -0
  314. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts +5 -0
  315. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts.map +1 -0
  316. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js +7 -0
  317. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js.map +1 -0
  318. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.tsx +9 -0
  319. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts +6 -0
  320. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts.map +1 -0
  321. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js +9 -0
  322. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js.map +1 -0
  323. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.tsx +11 -0
  324. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts +2 -0
  325. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts.map +1 -0
  326. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js +321 -0
  327. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js.map +1 -0
  328. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.tsx +440 -0
  329. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts +2 -0
  330. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts.map +1 -0
  331. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js +939 -0
  332. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js.map +1 -0
  333. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.tsx +1499 -0
  334. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts +29 -0
  335. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts.map +1 -0
  336. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js +95 -0
  337. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js.map +1 -0
  338. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.tsx +233 -0
  339. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts +10 -0
  340. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts.map +1 -0
  341. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js +577 -0
  342. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js.map +1 -0
  343. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.tsx +868 -0
  344. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts +4 -0
  345. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts.map +1 -0
  346. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js +337 -0
  347. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js.map +1 -0
  348. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.tsx +476 -0
  349. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts +9 -0
  350. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts.map +1 -0
  351. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js +1348 -0
  352. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js.map +1 -0
  353. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.tsx +2233 -0
  354. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts +12 -0
  355. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts.map +1 -0
  356. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js +162 -0
  357. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js.map +1 -0
  358. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.tsx +261 -0
  359. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts +18 -0
  360. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts.map +1 -0
  361. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js +145 -0
  362. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js.map +1 -0
  363. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.tsx +258 -0
  364. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts +4 -0
  365. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts.map +1 -0
  366. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js +223 -0
  367. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js.map +1 -0
  368. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.tsx +342 -0
  369. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts +58 -0
  370. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts.map +1 -0
  371. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js +438 -0
  372. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js.map +1 -0
  373. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.tsx +698 -0
  374. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts +20 -0
  375. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts.map +1 -0
  376. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js +233 -0
  377. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js.map +1 -0
  378. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.tsx +392 -0
  379. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts +4 -0
  380. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts.map +1 -0
  381. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js +814 -0
  382. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js.map +1 -0
  383. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.tsx +1288 -0
  384. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts +21 -0
  385. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts.map +1 -0
  386. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js +174 -0
  387. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js.map +1 -0
  388. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.tsx +306 -0
  389. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts +10 -0
  390. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts.map +1 -0
  391. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js +12 -0
  392. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js.map +1 -0
  393. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.tsx +29 -0
  394. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts +15 -0
  395. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts.map +1 -0
  396. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js +501 -0
  397. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js.map +1 -0
  398. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.tsx +853 -0
  399. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts +6 -0
  400. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts.map +1 -0
  401. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js +459 -0
  402. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js.map +1 -0
  403. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.tsx +598 -0
  404. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts +6 -0
  405. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts.map +1 -0
  406. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js +876 -0
  407. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js.map +1 -0
  408. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.tsx +1368 -0
  409. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts +4 -0
  410. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts.map +1 -0
  411. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js +2930 -0
  412. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js.map +1 -0
  413. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.tsx +4378 -0
  414. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts +9 -0
  415. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts.map +1 -0
  416. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js +1013 -0
  417. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js.map +1 -0
  418. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.tsx +1745 -0
  419. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts +13 -0
  420. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts.map +1 -0
  421. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js +38 -0
  422. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js.map +1 -0
  423. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.tsx +74 -0
  424. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts +7 -0
  425. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts.map +1 -0
  426. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js +11 -0
  427. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js.map +1 -0
  428. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.tsx +15 -0
  429. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts +18 -0
  430. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts.map +1 -0
  431. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js +406 -0
  432. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js.map +1 -0
  433. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.tsx +660 -0
  434. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts +26 -0
  435. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts.map +1 -0
  436. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js +332 -0
  437. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js.map +1 -0
  438. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.tsx +518 -0
  439. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts +6 -0
  440. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts.map +1 -0
  441. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js +255 -0
  442. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js.map +1 -0
  443. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.tsx +388 -0
  444. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts +10 -0
  445. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts.map +1 -0
  446. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js +131 -0
  447. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js.map +1 -0
  448. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.tsx +214 -0
  449. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts +108 -0
  450. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts.map +1 -0
  451. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js +162 -0
  452. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js.map +1 -0
  453. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.ts +428 -0
  454. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts +8 -0
  455. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts.map +1 -0
  456. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js +36 -0
  457. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js.map +1 -0
  458. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.ts +44 -0
  459. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts +836 -0
  460. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts.map +1 -0
  461. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js +3 -0
  462. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js.map +1 -0
  463. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.ts +860 -0
  464. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts +16 -0
  465. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts.map +1 -0
  466. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js +182 -0
  467. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js.map +1 -0
  468. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.ts +250 -0
  469. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts +4 -0
  470. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts.map +1 -0
  471. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js +51 -0
  472. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js.map +1 -0
  473. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.ts +61 -0
  474. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts +2 -0
  475. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts.map +1 -0
  476. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js +954 -0
  477. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js.map +1 -0
  478. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.tsx +1277 -0
  479. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts +2 -0
  480. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts.map +1 -0
  481. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js +488 -0
  482. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js.map +1 -0
  483. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.tsx +805 -0
  484. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts +6 -0
  485. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts.map +1 -0
  486. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js +9 -0
  487. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js.map +1 -0
  488. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.tsx +11 -0
  489. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts +6 -0
  490. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts.map +1 -0
  491. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js +9 -0
  492. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js.map +1 -0
  493. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.tsx +11 -0
  494. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts +2 -0
  495. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts.map +1 -0
  496. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js +8 -0
  497. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js.map +1 -0
  498. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.tsx +5 -0
  499. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts +2 -0
  500. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts.map +1 -0
  501. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js +612 -0
  502. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js.map +1 -0
  503. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.tsx +939 -0
  504. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts +6 -0
  505. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts.map +1 -0
  506. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js +9 -0
  507. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js.map +1 -0
  508. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.tsx +11 -0
  509. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts +6 -0
  510. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts.map +1 -0
  511. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js +9 -0
  512. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js.map +1 -0
  513. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.tsx +11 -0
  514. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts +6 -0
  515. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts.map +1 -0
  516. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js +9 -0
  517. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js.map +1 -0
  518. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.tsx +17 -0
  519. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts +2 -0
  520. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts.map +1 -0
  521. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js +348 -0
  522. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js.map +1 -0
  523. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.tsx +536 -0
  524. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts +2 -0
  525. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts.map +1 -0
  526. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js +401 -0
  527. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js.map +1 -0
  528. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.tsx +607 -0
  529. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts +5 -0
  530. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts.map +1 -0
  531. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js +7 -0
  532. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js.map +1 -0
  533. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.tsx +9 -0
  534. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts +6 -0
  535. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts.map +1 -0
  536. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js +9 -0
  537. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js.map +1 -0
  538. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.tsx +11 -0
  539. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts +2 -0
  540. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts.map +1 -0
  541. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js +321 -0
  542. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js.map +1 -0
  543. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.tsx +440 -0
  544. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts +2 -0
  545. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts.map +1 -0
  546. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js +939 -0
  547. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js.map +1 -0
  548. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.tsx +1499 -0
  549. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts +2 -0
  550. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts.map +1 -0
  551. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js +8 -0
  552. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js.map +1 -0
  553. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.tsx +5 -0
  554. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts +2 -0
  555. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts.map +1 -0
  556. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js +436 -0
  557. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js.map +1 -0
  558. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.tsx +675 -0
  559. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts +2 -0
  560. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts.map +1 -0
  561. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js +563 -0
  562. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js.map +1 -0
  563. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.tsx +846 -0
  564. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts +6 -0
  565. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts.map +1 -0
  566. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js +9 -0
  567. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js.map +1 -0
  568. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.tsx +10 -0
  569. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts +6 -0
  570. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts.map +1 -0
  571. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js +9 -0
  572. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js.map +1 -0
  573. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.tsx +11 -0
  574. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts +6 -0
  575. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts.map +1 -0
  576. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js +9 -0
  577. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js.map +1 -0
  578. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.tsx +11 -0
  579. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts +2 -0
  580. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts.map +1 -0
  581. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js +8 -0
  582. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js.map +1 -0
  583. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.tsx +5 -0
  584. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts +2 -0
  585. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts.map +1 -0
  586. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js +492 -0
  587. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js.map +1 -0
  588. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.tsx +757 -0
  589. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts +2 -0
  590. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts.map +1 -0
  591. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js +342 -0
  592. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js.map +1 -0
  593. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.tsx +430 -0
  594. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts +2 -0
  595. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts.map +1 -0
  596. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js +338 -0
  597. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js.map +1 -0
  598. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.tsx +428 -0
  599. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts +2 -0
  600. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts.map +1 -0
  601. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js +660 -0
  602. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js.map +1 -0
  603. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.tsx +992 -0
  604. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts +2 -0
  605. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts.map +1 -0
  606. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js +515 -0
  607. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js.map +1 -0
  608. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.tsx +707 -0
  609. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts +2 -0
  610. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts.map +1 -0
  611. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js +1141 -0
  612. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js.map +1 -0
  613. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.tsx +1705 -0
  614. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts +2 -0
  615. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts.map +1 -0
  616. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js +8 -0
  617. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js.map +1 -0
  618. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.tsx +5 -0
  619. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts +2 -0
  620. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts.map +1 -0
  621. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js +436 -0
  622. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js.map +1 -0
  623. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.tsx +675 -0
  624. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts +2 -0
  625. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts.map +1 -0
  626. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js +563 -0
  627. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js.map +1 -0
  628. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.tsx +846 -0
  629. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts +6 -0
  630. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts.map +1 -0
  631. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js +9 -0
  632. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js.map +1 -0
  633. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.tsx +11 -0
  634. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts +6 -0
  635. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts.map +1 -0
  636. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js +9 -0
  637. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js.map +1 -0
  638. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.tsx +11 -0
  639. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts +2 -0
  640. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts.map +1 -0
  641. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js +8 -0
  642. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js.map +1 -0
  643. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.tsx +5 -0
  644. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts +2 -0
  645. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts.map +1 -0
  646. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js +492 -0
  647. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js.map +1 -0
  648. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.tsx +757 -0
  649. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts +2 -0
  650. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts.map +1 -0
  651. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js +342 -0
  652. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js.map +1 -0
  653. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.tsx +430 -0
  654. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts +2 -0
  655. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts.map +1 -0
  656. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js +338 -0
  657. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js.map +1 -0
  658. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.tsx +428 -0
  659. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts +2 -0
  660. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts.map +1 -0
  661. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js +660 -0
  662. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js.map +1 -0
  663. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.tsx +992 -0
  664. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts +2 -0
  665. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts.map +1 -0
  666. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js +515 -0
  667. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js.map +1 -0
  668. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.tsx +707 -0
  669. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts +2 -0
  670. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts.map +1 -0
  671. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js +1141 -0
  672. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js.map +1 -0
  673. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.tsx +1705 -0
  674. package/hedhog/table/operations_project_assignment.yaml +1 -0
  675. package/hedhog/table/operations_project_cost.yaml +93 -0
  676. package/hedhog/table/operations_project_cost_category.yaml +37 -0
  677. package/hedhog/table/operations_project_cost_type.yaml +55 -0
  678. package/hedhog/table/operations_task_comment.yaml +26 -0
  679. package/hedhog/table/operations_task_file.yaml +23 -0
  680. package/package.json +5 -5
  681. package/src/controllers/operations-collaborators.controller.ts +26 -0
  682. package/src/controllers/operations-project-costs.controller.ts +249 -0
  683. package/src/controllers/operations-tasks.controller.ts +92 -9
  684. package/src/dto/create-collaborator-project-assignment.dto.ts +14 -0
  685. package/src/dto/create-project-cost-category.dto.ts +37 -0
  686. package/src/dto/create-project-cost-type.dto.ts +64 -0
  687. package/src/dto/create-project-cost.dto.ts +126 -0
  688. package/src/dto/create-task.dto.ts +0 -1
  689. package/src/dto/get-project-cost-report.dto.ts +46 -0
  690. package/src/dto/list-project-cost-categories.dto.ts +17 -0
  691. package/src/dto/list-project-cost-types.dto.ts +28 -0
  692. package/src/dto/list-project-costs.dto.ts +59 -0
  693. package/src/dto/list-tasks.dto.ts +7 -0
  694. package/src/dto/list-timesheets.dto.ts +7 -1
  695. package/src/dto/update-collaborator-project-assignment.dto.ts +58 -0
  696. package/src/dto/update-project-cost-category.dto.ts +4 -0
  697. package/src/dto/update-project-cost-type.dto.ts +4 -0
  698. package/src/dto/update-project-cost.dto.ts +4 -0
  699. package/src/dto/update-task.dto.ts +0 -1
  700. package/src/operations.module.ts +2 -0
  701. package/src/operations.service.ts +2421 -64
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { EmptyState, Page } from '@/components/entity-list';
4
+ import { Avatar, AvatarFallback, AvatarImage } from '@/components/ui/avatar';
4
5
  import { Button } from '@/components/ui/button';
5
6
  import { Checkbox } from '@/components/ui/checkbox';
6
7
  import {
@@ -68,6 +69,7 @@ import { useRouter } from 'next/navigation';
68
69
  import { useEffect, useMemo, useState } from 'react';
69
70
  import { useForm } from 'react-hook-form';
70
71
  import { z } from 'zod';
72
+ import { PersonPicker } from '../../contact/_components/person-picker';
71
73
  import {
72
74
  fetchOperations,
73
75
  getOperationsErrorMessage,
@@ -80,7 +82,7 @@ import type {
80
82
  OperationsProjectDetails,
81
83
  OperationsProjectRole,
82
84
  } from '../_lib/types';
83
- import { formatEnumLabel, getStatusBadgeClass } from '../_lib/utils/format';
85
+ import { formatEnumLabel } from '../_lib/utils/format';
84
86
  import {
85
87
  normalizePercentInput,
86
88
  parseNumberInput,
@@ -89,7 +91,6 @@ import {
89
91
  import { ContractFormScreen } from './contract-form-screen';
90
92
  import { DepartmentSelectWithCreate } from './department-select-with-create';
91
93
  import { OperationsHeader } from './operations-header';
92
- import { PersonSelectWithCreate } from './person-select-with-create';
93
94
 
94
95
  const OPTION_PAGE_SIZE = 12;
95
96
 
@@ -101,6 +102,8 @@ type TeamAssignmentState = {
101
102
  weeklyHours: string;
102
103
  allocationPercent: string;
103
104
  status: string;
105
+ startDate: string;
106
+ endDate: string;
104
107
  };
105
108
 
106
109
  type ProjectFormState = {
@@ -126,6 +129,16 @@ type ProjectFormState = {
126
129
 
127
130
  type ProjectFormValues = ProjectFormState;
128
131
 
132
+ function generateProjectCode(name: string): string {
133
+ const words = name.trim().split(/\s+/).filter(Boolean);
134
+ if (words.length === 0) return '';
135
+ if (words.length === 1) return words[0]!.slice(0, 5).toUpperCase();
136
+ return words
137
+ .map((w) => w[0]!.toUpperCase())
138
+ .join('')
139
+ .slice(0, 6);
140
+ }
141
+
129
142
  function normalizeDateInputValue(value?: string | null) {
130
143
  if (!value) {
131
144
  return '';
@@ -179,11 +192,13 @@ function buildEmptyForm(
179
192
  projectRoleId: 'none',
180
193
  roleLabel: '',
181
194
  weeklyHours: '',
182
- allocationPercent: '',
183
- status: 'active',
184
- })),
185
- };
186
- }
195
+ allocationPercent: '',
196
+ status: 'active',
197
+ startDate: new Date().toISOString().split('T')[0] ?? '',
198
+ endDate: '',
199
+ })),
200
+ };
201
+ }
187
202
 
188
203
  function toFormState(
189
204
  project: OperationsProjectDetails,
@@ -259,8 +274,13 @@ function toFormState(
259
274
  assignment?.allocationPercent !== undefined
260
275
  ? String(assignment.allocationPercent)
261
276
  : '',
262
- status: assignment?.status ?? 'active',
263
- };
277
+ status: assignment?.status ?? 'active',
278
+ startDate:
279
+ normalizeDateInputValue(assignment?.startDate) ||
280
+ new Date().toISOString().split('T')[0] ||
281
+ '',
282
+ endDate: normalizeDateInputValue(assignment?.endDate),
283
+ };
264
284
  }),
265
285
  };
266
286
  }
@@ -272,6 +292,7 @@ type SearchableSelectProps = {
272
292
  id: number;
273
293
  title: string;
274
294
  description?: string | null;
295
+ avatarUrl?: string | null;
275
296
  }>;
276
297
  placeholder: string;
277
298
  searchPlaceholder: string;
@@ -388,6 +409,25 @@ function SearchableSelect({
388
409
  ) : (
389
410
  <span className="mr-2 h-4 w-4" />
390
411
  )}
412
+ {option.avatarUrl !== undefined ? (
413
+ <Avatar className="mr-2 h-6 w-6 shrink-0">
414
+ {option.avatarUrl ? (
415
+ <AvatarImage
416
+ src={option.avatarUrl}
417
+ alt={option.title}
418
+ />
419
+ ) : null}
420
+ <AvatarFallback className="text-[9px] font-medium">
421
+ {option.title
422
+ .trim()
423
+ .split(' ')
424
+ .filter(Boolean)
425
+ .slice(0, 2)
426
+ .map((w) => w[0]!.toUpperCase())
427
+ .join('')}
428
+ </AvatarFallback>
429
+ </Avatar>
430
+ ) : null}
391
431
  <div className="min-w-0">
392
432
  <div className="truncate">{option.title}</div>
393
433
  {option.description ? (
@@ -602,6 +642,7 @@ export function ProjectFormScreen({
602
642
  const [assignmentSearch, setAssignmentSearch] = useState('');
603
643
  const isSheetMode = Boolean(onCancel);
604
644
  const isCreateMode = !projectId;
645
+ const [codeAutoMode, setCodeAutoMode] = useState(isCreateMode);
605
646
 
606
647
  const projectFormSchema = useMemo(
607
648
  () =>
@@ -642,6 +683,8 @@ export function ProjectFormScreen({
642
683
  weeklyHours: z.string(),
643
684
  allocationPercent: z.string(),
644
685
  status: z.string(),
686
+ startDate: z.string(),
687
+ endDate: z.string(),
645
688
  })
646
689
  )
647
690
  .superRefine((assignments, ctx) => {
@@ -682,7 +725,7 @@ export function ProjectFormScreen({
682
725
  });
683
726
  };
684
727
 
685
- const { data: collaborators = [] } = useQuery<OperationsCollaborator[]>({
728
+ const { data: rawCollaborators } = useQuery<OperationsCollaborator[]>({
686
729
  queryKey: ['operations-project-form-collaborators', currentLocaleCode],
687
730
  enabled: access.isDirector,
688
731
  queryFn: () =>
@@ -691,6 +734,12 @@ export function ProjectFormScreen({
691
734
  '/operations/collaborators'
692
735
  ),
693
736
  });
737
+ // Stable reference prevents the useEffect(reset, [collaborators, project]) from
738
+ // re-running on every render while the query is still loading (undefined → [] new ref).
739
+ const collaborators = useMemo(
740
+ () => rawCollaborators ?? [],
741
+ [rawCollaborators]
742
+ );
694
743
 
695
744
  const { data: contracts = [], refetch: refetchContracts } = useQuery<
696
745
  OperationsContract[]
@@ -811,6 +860,11 @@ export function ProjectFormScreen({
811
860
  description: [collaborator.department, collaborator.title]
812
861
  .filter(Boolean)
813
862
  .join(' • '),
863
+ avatarUrl:
864
+ typeof collaborator.personAvatarId === 'number' &&
865
+ collaborator.personAvatarId > 0
866
+ ? `${process.env.NEXT_PUBLIC_API_BASE_URL}/person/avatar/${collaborator.personAvatarId}`
867
+ : null,
814
868
  })),
815
869
  [availableCollaborators]
816
870
  );
@@ -938,8 +992,8 @@ export function ProjectFormScreen({
938
992
  weeklyHours: parseNumberInput(assignment.weeklyHours),
939
993
  allocationPercent: parseNumberInput(assignment.allocationPercent),
940
994
  status: assignment.status,
941
- startDate: trimToNull(values.startDate),
942
- endDate: trimToNull(values.endDate),
995
+ startDate: trimToNull(assignment.startDate),
996
+ endDate: trimToNull(assignment.endDate),
943
997
  })),
944
998
  };
945
999
 
@@ -1041,6 +1095,15 @@ export function ProjectFormScreen({
1041
1095
  {...field}
1042
1096
  placeholder={t('placeholders.name')}
1043
1097
  autoFocus
1098
+ onChange={(e) => {
1099
+ field.onChange(e);
1100
+ if (codeAutoMode) {
1101
+ formMethods.setValue(
1102
+ 'code',
1103
+ generateProjectCode(e.target.value)
1104
+ );
1105
+ }
1106
+ }}
1044
1107
  />
1045
1108
  </FormControl>
1046
1109
  <FormMessage />
@@ -1055,7 +1118,14 @@ export function ProjectFormScreen({
1055
1118
  <FormItem className="min-w-0 lg:col-span-1">
1056
1119
  <FormLabel>{t('fields.code')}</FormLabel>
1057
1120
  <FormControl>
1058
- <Input {...field} placeholder={t('placeholders.code')} />
1121
+ <Input
1122
+ {...field}
1123
+ placeholder={t('placeholders.code')}
1124
+ onChange={(e) => {
1125
+ setCodeAutoMode(false);
1126
+ field.onChange(e);
1127
+ }}
1128
+ />
1059
1129
  </FormControl>
1060
1130
  <FormMessage />
1061
1131
  </FormItem>
@@ -1075,7 +1145,7 @@ export function ProjectFormScreen({
1075
1145
  : ''
1076
1146
  }
1077
1147
  >
1078
- <PersonSelectWithCreate
1148
+ <PersonPicker
1079
1149
  label=""
1080
1150
  entityLabel={t('fields.clientName')}
1081
1151
  value={null}
@@ -1388,71 +1458,6 @@ export function ProjectFormScreen({
1388
1458
  </div>
1389
1459
  </section>
1390
1460
 
1391
- <section className="space-y-3">
1392
- <div className="space-y-0.5">
1393
- <h3 className="text-xs font-semibold uppercase tracking-wide text-muted-foreground">
1394
- {t('sections.contract')}
1395
- </h3>
1396
- <p className="text-[11px] text-muted-foreground/80">
1397
- {t('sections.contractDescription')}
1398
- </p>
1399
- </div>
1400
-
1401
- <div className="grid min-w-0 gap-3 xl:grid-cols-[minmax(0,1.5fr)_minmax(0,1fr)]">
1402
- <div className="rounded-lg border px-3 py-3">
1403
- <div className="flex items-start justify-between gap-3">
1404
- <div className="min-w-0">
1405
- <div className="text-sm font-medium text-foreground">
1406
- {selectedContract?.name ||
1407
- commonT('labels.notAssigned')}
1408
- </div>
1409
- <div className="mt-1 text-xs text-muted-foreground">
1410
- {selectedContract
1411
- ? [
1412
- selectedContract.code,
1413
- selectedContract.clientName,
1414
- formatEnumLabel(selectedContract.contractType),
1415
- ]
1416
- .filter(Boolean)
1417
- .join(' • ')
1418
- : commonT('labels.notAssigned')}
1419
- </div>
1420
- </div>
1421
- {selectedContract?.status ? (
1422
- <span className="shrink-0">
1423
- <span
1424
- className={`inline-flex items-center rounded-full px-2.5 py-1 text-xs font-medium ${getStatusBadgeClass(
1425
- selectedContract.status
1426
- )}`}
1427
- >
1428
- {contractT.has(
1429
- `options.statuses.${selectedContract.status}`
1430
- )
1431
- ? contractT(
1432
- `options.statuses.${selectedContract.status}`
1433
- )
1434
- : formatEnumLabel(selectedContract.status)}
1435
- </span>
1436
- </span>
1437
- ) : null}
1438
- </div>
1439
-
1440
- <div className="mt-3 flex flex-wrap gap-2">
1441
- {selectedContract ? (
1442
- <Button type="button" variant="outline" size="sm" asChild>
1443
- <Link
1444
- href={`/operations/contracts?edit=${selectedContract.id}`}
1445
- >
1446
- <FileText className="size-4" />
1447
- {commonT('actions.openContract')}
1448
- </Link>
1449
- </Button>
1450
- ) : null}
1451
- </div>
1452
- </div>
1453
- </div>
1454
- </section>
1455
-
1456
1461
  <section className="space-y-3">
1457
1462
  <div className="space-y-0.5">
1458
1463
  <h3 className="text-xs font-semibold uppercase tracking-wide text-muted-foreground">
@@ -1608,6 +1613,40 @@ export function ProjectFormScreen({
1608
1613
  );
1609
1614
  }}
1610
1615
  />
1616
+ <div className="flex items-center gap-2 xl:col-span-4">
1617
+ <div className="flex-1">
1618
+ <label className="text-xs text-muted-foreground">
1619
+ {t('fields.assignmentStartDate')}
1620
+ </label>
1621
+ <Input
1622
+ className="h-9"
1623
+ type="date"
1624
+ value={assignment.startDate}
1625
+ disabled={!assignment.selected}
1626
+ onChange={(event) =>
1627
+ updateAssignment(assignment.collaboratorId, {
1628
+ startDate: event.target.value,
1629
+ })
1630
+ }
1631
+ />
1632
+ </div>
1633
+ <div className="flex-1">
1634
+ <label className="text-xs text-muted-foreground">
1635
+ {t('fields.assignmentEndDate')}
1636
+ </label>
1637
+ <Input
1638
+ className="h-9"
1639
+ type="date"
1640
+ value={assignment.endDate}
1641
+ disabled={!assignment.selected}
1642
+ onChange={(event) =>
1643
+ updateAssignment(assignment.collaboratorId, {
1644
+ endDate: event.target.value,
1645
+ })
1646
+ }
1647
+ />
1648
+ </div>
1649
+ </div>
1611
1650
  </div>
1612
1651
  );
1613
1652
  })}
@@ -1,15 +1,35 @@
1
1
  'use client';
2
2
 
3
3
  import type { ReactNode } from 'react';
4
+ import { useState } from 'react';
4
5
  import {
5
6
  Sheet,
6
7
  SheetContent,
7
8
  SheetHeader,
8
9
  SheetTitle,
9
10
  } from '@/components/ui/sheet';
10
- import { useApp } from '@hed-hog/next-app-provider';
11
- import { AlarmClock, Calendar, Tag, User } from 'lucide-react';
11
+ import { Textarea } from '@/components/ui/textarea';
12
+ import { Button } from '@/components/ui/button';
13
+ import { useApp, useQuery } from '@hed-hog/next-app-provider';
14
+ import {
15
+ AlarmClock,
16
+ Calendar,
17
+ MessageSquare,
18
+ Pencil,
19
+ Send,
20
+ Tag,
21
+ Trash2,
22
+ User,
23
+ X,
24
+ } from 'lucide-react';
12
25
  import { useTranslations } from 'next-intl';
26
+ import {
27
+ createTaskComment,
28
+ deleteTaskComment,
29
+ fetchTaskComments,
30
+ updateTaskComment,
31
+ } from '../_lib/api';
32
+ import type { OperationsTaskComment } from '../_lib/types';
13
33
  import { formatDate, getStatusBadgeClass } from '../_lib/utils/format';
14
34
  import { StatusBadge } from './status-badge';
15
35
 
@@ -67,6 +87,20 @@ function getAvatarSrc(task: TaskDetailSheetData | null) {
67
87
  return null;
68
88
  }
69
89
 
90
+ function getCommentAvatarSrc(comment: OperationsTaskComment) {
91
+ if (
92
+ typeof comment.actorUserPhotoId === 'number' &&
93
+ comment.actorUserPhotoId > 0
94
+ )
95
+ return `${process.env.NEXT_PUBLIC_API_BASE_URL}/file/open/${comment.actorUserPhotoId}`;
96
+ if (
97
+ typeof comment.actorPersonAvatarId === 'number' &&
98
+ comment.actorPersonAvatarId > 0
99
+ )
100
+ return `${process.env.NEXT_PUBLIC_API_BASE_URL}/person/avatar/${comment.actorPersonAvatarId}`;
101
+ return null;
102
+ }
103
+
70
104
  function getInitials(value?: string | null) {
71
105
  const parts = String(value ?? '')
72
106
  .trim()
@@ -77,6 +111,262 @@ function getInitials(value?: string | null) {
77
111
  return parts.map((p) => p[0]?.toUpperCase() ?? '').join('');
78
112
  }
79
113
 
114
+ function formatCommentDate(value?: string | null) {
115
+ if (!value) return '';
116
+ const date = new Date(value);
117
+ if (Number.isNaN(date.getTime())) return '';
118
+ const now = new Date();
119
+ const diffMs = now.getTime() - date.getTime();
120
+ const diffMins = Math.floor(diffMs / 60000);
121
+ if (diffMins < 1) return 'agora';
122
+ if (diffMins < 60) return `${diffMins}min atrás`;
123
+ const diffHours = Math.floor(diffMins / 60);
124
+ if (diffHours < 24) return `${diffHours}h atrás`;
125
+ const diffDays = Math.floor(diffHours / 24);
126
+ if (diffDays < 7) return `${diffDays}d atrás`;
127
+ return date.toLocaleDateString('pt-BR', { day: '2-digit', month: 'short' });
128
+ }
129
+
130
+ type TaskCommentsSectionProps = {
131
+ taskId: number;
132
+ };
133
+
134
+ function TaskCommentsSection({ taskId }: TaskCommentsSectionProps) {
135
+ const { request, showToastHandler } = useApp();
136
+ const [newComment, setNewComment] = useState('');
137
+ const [submitting, setSubmitting] = useState(false);
138
+ const [editingId, setEditingId] = useState<number | null>(null);
139
+ const [editContent, setEditContent] = useState('');
140
+ const [savingEditId, setSavingEditId] = useState<number | null>(null);
141
+ const [deletingId, setDeletingId] = useState<number | null>(null);
142
+ const [localComments, setLocalComments] = useState<
143
+ OperationsTaskComment[] | null
144
+ >(null);
145
+
146
+ const { data: fetchedComments = [], refetch } = useQuery<
147
+ OperationsTaskComment[]
148
+ >({
149
+ queryKey: ['task-comments', taskId],
150
+ queryFn: () =>
151
+ fetchTaskComments(request, taskId) as Promise<OperationsTaskComment[]>,
152
+ });
153
+
154
+ const comments = localComments ?? fetchedComments;
155
+
156
+ const handleSubmit = async () => {
157
+ const trimmed = newComment.trim();
158
+ if (!trimmed) return;
159
+ setSubmitting(true);
160
+ try {
161
+ const created = (await createTaskComment(
162
+ request,
163
+ taskId,
164
+ trimmed
165
+ )) as OperationsTaskComment;
166
+ setLocalComments([...(localComments ?? fetchedComments), created]);
167
+ setNewComment('');
168
+ } catch {
169
+ showToastHandler?.('error', 'Erro ao adicionar comentário.');
170
+ } finally {
171
+ setSubmitting(false);
172
+ }
173
+ };
174
+
175
+ const handleStartEdit = (comment: OperationsTaskComment) => {
176
+ setEditingId(comment.id);
177
+ setEditContent(comment.content);
178
+ };
179
+
180
+ const handleCancelEdit = () => {
181
+ setEditingId(null);
182
+ setEditContent('');
183
+ };
184
+
185
+ const handleSaveEdit = async (comment: OperationsTaskComment) => {
186
+ const trimmed = editContent.trim();
187
+ if (!trimmed) return;
188
+ setSavingEditId(comment.id);
189
+ try {
190
+ const updated = (await updateTaskComment(
191
+ request,
192
+ taskId,
193
+ comment.id,
194
+ trimmed
195
+ )) as OperationsTaskComment;
196
+ if (updated) {
197
+ setLocalComments(
198
+ (localComments ?? fetchedComments).map((c) =>
199
+ c.id === comment.id ? updated : c
200
+ )
201
+ );
202
+ }
203
+ setEditingId(null);
204
+ setEditContent('');
205
+ } catch {
206
+ showToastHandler?.('error', 'Não foi possível editar este comentário.');
207
+ } finally {
208
+ setSavingEditId(null);
209
+ }
210
+ };
211
+
212
+ const handleDelete = async (comment: OperationsTaskComment) => {
213
+ setDeletingId(comment.id);
214
+ try {
215
+ await deleteTaskComment(request, taskId, comment.id);
216
+ setLocalComments(
217
+ (localComments ?? fetchedComments).filter((c) => c.id !== comment.id)
218
+ );
219
+ } catch {
220
+ showToastHandler?.('error', 'Não foi possível excluir este comentário.');
221
+ } finally {
222
+ setDeletingId(null);
223
+ }
224
+ };
225
+
226
+ return (
227
+ <div className="flex flex-col gap-3">
228
+ <div className="flex items-center gap-1.5 text-xs font-medium uppercase tracking-wide text-muted-foreground">
229
+ <MessageSquare className="size-3" />
230
+ Comentários
231
+ {comments.length > 0 ? (
232
+ <span className="ml-0.5 rounded-full bg-muted px-1.5 py-0.5 text-[10px] font-semibold text-muted-foreground">
233
+ {comments.length}
234
+ </span>
235
+ ) : null}
236
+ </div>
237
+
238
+ {comments.length > 0 ? (
239
+ <div className="flex flex-col gap-3">
240
+ {comments.map((comment) => {
241
+ const avatarSrc = getCommentAvatarSrc(comment);
242
+ const isEditing = editingId === comment.id;
243
+ const isDeleting = deletingId === comment.id;
244
+ const isSaving = savingEditId === comment.id;
245
+
246
+ return (
247
+ <div key={comment.id} className="flex gap-2.5">
248
+ <div className="mt-0.5 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">
249
+ {avatarSrc ? (
250
+ // eslint-disable-next-line @next/next/no-img-element
251
+ <img
252
+ src={avatarSrc}
253
+ alt={comment.actorName ?? ''}
254
+ className="size-full object-cover"
255
+ />
256
+ ) : (
257
+ getInitials(comment.actorName)
258
+ )}
259
+ </div>
260
+ <div className="min-w-0 flex-1">
261
+ <div className="flex items-center justify-between gap-2">
262
+ <span className="truncate text-xs font-semibold">
263
+ {comment.actorName ?? 'Usuário'}
264
+ </span>
265
+ <div className="flex shrink-0 items-center gap-1">
266
+ <span className="text-[10px] text-muted-foreground">
267
+ {formatCommentDate(comment.createdAt)}
268
+ </span>
269
+ {!isEditing ? (
270
+ <>
271
+ <button
272
+ type="button"
273
+ aria-label="Editar comentário"
274
+ disabled={isDeleting}
275
+ onClick={() => handleStartEdit(comment)}
276
+ className="rounded p-0.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:opacity-50"
277
+ >
278
+ <Pencil className="size-3" />
279
+ </button>
280
+ <button
281
+ type="button"
282
+ aria-label="Excluir comentário"
283
+ disabled={isDeleting}
284
+ onClick={() => void handleDelete(comment)}
285
+ className="rounded p-0.5 text-muted-foreground transition-colors hover:bg-destructive/10 hover:text-destructive disabled:opacity-50"
286
+ >
287
+ <Trash2 className="size-3" />
288
+ </button>
289
+ </>
290
+ ) : null}
291
+ </div>
292
+ </div>
293
+ {isEditing ? (
294
+ <div className="mt-1 flex flex-col gap-1.5">
295
+ <Textarea
296
+ value={editContent}
297
+ onChange={(e) => setEditContent(e.target.value)}
298
+ rows={3}
299
+ className="resize-none text-sm"
300
+ disabled={isSaving}
301
+ onKeyDown={(e) => {
302
+ if (e.key === 'Escape') handleCancelEdit();
303
+ }}
304
+ />
305
+ <div className="flex gap-1.5">
306
+ <Button
307
+ size="sm"
308
+ className="h-7 px-2 text-xs"
309
+ disabled={isSaving || !editContent.trim()}
310
+ onClick={() => void handleSaveEdit(comment)}
311
+ >
312
+ Salvar
313
+ </Button>
314
+ <Button
315
+ size="sm"
316
+ variant="ghost"
317
+ className="h-7 px-2 text-xs"
318
+ disabled={isSaving}
319
+ onClick={handleCancelEdit}
320
+ >
321
+ <X className="size-3" />
322
+ Cancelar
323
+ </Button>
324
+ </div>
325
+ </div>
326
+ ) : (
327
+ <p className="mt-0.5 text-sm leading-relaxed text-foreground">
328
+ {comment.content}
329
+ </p>
330
+ )}
331
+ </div>
332
+ </div>
333
+ );
334
+ })}
335
+ </div>
336
+ ) : (
337
+ <p className="text-xs text-muted-foreground">Nenhum comentário ainda.</p>
338
+ )}
339
+
340
+ <div className="flex flex-col gap-1.5 pt-1">
341
+ <Textarea
342
+ placeholder="Escreva um comentário..."
343
+ value={newComment}
344
+ onChange={(e) => setNewComment(e.target.value)}
345
+ rows={3}
346
+ className="resize-none text-sm"
347
+ disabled={submitting}
348
+ onKeyDown={(e) => {
349
+ if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {
350
+ void handleSubmit();
351
+ }
352
+ }}
353
+ />
354
+ <div className="flex justify-end">
355
+ <Button
356
+ size="sm"
357
+ className="gap-1.5"
358
+ disabled={submitting || !newComment.trim()}
359
+ onClick={() => void handleSubmit()}
360
+ >
361
+ <Send className="size-3.5" />
362
+ Comentar
363
+ </Button>
364
+ </div>
365
+ </div>
366
+ </div>
367
+ );
368
+ }
369
+
80
370
  export function TaskDetailSheet({
81
371
  task,
82
372
  open,
@@ -213,6 +503,10 @@ export function TaskDetailSheet({
213
503
  </div>
214
504
  ) : null}
215
505
 
506
+ <div className="border-t pt-4">
507
+ <TaskCommentsSection taskId={task.id} />
508
+ </div>
509
+
216
510
  {footer ? <div className="border-t pt-5">{footer}</div> : null}
217
511
  </div>
218
512
  </>
@@ -221,3 +515,4 @@ export function TaskDetailSheet({
221
515
  </Sheet>
222
516
  );
223
517
  }
518
+