@hed-hog/operations 0.0.322 → 0.0.326

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 (694) hide show
  1. package/dist/controllers/operations-collaborators.controller.d.ts +14 -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-project-costs.controller.d.ts +422 -0
  6. package/dist/controllers/operations-project-costs.controller.d.ts.map +1 -0
  7. package/dist/controllers/operations-project-costs.controller.js +250 -0
  8. package/dist/controllers/operations-project-costs.controller.js.map +1 -0
  9. package/dist/controllers/operations-reports.controller.d.ts +9 -0
  10. package/dist/controllers/operations-reports.controller.d.ts.map +1 -1
  11. package/dist/controllers/operations-tasks.controller.d.ts +42 -0
  12. package/dist/controllers/operations-tasks.controller.d.ts.map +1 -1
  13. package/dist/controllers/operations-tasks.controller.js +48 -0
  14. package/dist/controllers/operations-tasks.controller.js.map +1 -1
  15. package/dist/controllers/operations-timesheets.controller.d.ts +1 -0
  16. package/dist/controllers/operations-timesheets.controller.d.ts.map +1 -1
  17. package/dist/dto/create-collaborator-project-assignment.dto.d.ts +5 -0
  18. package/dist/dto/create-collaborator-project-assignment.dto.d.ts.map +1 -0
  19. package/dist/dto/create-collaborator-project-assignment.dto.js +30 -0
  20. package/dist/dto/create-collaborator-project-assignment.dto.js.map +1 -0
  21. package/dist/dto/create-project-cost-category.dto.d.ts +10 -0
  22. package/dist/dto/create-project-cost-category.dto.d.ts.map +1 -0
  23. package/dist/dto/create-project-cost-category.dto.js +59 -0
  24. package/dist/dto/create-project-cost-category.dto.js.map +1 -0
  25. package/dist/dto/create-project-cost-type.dto.d.ts +14 -0
  26. package/dist/dto/create-project-cost-type.dto.d.ts.map +1 -0
  27. package/dist/dto/create-project-cost-type.dto.js +87 -0
  28. package/dist/dto/create-project-cost-type.dto.js.map +1 -0
  29. package/dist/dto/create-project-cost.dto.d.ts +22 -0
  30. package/dist/dto/create-project-cost.dto.d.ts.map +1 -0
  31. package/dist/dto/create-project-cost.dto.js +135 -0
  32. package/dist/dto/create-project-cost.dto.js.map +1 -0
  33. package/dist/dto/get-project-cost-report.dto.d.ts +10 -0
  34. package/dist/dto/get-project-cost-report.dto.d.ts.map +1 -0
  35. package/dist/dto/get-project-cost-report.dto.js +65 -0
  36. package/dist/dto/get-project-cost-report.dto.js.map +1 -0
  37. package/dist/dto/list-project-cost-categories.dto.d.ts +6 -0
  38. package/dist/dto/list-project-cost-categories.dto.d.ts.map +1 -0
  39. package/dist/dto/list-project-cost-categories.dto.js +34 -0
  40. package/dist/dto/list-project-cost-categories.dto.js.map +1 -0
  41. package/dist/dto/list-project-cost-types.dto.d.ts +8 -0
  42. package/dist/dto/list-project-cost-types.dto.d.ts.map +1 -0
  43. package/dist/dto/list-project-cost-types.dto.js +45 -0
  44. package/dist/dto/list-project-cost-types.dto.js.map +1 -0
  45. package/dist/dto/list-project-costs.dto.d.ts +14 -0
  46. package/dist/dto/list-project-costs.dto.d.ts.map +1 -0
  47. package/dist/dto/list-project-costs.dto.js +81 -0
  48. package/dist/dto/list-project-costs.dto.js.map +1 -0
  49. package/dist/dto/list-tasks.dto.d.ts +1 -0
  50. package/dist/dto/list-tasks.dto.d.ts.map +1 -1
  51. package/dist/dto/list-tasks.dto.js +6 -0
  52. package/dist/dto/list-tasks.dto.js.map +1 -1
  53. package/dist/dto/list-timesheets.dto.d.ts +1 -0
  54. package/dist/dto/list-timesheets.dto.d.ts.map +1 -1
  55. package/dist/dto/list-timesheets.dto.js +7 -0
  56. package/dist/dto/list-timesheets.dto.js.map +1 -1
  57. package/dist/dto/update-collaborator-project-assignment.dto.d.ts +11 -0
  58. package/dist/dto/update-collaborator-project-assignment.dto.d.ts.map +1 -0
  59. package/dist/dto/update-collaborator-project-assignment.dto.js +65 -0
  60. package/dist/dto/update-collaborator-project-assignment.dto.js.map +1 -0
  61. package/dist/dto/update-project-cost-category.dto.d.ts +6 -0
  62. package/dist/dto/update-project-cost-category.dto.d.ts.map +1 -0
  63. package/dist/dto/update-project-cost-category.dto.js +9 -0
  64. package/dist/dto/update-project-cost-category.dto.js.map +1 -0
  65. package/dist/dto/update-project-cost-type.dto.d.ts +6 -0
  66. package/dist/dto/update-project-cost-type.dto.d.ts.map +1 -0
  67. package/dist/dto/update-project-cost-type.dto.js +9 -0
  68. package/dist/dto/update-project-cost-type.dto.js.map +1 -0
  69. package/dist/dto/update-project-cost.dto.d.ts +6 -0
  70. package/dist/dto/update-project-cost.dto.d.ts.map +1 -0
  71. package/dist/dto/update-project-cost.dto.js +9 -0
  72. package/dist/dto/update-project-cost.dto.js.map +1 -0
  73. package/dist/operations.module.d.ts.map +1 -1
  74. package/dist/operations.module.js +2 -0
  75. package/dist/operations.module.js.map +1 -1
  76. package/dist/operations.service.d.ts +571 -1
  77. package/dist/operations.service.d.ts.map +1 -1
  78. package/dist/operations.service.js +1793 -69
  79. package/dist/operations.service.js.map +1 -1
  80. package/hedhog/data/integration_event_catalog.yaml +313 -0
  81. package/hedhog/data/menu.yaml +52 -0
  82. package/hedhog/data/operations_project_cost_category.yaml +80 -0
  83. package/hedhog/data/operations_project_cost_type.yaml +503 -0
  84. package/hedhog/data/route.yaml +274 -0
  85. package/hedhog/data/setting_group.yaml +21 -0
  86. package/hedhog/frontend/app/_components/collaborator-costs-section.tsx.ejs +2 -18
  87. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +593 -297
  88. package/hedhog/frontend/app/_components/collaborator-tasks-tab.tsx.ejs +358 -0
  89. package/hedhog/frontend/app/_components/collaborator-timesheets-tab.tsx.ejs +242 -0
  90. package/hedhog/frontend/app/_components/my-project-summary-screen.tsx.ejs +533 -296
  91. package/hedhog/frontend/app/_components/person-select-with-create.tsx.ejs +1 -853
  92. package/hedhog/frontend/app/_components/project-assignments-tab.tsx.ejs +450 -0
  93. package/hedhog/frontend/app/_components/project-cost-report-screen.tsx.ejs +602 -0
  94. package/hedhog/frontend/app/_components/project-costs-section.tsx.ejs +1401 -0
  95. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +2248 -2063
  96. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +56 -11
  97. package/hedhog/frontend/app/_components/task-detail-sheet.tsx.ejs +454 -96
  98. package/hedhog/frontend/app/_components/task-form-sheet.tsx.ejs +784 -0
  99. package/hedhog/frontend/app/_lib/api.ts.ejs +256 -0
  100. package/hedhog/frontend/app/_lib/hooks/use-mention-items.ts.ejs +28 -0
  101. package/hedhog/frontend/app/_lib/types.ts.ejs +190 -0
  102. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +9 -3
  103. package/hedhog/frontend/app/collaborators/page.tsx.ejs +18 -7
  104. package/hedhog/frontend/app/my-tasks/page.tsx.ejs +536 -328
  105. package/hedhog/frontend/app/project-cost-categories/page.tsx.ejs +674 -0
  106. package/hedhog/frontend/app/project-cost-types/page.tsx.ejs +845 -0
  107. package/hedhog/frontend/app/projects/[id]/costs-report/page.tsx.ejs +10 -0
  108. package/hedhog/frontend/app/reports/collaborators/page.tsx.ejs +20 -349
  109. package/hedhog/frontend/app/reports/projects/page.tsx.ejs +217 -485
  110. package/hedhog/frontend/messages/en.json +257 -5
  111. package/hedhog/frontend/messages/en.json.ejs +2060 -0
  112. package/hedhog/frontend/messages/operations/en.json +2068 -0
  113. package/hedhog/frontend/messages/operations/operations/en.json +2102 -0
  114. package/hedhog/frontend/messages/operations/operations/pt.json +2111 -0
  115. package/hedhog/frontend/messages/operations/pt.json +2072 -0
  116. package/hedhog/frontend/messages/pt.json +256 -4
  117. package/hedhog/frontend/messages/pt.json.ejs +2067 -0
  118. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts +29 -0
  119. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts.map +1 -0
  120. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js +95 -0
  121. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js.map +1 -0
  122. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.tsx +233 -0
  123. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts +10 -0
  124. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts.map +1 -0
  125. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js +577 -0
  126. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js.map +1 -0
  127. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.tsx +868 -0
  128. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts +4 -0
  129. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts.map +1 -0
  130. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js +337 -0
  131. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js.map +1 -0
  132. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.tsx +476 -0
  133. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts +9 -0
  134. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts.map +1 -0
  135. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js +1348 -0
  136. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js.map +1 -0
  137. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.tsx +2233 -0
  138. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts +12 -0
  139. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts.map +1 -0
  140. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js +162 -0
  141. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js.map +1 -0
  142. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.tsx +261 -0
  143. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts +18 -0
  144. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts.map +1 -0
  145. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js +145 -0
  146. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js.map +1 -0
  147. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.tsx +258 -0
  148. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts +4 -0
  149. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts.map +1 -0
  150. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js +223 -0
  151. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js.map +1 -0
  152. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.tsx +342 -0
  153. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts +58 -0
  154. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts.map +1 -0
  155. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js +438 -0
  156. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js.map +1 -0
  157. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.tsx +698 -0
  158. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts +20 -0
  159. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts.map +1 -0
  160. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js +233 -0
  161. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js.map +1 -0
  162. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.tsx +392 -0
  163. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts +4 -0
  164. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts.map +1 -0
  165. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js +814 -0
  166. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js.map +1 -0
  167. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.tsx +1288 -0
  168. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts +21 -0
  169. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts.map +1 -0
  170. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js +174 -0
  171. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js.map +1 -0
  172. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.tsx +306 -0
  173. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts +10 -0
  174. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts.map +1 -0
  175. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js +12 -0
  176. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js.map +1 -0
  177. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.tsx +29 -0
  178. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts +15 -0
  179. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts.map +1 -0
  180. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js +501 -0
  181. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js.map +1 -0
  182. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.tsx +853 -0
  183. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts +6 -0
  184. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts.map +1 -0
  185. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js +847 -0
  186. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js.map +1 -0
  187. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.tsx +1340 -0
  188. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts +4 -0
  189. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts.map +1 -0
  190. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js +2930 -0
  191. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js.map +1 -0
  192. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.tsx +4378 -0
  193. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts +9 -0
  194. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts.map +1 -0
  195. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js +1013 -0
  196. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js.map +1 -0
  197. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.tsx +1745 -0
  198. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts +13 -0
  199. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts.map +1 -0
  200. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js +38 -0
  201. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js.map +1 -0
  202. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.tsx +74 -0
  203. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts +7 -0
  204. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts.map +1 -0
  205. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js +11 -0
  206. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js.map +1 -0
  207. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.tsx +15 -0
  208. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts +18 -0
  209. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts.map +1 -0
  210. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js +406 -0
  211. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js.map +1 -0
  212. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.tsx +660 -0
  213. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts +26 -0
  214. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts.map +1 -0
  215. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js +332 -0
  216. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js.map +1 -0
  217. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.tsx +518 -0
  218. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts +6 -0
  219. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts.map +1 -0
  220. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js +255 -0
  221. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js.map +1 -0
  222. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.tsx +388 -0
  223. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts +10 -0
  224. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts.map +1 -0
  225. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js +131 -0
  226. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js.map +1 -0
  227. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.tsx +214 -0
  228. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts +108 -0
  229. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts.map +1 -0
  230. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js +162 -0
  231. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js.map +1 -0
  232. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.ts +428 -0
  233. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts +8 -0
  234. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts.map +1 -0
  235. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js +36 -0
  236. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js.map +1 -0
  237. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.ts +44 -0
  238. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts +837 -0
  239. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts.map +1 -0
  240. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js +3 -0
  241. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js.map +1 -0
  242. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.ts +861 -0
  243. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts +16 -0
  244. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts.map +1 -0
  245. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js +182 -0
  246. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js.map +1 -0
  247. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.ts +250 -0
  248. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts +4 -0
  249. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts.map +1 -0
  250. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js +51 -0
  251. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js.map +1 -0
  252. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.ts +61 -0
  253. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts +2 -0
  254. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts.map +1 -0
  255. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js +954 -0
  256. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js.map +1 -0
  257. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.tsx +1277 -0
  258. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts +2 -0
  259. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts.map +1 -0
  260. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js +488 -0
  261. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js.map +1 -0
  262. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.tsx +805 -0
  263. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts +6 -0
  264. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts.map +1 -0
  265. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js +9 -0
  266. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js.map +1 -0
  267. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.tsx +11 -0
  268. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts +6 -0
  269. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts.map +1 -0
  270. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js +9 -0
  271. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js.map +1 -0
  272. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.tsx +11 -0
  273. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts +2 -0
  274. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts.map +1 -0
  275. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js +8 -0
  276. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js.map +1 -0
  277. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.tsx +5 -0
  278. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts +2 -0
  279. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts.map +1 -0
  280. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js +612 -0
  281. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js.map +1 -0
  282. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.tsx +939 -0
  283. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts +6 -0
  284. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts.map +1 -0
  285. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js +9 -0
  286. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js.map +1 -0
  287. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.tsx +11 -0
  288. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts +6 -0
  289. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts.map +1 -0
  290. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js +9 -0
  291. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js.map +1 -0
  292. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.tsx +11 -0
  293. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts +6 -0
  294. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts.map +1 -0
  295. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js +9 -0
  296. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js.map +1 -0
  297. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.tsx +17 -0
  298. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts +2 -0
  299. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts.map +1 -0
  300. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js +348 -0
  301. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js.map +1 -0
  302. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.tsx +536 -0
  303. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts +2 -0
  304. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts.map +1 -0
  305. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js +401 -0
  306. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js.map +1 -0
  307. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.tsx +607 -0
  308. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts +5 -0
  309. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts.map +1 -0
  310. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js +7 -0
  311. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js.map +1 -0
  312. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.tsx +9 -0
  313. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts +6 -0
  314. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts.map +1 -0
  315. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js +9 -0
  316. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js.map +1 -0
  317. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.tsx +11 -0
  318. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts +2 -0
  319. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts.map +1 -0
  320. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js +321 -0
  321. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js.map +1 -0
  322. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.tsx +440 -0
  323. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts +2 -0
  324. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts.map +1 -0
  325. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js +939 -0
  326. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js.map +1 -0
  327. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.tsx +1499 -0
  328. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts +29 -0
  329. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts.map +1 -0
  330. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js +95 -0
  331. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js.map +1 -0
  332. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.tsx +233 -0
  333. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts +10 -0
  334. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts.map +1 -0
  335. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js +577 -0
  336. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js.map +1 -0
  337. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.tsx +868 -0
  338. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts +4 -0
  339. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts.map +1 -0
  340. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js +337 -0
  341. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js.map +1 -0
  342. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.tsx +476 -0
  343. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts +9 -0
  344. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts.map +1 -0
  345. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js +1348 -0
  346. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js.map +1 -0
  347. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.tsx +2233 -0
  348. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts +12 -0
  349. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts.map +1 -0
  350. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js +162 -0
  351. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js.map +1 -0
  352. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.tsx +261 -0
  353. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts +18 -0
  354. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts.map +1 -0
  355. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js +145 -0
  356. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js.map +1 -0
  357. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.tsx +258 -0
  358. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts +4 -0
  359. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts.map +1 -0
  360. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js +223 -0
  361. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js.map +1 -0
  362. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.tsx +342 -0
  363. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts +58 -0
  364. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts.map +1 -0
  365. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js +438 -0
  366. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js.map +1 -0
  367. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.tsx +698 -0
  368. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts +20 -0
  369. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts.map +1 -0
  370. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js +233 -0
  371. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js.map +1 -0
  372. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.tsx +392 -0
  373. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts +4 -0
  374. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts.map +1 -0
  375. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js +814 -0
  376. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js.map +1 -0
  377. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.tsx +1288 -0
  378. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts +21 -0
  379. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts.map +1 -0
  380. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js +174 -0
  381. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js.map +1 -0
  382. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.tsx +306 -0
  383. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts +10 -0
  384. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts.map +1 -0
  385. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js +12 -0
  386. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js.map +1 -0
  387. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.tsx +29 -0
  388. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts +15 -0
  389. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts.map +1 -0
  390. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js +501 -0
  391. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js.map +1 -0
  392. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.tsx +853 -0
  393. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts +6 -0
  394. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts.map +1 -0
  395. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js +459 -0
  396. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js.map +1 -0
  397. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.tsx +598 -0
  398. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts +6 -0
  399. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts.map +1 -0
  400. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js +876 -0
  401. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js.map +1 -0
  402. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.tsx +1368 -0
  403. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts +4 -0
  404. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts.map +1 -0
  405. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js +2930 -0
  406. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js.map +1 -0
  407. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.tsx +4378 -0
  408. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts +9 -0
  409. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts.map +1 -0
  410. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js +1013 -0
  411. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js.map +1 -0
  412. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.tsx +1745 -0
  413. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts +13 -0
  414. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts.map +1 -0
  415. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js +38 -0
  416. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js.map +1 -0
  417. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.tsx +74 -0
  418. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts +7 -0
  419. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts.map +1 -0
  420. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js +11 -0
  421. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js.map +1 -0
  422. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.tsx +15 -0
  423. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts +18 -0
  424. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts.map +1 -0
  425. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js +406 -0
  426. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js.map +1 -0
  427. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.tsx +660 -0
  428. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts +26 -0
  429. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts.map +1 -0
  430. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js +332 -0
  431. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js.map +1 -0
  432. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.tsx +518 -0
  433. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts +6 -0
  434. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts.map +1 -0
  435. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js +255 -0
  436. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js.map +1 -0
  437. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.tsx +388 -0
  438. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts +10 -0
  439. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts.map +1 -0
  440. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js +131 -0
  441. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js.map +1 -0
  442. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.tsx +214 -0
  443. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts +108 -0
  444. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts.map +1 -0
  445. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js +162 -0
  446. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js.map +1 -0
  447. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.ts +428 -0
  448. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts +8 -0
  449. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts.map +1 -0
  450. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js +36 -0
  451. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js.map +1 -0
  452. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.ts +44 -0
  453. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts +837 -0
  454. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts.map +1 -0
  455. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js +3 -0
  456. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js.map +1 -0
  457. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.ts +861 -0
  458. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts +16 -0
  459. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts.map +1 -0
  460. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js +182 -0
  461. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js.map +1 -0
  462. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.ts +250 -0
  463. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts +4 -0
  464. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts.map +1 -0
  465. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js +51 -0
  466. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js.map +1 -0
  467. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.ts +61 -0
  468. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts +2 -0
  469. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts.map +1 -0
  470. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js +954 -0
  471. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js.map +1 -0
  472. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.tsx +1277 -0
  473. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts +2 -0
  474. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts.map +1 -0
  475. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js +488 -0
  476. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js.map +1 -0
  477. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.tsx +805 -0
  478. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts +6 -0
  479. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts.map +1 -0
  480. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js +9 -0
  481. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js.map +1 -0
  482. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.tsx +11 -0
  483. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts +6 -0
  484. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts.map +1 -0
  485. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js +9 -0
  486. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js.map +1 -0
  487. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.tsx +11 -0
  488. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts +2 -0
  489. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts.map +1 -0
  490. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js +8 -0
  491. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js.map +1 -0
  492. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.tsx +5 -0
  493. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts +2 -0
  494. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts.map +1 -0
  495. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js +612 -0
  496. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js.map +1 -0
  497. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.tsx +939 -0
  498. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts +6 -0
  499. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts.map +1 -0
  500. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js +9 -0
  501. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js.map +1 -0
  502. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.tsx +11 -0
  503. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts +6 -0
  504. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts.map +1 -0
  505. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js +9 -0
  506. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js.map +1 -0
  507. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.tsx +11 -0
  508. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts +6 -0
  509. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts.map +1 -0
  510. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js +9 -0
  511. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js.map +1 -0
  512. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.tsx +17 -0
  513. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts +2 -0
  514. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts.map +1 -0
  515. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js +348 -0
  516. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js.map +1 -0
  517. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.tsx +536 -0
  518. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts +2 -0
  519. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts.map +1 -0
  520. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js +401 -0
  521. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js.map +1 -0
  522. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.tsx +607 -0
  523. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts +5 -0
  524. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts.map +1 -0
  525. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js +7 -0
  526. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js.map +1 -0
  527. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.tsx +9 -0
  528. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts +6 -0
  529. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts.map +1 -0
  530. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js +9 -0
  531. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js.map +1 -0
  532. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.tsx +11 -0
  533. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts +2 -0
  534. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts.map +1 -0
  535. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js +321 -0
  536. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js.map +1 -0
  537. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.tsx +440 -0
  538. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts +2 -0
  539. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts.map +1 -0
  540. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js +939 -0
  541. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js.map +1 -0
  542. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.tsx +1499 -0
  543. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts +2 -0
  544. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts.map +1 -0
  545. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js +8 -0
  546. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js.map +1 -0
  547. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.tsx +5 -0
  548. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts +2 -0
  549. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts.map +1 -0
  550. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js +436 -0
  551. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js.map +1 -0
  552. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.tsx +675 -0
  553. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts +2 -0
  554. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts.map +1 -0
  555. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js +563 -0
  556. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js.map +1 -0
  557. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.tsx +846 -0
  558. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts +6 -0
  559. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts.map +1 -0
  560. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js +9 -0
  561. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js.map +1 -0
  562. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.tsx +10 -0
  563. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts +6 -0
  564. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts.map +1 -0
  565. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js +9 -0
  566. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js.map +1 -0
  567. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.tsx +11 -0
  568. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts +6 -0
  569. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts.map +1 -0
  570. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js +9 -0
  571. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js.map +1 -0
  572. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.tsx +11 -0
  573. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts +2 -0
  574. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts.map +1 -0
  575. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js +8 -0
  576. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js.map +1 -0
  577. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.tsx +5 -0
  578. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts +2 -0
  579. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts.map +1 -0
  580. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js +492 -0
  581. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js.map +1 -0
  582. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.tsx +757 -0
  583. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts +2 -0
  584. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts.map +1 -0
  585. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js +342 -0
  586. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js.map +1 -0
  587. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.tsx +430 -0
  588. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts +2 -0
  589. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts.map +1 -0
  590. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js +338 -0
  591. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js.map +1 -0
  592. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.tsx +428 -0
  593. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts +2 -0
  594. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts.map +1 -0
  595. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js +660 -0
  596. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js.map +1 -0
  597. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.tsx +992 -0
  598. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts +2 -0
  599. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts.map +1 -0
  600. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js +515 -0
  601. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js.map +1 -0
  602. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.tsx +707 -0
  603. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts +2 -0
  604. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts.map +1 -0
  605. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js +1141 -0
  606. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js.map +1 -0
  607. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.tsx +1705 -0
  608. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts +2 -0
  609. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts.map +1 -0
  610. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js +8 -0
  611. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js.map +1 -0
  612. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.tsx +5 -0
  613. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts +2 -0
  614. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts.map +1 -0
  615. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js +436 -0
  616. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js.map +1 -0
  617. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.tsx +675 -0
  618. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts +2 -0
  619. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts.map +1 -0
  620. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js +563 -0
  621. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js.map +1 -0
  622. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.tsx +846 -0
  623. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts +6 -0
  624. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts.map +1 -0
  625. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js +9 -0
  626. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js.map +1 -0
  627. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.tsx +11 -0
  628. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts +6 -0
  629. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts.map +1 -0
  630. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js +9 -0
  631. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js.map +1 -0
  632. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.tsx +11 -0
  633. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts +2 -0
  634. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts.map +1 -0
  635. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js +8 -0
  636. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js.map +1 -0
  637. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.tsx +5 -0
  638. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts +2 -0
  639. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts.map +1 -0
  640. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js +492 -0
  641. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js.map +1 -0
  642. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.tsx +757 -0
  643. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts +2 -0
  644. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts.map +1 -0
  645. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js +342 -0
  646. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js.map +1 -0
  647. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.tsx +430 -0
  648. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts +2 -0
  649. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts.map +1 -0
  650. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js +338 -0
  651. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js.map +1 -0
  652. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.tsx +428 -0
  653. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts +2 -0
  654. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts.map +1 -0
  655. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js +660 -0
  656. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js.map +1 -0
  657. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.tsx +992 -0
  658. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts +2 -0
  659. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts.map +1 -0
  660. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js +515 -0
  661. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js.map +1 -0
  662. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.tsx +707 -0
  663. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts +2 -0
  664. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts.map +1 -0
  665. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js +1141 -0
  666. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js.map +1 -0
  667. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.tsx +1705 -0
  668. package/hedhog/table/operations_collaborator.yaml +5 -0
  669. package/hedhog/table/operations_collaborator_compensation_history.yaml +4 -0
  670. package/hedhog/table/operations_project_assignment.yaml +1 -0
  671. package/hedhog/table/operations_project_cost.yaml +93 -0
  672. package/hedhog/table/operations_project_cost_category.yaml +37 -0
  673. package/hedhog/table/operations_project_cost_type.yaml +55 -0
  674. package/hedhog/table/operations_task_comment.yaml +26 -0
  675. package/package.json +6 -6
  676. package/src/controllers/operations-collaborators.controller.ts +26 -0
  677. package/src/controllers/operations-project-costs.controller.ts +249 -0
  678. package/src/controllers/operations-tasks.controller.ts +49 -0
  679. package/src/dto/create-collaborator-project-assignment.dto.ts +14 -0
  680. package/src/dto/create-project-cost-category.dto.ts +37 -0
  681. package/src/dto/create-project-cost-type.dto.ts +64 -0
  682. package/src/dto/create-project-cost.dto.ts +126 -0
  683. package/src/dto/get-project-cost-report.dto.ts +46 -0
  684. package/src/dto/list-project-cost-categories.dto.ts +17 -0
  685. package/src/dto/list-project-cost-types.dto.ts +28 -0
  686. package/src/dto/list-project-costs.dto.ts +59 -0
  687. package/src/dto/list-tasks.dto.ts +7 -0
  688. package/src/dto/list-timesheets.dto.ts +7 -1
  689. package/src/dto/update-collaborator-project-assignment.dto.ts +58 -0
  690. package/src/dto/update-project-cost-category.dto.ts +4 -0
  691. package/src/dto/update-project-cost-type.dto.ts +4 -0
  692. package/src/dto/update-project-cost.dto.ts +4 -0
  693. package/src/operations.module.ts +2 -0
  694. package/src/operations.service.ts +2472 -61
@@ -41,6 +41,15 @@ import {
41
41
  SelectValue,
42
42
  } from '@/components/ui/select';
43
43
  import { Switch } from '@/components/ui/switch';
44
+ import {
45
+ Table,
46
+ TableBody,
47
+ TableCell,
48
+ TableHead,
49
+ TableHeader,
50
+ TableRow,
51
+ } from '@/components/ui/table';
52
+ import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs';
44
53
  import { Textarea } from '@/components/ui/textarea';
45
54
  import {
46
55
  Tooltip,
@@ -61,6 +70,17 @@ import { useTranslations } from 'next-intl';
61
70
  import Link from 'next/link';
62
71
  import { useRouter } from 'next/navigation';
63
72
  import { useEffect, useMemo, useState } from 'react';
73
+ import {
74
+ CartesianGrid,
75
+ Legend,
76
+ Line,
77
+ LineChart,
78
+ ResponsiveContainer,
79
+ Tooltip as RechartsTooltip,
80
+ XAxis,
81
+ YAxis,
82
+ } from 'recharts';
83
+ import { PersonPicker } from '../../contact/_components/person-picker';
64
84
  import {
65
85
  fetchOperations,
66
86
  getOperationsErrorMessage,
@@ -78,8 +98,8 @@ import type {
78
98
  PaginatedResponse,
79
99
  } from '../_lib/types';
80
100
  import {
101
+ formatCurrency,
81
102
  formatDate,
82
- formatDateRange,
83
103
  formatEnumLabel,
84
104
  formatHours,
85
105
  formatWeekdayLabel,
@@ -91,9 +111,11 @@ import {
91
111
  trimToNull,
92
112
  } from '../_lib/utils/forms';
93
113
  import { CollaboratorCostsSection } from './collaborator-costs-section';
114
+ import { CollaboratorTasksTab } from './collaborator-tasks-tab';
115
+ import { CollaboratorTimesheetsTab } from './collaborator-timesheets-tab';
94
116
  import { DepartmentSelectWithCreate } from './department-select-with-create';
95
117
  import { OperationsHeader } from './operations-header';
96
- import { PersonSelectWithCreate } from './person-select-with-create';
118
+ import { ProjectAssignmentsTab } from './project-assignments-tab';
97
119
  import { StatusBadge } from './status-badge';
98
120
  import {
99
121
  SystemUserSelectWithCreate,
@@ -226,6 +248,8 @@ const EQUITY_ENABLED_TYPE_SLUGS = new Set([
226
248
  'parceiro',
227
249
  ]);
228
250
 
251
+ const HOURLY_RATE_SLUGS = new Set(['pj', 'freelancer']);
252
+
229
253
  type CollaboratorFormState = {
230
254
  userId: string;
231
255
  personId: string;
@@ -241,6 +265,9 @@ type CollaboratorFormState = {
241
265
  leftAt: string;
242
266
  supervisorCollaboratorId: string;
243
267
  compensationAmount: string;
268
+ hourlyRate: string;
269
+ compensationEffectiveDate: string;
270
+ compensationNotes: string;
244
271
  contractId: string;
245
272
  notes: string;
246
273
  equityParticipation: {
@@ -286,6 +313,9 @@ function buildEmptyForm(): CollaboratorFormState {
286
313
  leftAt: '',
287
314
  supervisorCollaboratorId: 'none',
288
315
  compensationAmount: '',
316
+ hourlyRate: '',
317
+ compensationEffectiveDate: '',
318
+ compensationNotes: '',
289
319
  contractId: '',
290
320
  notes: '',
291
321
  equityParticipation: {
@@ -359,6 +389,12 @@ function toFormState(
359
389
  collaborator.relatedContracts?.[0]?.budgetAmount !== undefined
360
390
  ? String(collaborator.relatedContracts[0].budgetAmount)
361
391
  : '',
392
+ hourlyRate:
393
+ collaborator.hourlyRate !== null && collaborator.hourlyRate !== undefined
394
+ ? String(collaborator.hourlyRate)
395
+ : '',
396
+ compensationEffectiveDate: '',
397
+ compensationNotes: '',
362
398
  contractId: collaborator.relatedContracts?.[0]?.id
363
399
  ? String(collaborator.relatedContracts[0].id)
364
400
  : '',
@@ -558,7 +594,8 @@ export function CollaboratorFormScreen({
558
594
  const t = useTranslations('operations.CollaboratorFormPage');
559
595
  const commonT = useTranslations('operations.Common');
560
596
  const detailsT = useTranslations('operations.CollaboratorDetailsPage');
561
- const { request, showToastHandler, currentLocaleCode } = useApp();
597
+ const { request, showToastHandler, currentLocaleCode, getSettingValue } =
598
+ useApp();
562
599
  const access = useOperationsAccess();
563
600
  const router = useRouter();
564
601
  const [form, setForm] = useState<CollaboratorFormState>(buildEmptyForm());
@@ -703,6 +740,34 @@ export function CollaboratorFormScreen({
703
740
  placeholderData: (previous) => previous ?? [],
704
741
  });
705
742
 
743
+ type CompensationHistoryEntry = {
744
+ id: number;
745
+ collaboratorId: number;
746
+ amount: string;
747
+ effectiveDate: string | null;
748
+ actorUserId: number | null;
749
+ actorName: string | null;
750
+ notes: string | null;
751
+ createdAt: string;
752
+ };
753
+
754
+ const {
755
+ data: compensationHistory = [],
756
+ refetch: refetchCompensationHistory,
757
+ } = useQuery<CompensationHistoryEntry[]>({
758
+ queryKey: [
759
+ 'operations-collaborator-compensation-history',
760
+ currentLocaleCode,
761
+ collaboratorId,
762
+ ],
763
+ enabled: !isCreateMode && access.isDirector,
764
+ queryFn: () =>
765
+ fetchOperations<CompensationHistoryEntry[]>(
766
+ request,
767
+ `/operations/collaborators/${collaboratorId}/compensation-history`
768
+ ),
769
+ });
770
+
706
771
  const { data: documentTypes = [] } = useQuery<DocumentTypeOption[]>({
707
772
  queryKey: ['contact-person-document-types', currentLocaleCode],
708
773
  enabled: personSheetOpen,
@@ -823,6 +888,10 @@ export function CollaboratorFormScreen({
823
888
  EQUITY_ENABLED_TYPE_SLUGS.has(selectedCollaboratorType.slug)
824
889
  );
825
890
 
891
+ const isHourlyType = HOURLY_RATE_SLUGS.has(
892
+ selectedCollaboratorType?.slug ?? ''
893
+ );
894
+
826
895
  const getCollaboratorTypeLabel = (
827
896
  value?: string | null,
828
897
  fallbackName?: string | null
@@ -919,20 +988,56 @@ export function CollaboratorFormScreen({
919
988
  }
920
989
  };
921
990
 
991
+ const createDepartment = async (departmentName: string) => {
992
+ try {
993
+ const createdDepartment = await mutateOperations<OperationsDepartment>(
994
+ request,
995
+ '/operations/departments',
996
+ 'POST',
997
+ {
998
+ name: departmentName,
999
+ }
1000
+ );
1001
+
1002
+ await refetchDepartments();
1003
+
1004
+ return {
1005
+ id: createdDepartment.id,
1006
+ name: createdDepartment.name,
1007
+ code: createdDepartment.code ?? null,
1008
+ description: createdDepartment.description ?? null,
1009
+ };
1010
+ } catch (error) {
1011
+ showToastHandler?.(
1012
+ 'error',
1013
+ getOperationsErrorMessage(error, 'Unable to create the department.')
1014
+ );
1015
+ return null;
1016
+ }
1017
+ };
1018
+
922
1019
  const createSystemUser = async (
923
1020
  name: string,
924
1021
  email: string,
925
1022
  password: string
926
1023
  ): Promise<SystemUserOption | null> => {
927
1024
  try {
928
- const response = await request<{ id: number; name: string }>({
1025
+ const response = await request<{
1026
+ user: { id: number; name: string | null; photo_id?: number | null };
1027
+ challenge: unknown;
1028
+ }>({
929
1029
  url: '/user',
930
1030
  method: 'POST',
931
1031
  data: { name, email, password },
932
1032
  });
933
1033
  await refetchSystemUsers();
934
1034
  showToastHandler?.('success', t('messages.createUserSuccess'));
935
- return { id: response.data.id, name: response.data.name };
1035
+ const user = response.data.user;
1036
+ return {
1037
+ id: user.id,
1038
+ name: user.name || `#${user.id}`,
1039
+ photoId: user.photo_id ?? null,
1040
+ };
936
1041
  } catch (error) {
937
1042
  showToastHandler?.(
938
1043
  'error',
@@ -978,7 +1083,10 @@ export function CollaboratorFormScreen({
978
1083
  const onSubmit = async () => {
979
1084
  const userId = parseNumberInput(form.userId);
980
1085
  const personId = parseNumberInput(form.personId);
981
- const compensationAmount = parseNumberInput(form.compensationAmount);
1086
+ const compensationAmount = isHourlyType
1087
+ ? null
1088
+ : parseNumberInput(form.compensationAmount);
1089
+ const hourlyRate = isHourlyType ? parseNumberInput(form.hourlyRate) : null;
982
1090
 
983
1091
  if (!personId) {
984
1092
  showToastHandler?.('error', t('messages.personRequired'));
@@ -1013,6 +1121,9 @@ export function CollaboratorFormScreen({
1013
1121
  : parseNumberInput(form.supervisorCollaboratorId),
1014
1122
  compensationAmount:
1015
1123
  compensationAmount !== null ? compensationAmount : null,
1124
+ hourlyRate: hourlyRate !== null ? hourlyRate : null,
1125
+ compensationEffectiveDate: trimToNull(form.compensationEffectiveDate),
1126
+ compensationNotes: trimToNull(form.compensationNotes),
1016
1127
  contractId: parseNumberInput(form.contractId),
1017
1128
  notes: trimToNull(form.notes),
1018
1129
  equityParticipation: shouldShowEquitySection
@@ -1053,10 +1164,16 @@ export function CollaboratorFormScreen({
1053
1164
  payload
1054
1165
  );
1055
1166
 
1056
- setForm(toFormState(response));
1167
+ setForm((prev) => ({
1168
+ ...toFormState(response),
1169
+ compensationEffectiveDate: '',
1170
+ compensationNotes: '',
1171
+ weeklySchedule: prev.weeklySchedule,
1172
+ }));
1057
1173
 
1058
1174
  await Promise.all([
1059
1175
  collaboratorId ? refetchCollaborator() : Promise.resolve(),
1176
+ collaboratorId ? refetchCompensationHistory() : Promise.resolve(),
1060
1177
  refetchCollaboratorTypes(),
1061
1178
  refetchDepartments(),
1062
1179
  refetchCollaborators(),
@@ -1099,10 +1216,10 @@ export function CollaboratorFormScreen({
1099
1216
 
1100
1217
  const collaboratorSummary =
1101
1218
  collaborator && isSheetMode ? (
1102
- <div className="mx-4 rounded-xl border bg-muted/30 px-4 py-3">
1103
- <div className="flex flex-col gap-3 lg:flex-row lg:items-start lg:justify-between">
1219
+ <div className="mx-4 rounded-xl border bg-muted/30 px-4 py-3 space-y-3">
1220
+ <div className="flex items-center justify-between gap-3">
1104
1221
  <div className="flex min-w-0 items-center gap-3">
1105
- <Avatar className="h-12 w-12 border border-border/60 bg-background">
1222
+ <Avatar className="h-10 w-10 shrink-0 border border-border/60 bg-background">
1106
1223
  <AvatarImage
1107
1224
  src={getPersonAvatarUrl(collaborator.personAvatarId)}
1108
1225
  alt={collaborator.displayName}
@@ -1112,7 +1229,7 @@ export function CollaboratorFormScreen({
1112
1229
  </AvatarFallback>
1113
1230
  </Avatar>
1114
1231
  <div className="min-w-0">
1115
- <div className="truncate text-base font-semibold">
1232
+ <div className="truncate text-sm font-semibold">
1116
1233
  {collaborator.displayName}
1117
1234
  </div>
1118
1235
  <div className="truncate text-xs text-muted-foreground">
@@ -1127,7 +1244,7 @@ export function CollaboratorFormScreen({
1127
1244
  </div>
1128
1245
  </div>
1129
1246
 
1130
- <div className="flex flex-wrap items-center gap-2">
1247
+ <div className="flex shrink-0 items-center gap-1.5">
1131
1248
  <StatusBadge
1132
1249
  label={getStatusLabel(collaborator.status)}
1133
1250
  className={getStatusBadgeClass(collaborator.status)}
@@ -1159,38 +1276,70 @@ export function CollaboratorFormScreen({
1159
1276
  </div>
1160
1277
  </div>
1161
1278
 
1162
- <div className="mt-3 grid gap-2 text-sm md:grid-cols-2 xl:grid-cols-4">
1163
- <div>
1164
- <div className="text-[11px] uppercase tracking-wide text-muted-foreground">
1165
- {commonT('labels.supervisor')}
1166
- </div>
1167
- <div className="font-medium">
1279
+ <div className="flex flex-wrap gap-x-5 gap-y-1.5 border-t pt-2.5 text-xs">
1280
+ <div className="flex items-center gap-1">
1281
+ <span className="text-muted-foreground">
1282
+ {commonT('labels.supervisor')}:
1283
+ </span>
1284
+ <span className="font-medium">
1168
1285
  {collaborator.supervisorName || commonT('labels.notAssigned')}
1169
- </div>
1286
+ </span>
1170
1287
  </div>
1171
- <div>
1172
- <div className="text-[11px] uppercase tracking-wide text-muted-foreground">
1173
- {commonT('labels.weeklyCapacity')}
1174
- </div>
1175
- <div className="font-medium">
1288
+ <div className="flex items-center gap-1">
1289
+ <span className="text-muted-foreground">
1290
+ {commonT('labels.weeklyCapacity')}:
1291
+ </span>
1292
+ <span className="font-medium">
1176
1293
  {formatHours(collaborator.weeklyCapacityHours)}
1177
- </div>
1294
+ </span>
1178
1295
  </div>
1179
- <div>
1180
- <div className="text-[11px] uppercase tracking-wide text-muted-foreground">
1181
- {commonT('labels.startDate')}
1182
- </div>
1183
- <div className="font-medium">
1184
- {formatDate(collaborator.joinedAt)}
1185
- </div>
1296
+ <div className="flex items-center gap-1">
1297
+ <span className="text-muted-foreground">
1298
+ {commonT('labels.startDate')}:
1299
+ </span>
1300
+ <span className="font-medium">
1301
+ {formatDate(collaborator.joinedAt) || '—'}
1302
+ </span>
1186
1303
  </div>
1187
- <div>
1188
- <div className="text-[11px] uppercase tracking-wide text-muted-foreground">
1189
- {commonT('labels.projectCount')}
1190
- </div>
1191
- <div className="font-medium">
1304
+ <div className="flex items-center gap-1">
1305
+ <span className="text-muted-foreground">
1306
+ {commonT('labels.projectCount')}:
1307
+ </span>
1308
+ <span className="font-medium">
1192
1309
  {collaborator.assignedProjects.length}
1193
- </div>
1310
+ </span>
1311
+ </div>
1312
+ <div className="flex items-center gap-1">
1313
+ <span className="text-muted-foreground">
1314
+ {detailsT('cards.timesheets')}:
1315
+ </span>
1316
+ <span className="font-medium">
1317
+ {collaborator.timesheetSummary.totalTimesheets}
1318
+ </span>
1319
+ </div>
1320
+ <div className="flex items-center gap-1">
1321
+ <span className="text-muted-foreground">
1322
+ {detailsT('cards.loggedHours')}:
1323
+ </span>
1324
+ <span className="font-medium">
1325
+ {formatHours(collaborator.timesheetSummary.totalHours)}
1326
+ </span>
1327
+ </div>
1328
+ <div className="flex items-center gap-1">
1329
+ <span className="text-muted-foreground">
1330
+ {detailsT('cards.timeOff')}:
1331
+ </span>
1332
+ <span className="font-medium">
1333
+ {collaborator.timeOffSummary.totalRequests}
1334
+ </span>
1335
+ </div>
1336
+ <div className="flex items-center gap-1">
1337
+ <span className="text-muted-foreground">
1338
+ {detailsT('sections.scheduleAdjustments')}:
1339
+ </span>
1340
+ <span className="font-medium">
1341
+ {collaborator.scheduleAdjustmentRequests.length}
1342
+ </span>
1194
1343
  </div>
1195
1344
  </div>
1196
1345
  </div>
@@ -1225,7 +1374,7 @@ export function CollaboratorFormScreen({
1225
1374
  </div>
1226
1375
  <div className="grid gap-3 md:grid-cols-2 xl:grid-cols-4">
1227
1376
  <div className="space-y-2 md:col-span-2">
1228
- <PersonSelectWithCreate
1377
+ <PersonPicker
1229
1378
  label={t('fields.person')}
1230
1379
  entityLabel={t('fields.personEntityLabel')}
1231
1380
  value={form.personId ? Number(form.personId) : null}
@@ -1293,6 +1442,7 @@ export function CollaboratorFormScreen({
1293
1442
  ?.name ?? ''
1294
1443
  }
1295
1444
  options={departmentOptions}
1445
+ onCreate={createDepartment}
1296
1446
  selectPlaceholder={t('placeholders.department')}
1297
1447
  createDescription={t('fields.departmentDescription')}
1298
1448
  createPlaceholder={t('placeholders.departmentCreate')}
@@ -1518,21 +1668,70 @@ export function CollaboratorFormScreen({
1518
1668
  }
1519
1669
  />
1520
1670
  </div>
1671
+ {isHourlyType ? (
1672
+ <div className="space-y-2">
1673
+ <label className="text-sm font-medium">
1674
+ {t('fields.hourlyRate')}
1675
+ </label>
1676
+ <InputMoney
1677
+ step="0.01"
1678
+ value={form.hourlyRate === '' ? '' : Number(form.hourlyRate)}
1679
+ onValueChange={(value) =>
1680
+ setForm((current) => ({
1681
+ ...current,
1682
+ hourlyRate: value !== null ? String(value) : '',
1683
+ }))
1684
+ }
1685
+ />
1686
+ </div>
1687
+ ) : (
1688
+ <div className="space-y-2">
1689
+ <label className="text-sm font-medium">
1690
+ {t('fields.compensationAmount')}
1691
+ </label>
1692
+ <InputMoney
1693
+ step="0.01"
1694
+ value={
1695
+ form.compensationAmount === ''
1696
+ ? ''
1697
+ : Number(form.compensationAmount)
1698
+ }
1699
+ onValueChange={(value) =>
1700
+ setForm((current) => ({
1701
+ ...current,
1702
+ compensationAmount: value !== null ? String(value) : '',
1703
+ }))
1704
+ }
1705
+ />
1706
+ </div>
1707
+ )}
1521
1708
  <div className="space-y-2">
1522
1709
  <label className="text-sm font-medium">
1523
- {t('fields.compensationAmount')}
1710
+ {t('fields.compensationEffectiveDate')}
1524
1711
  </label>
1525
- <InputMoney
1526
- step="0.01"
1527
- value={
1528
- form.compensationAmount === ''
1529
- ? ''
1530
- : Number(form.compensationAmount)
1712
+ <Input
1713
+ type="date"
1714
+ value={form.compensationEffectiveDate}
1715
+ onChange={(event) =>
1716
+ setForm((current) => ({
1717
+ ...current,
1718
+ compensationEffectiveDate: event.target.value,
1719
+ }))
1531
1720
  }
1532
- onValueChange={(value) =>
1721
+ />
1722
+ </div>
1723
+ <div className="space-y-2">
1724
+ <label className="text-sm font-medium">
1725
+ {t('fields.compensationNotes')}
1726
+ </label>
1727
+ <Textarea
1728
+ rows={2}
1729
+ value={form.compensationNotes}
1730
+ placeholder={t('placeholders.compensationNotes')}
1731
+ onChange={(event) =>
1533
1732
  setForm((current) => ({
1534
1733
  ...current,
1535
- compensationAmount: value !== null ? String(value) : '',
1734
+ compensationNotes: event.target.value,
1536
1735
  }))
1537
1736
  }
1538
1737
  />
@@ -1681,32 +1880,6 @@ export function CollaboratorFormScreen({
1681
1880
  </div>
1682
1881
  ) : null;
1683
1882
 
1684
- const supervisorSection = (
1685
- <div className="space-y-2">
1686
- <div className="space-y-0.5">
1687
- <h3 className="text-xs font-semibold uppercase tracking-wide text-muted-foreground">
1688
- {t('sections.supervisor')}
1689
- </h3>
1690
- <p className="text-[11px] text-muted-foreground/80">
1691
- {t('sections.supervisorDescription')}
1692
- </p>
1693
- </div>
1694
- <SupervisorAutocomplete
1695
- label={commonT('labels.supervisor')}
1696
- value={form.supervisorCollaboratorId}
1697
- options={supervisorOptions}
1698
- placeholder={t('placeholders.supervisor')}
1699
- emptyLabel={commonT('labels.notAssigned')}
1700
- onChange={(value) =>
1701
- setForm((current) => ({
1702
- ...current,
1703
- supervisorCollaboratorId: value,
1704
- }))
1705
- }
1706
- />
1707
- </div>
1708
- );
1709
-
1710
1883
  const contractSection = (
1711
1884
  <div className="space-y-2">
1712
1885
  <div className="space-y-0.5">
@@ -1734,21 +1907,70 @@ export function CollaboratorFormScreen({
1734
1907
  }
1735
1908
  />
1736
1909
  </div>
1910
+ {isHourlyType ? (
1911
+ <div className="space-y-2">
1912
+ <label className="text-sm font-medium">
1913
+ {t('fields.hourlyRate')}
1914
+ </label>
1915
+ <InputMoney
1916
+ step="0.01"
1917
+ value={form.hourlyRate === '' ? '' : Number(form.hourlyRate)}
1918
+ onValueChange={(value) =>
1919
+ setForm((current) => ({
1920
+ ...current,
1921
+ hourlyRate: value !== null ? String(value) : '',
1922
+ }))
1923
+ }
1924
+ />
1925
+ </div>
1926
+ ) : (
1927
+ <div className="space-y-2">
1928
+ <label className="text-sm font-medium">
1929
+ {t('fields.compensationAmount')}
1930
+ </label>
1931
+ <InputMoney
1932
+ step="0.01"
1933
+ value={
1934
+ form.compensationAmount === ''
1935
+ ? ''
1936
+ : Number(form.compensationAmount)
1937
+ }
1938
+ onValueChange={(value) =>
1939
+ setForm((current) => ({
1940
+ ...current,
1941
+ compensationAmount: value !== null ? String(value) : '',
1942
+ }))
1943
+ }
1944
+ />
1945
+ </div>
1946
+ )}
1737
1947
  <div className="space-y-2">
1738
1948
  <label className="text-sm font-medium">
1739
- {t('fields.compensationAmount')}
1949
+ {t('fields.compensationEffectiveDate')}
1740
1950
  </label>
1741
- <InputMoney
1742
- step="0.01"
1743
- value={
1744
- form.compensationAmount === ''
1745
- ? ''
1746
- : Number(form.compensationAmount)
1951
+ <Input
1952
+ type="date"
1953
+ value={form.compensationEffectiveDate}
1954
+ onChange={(event) =>
1955
+ setForm((current) => ({
1956
+ ...current,
1957
+ compensationEffectiveDate: event.target.value,
1958
+ }))
1747
1959
  }
1748
- onValueChange={(value) =>
1960
+ />
1961
+ </div>
1962
+ <div className="space-y-2">
1963
+ <label className="text-sm font-medium">
1964
+ {t('fields.compensationNotes')}
1965
+ </label>
1966
+ <Textarea
1967
+ rows={2}
1968
+ value={form.compensationNotes}
1969
+ placeholder={t('placeholders.compensationNotes')}
1970
+ onChange={(event) =>
1749
1971
  setForm((current) => ({
1750
1972
  ...current,
1751
- compensationAmount: value !== null ? String(value) : '',
1973
+ compensationNotes: event.target.value,
1752
1974
  }))
1753
1975
  }
1754
1976
  />
@@ -1898,212 +2120,6 @@ export function CollaboratorFormScreen({
1898
2120
  </div>
1899
2121
  );
1900
2122
 
1901
- const activitySection = collaborator ? (
1902
- <div className="space-y-4">
1903
- <div className="grid gap-3 sm:grid-cols-2 xl:grid-cols-4">
1904
- <div className="rounded-xl border bg-muted/20 px-4 py-3">
1905
- <div className="text-[11px] uppercase tracking-wide text-muted-foreground">
1906
- {detailsT('cards.timesheets')}
1907
- </div>
1908
- <div className="mt-1 text-xl font-semibold">
1909
- {collaborator.timesheetSummary.totalTimesheets}
1910
- </div>
1911
- <p className="text-xs text-muted-foreground">
1912
- {detailsT('cards.timesheetsDescription', {
1913
- pending: collaborator.timesheetSummary.pendingTimesheets,
1914
- })}
1915
- </p>
1916
- </div>
1917
-
1918
- <div className="rounded-xl border bg-muted/20 px-4 py-3">
1919
- <div className="text-[11px] uppercase tracking-wide text-muted-foreground">
1920
- {detailsT('cards.loggedHours')}
1921
- </div>
1922
- <div className="mt-1 text-xl font-semibold">
1923
- {formatHours(collaborator.timesheetSummary.totalHours)}
1924
- </div>
1925
- <p className="text-xs text-muted-foreground">
1926
- {detailsT('cards.loggedHoursDescription')}
1927
- </p>
1928
- </div>
1929
-
1930
- <div className="rounded-xl border bg-muted/20 px-4 py-3">
1931
- <div className="text-[11px] uppercase tracking-wide text-muted-foreground">
1932
- {detailsT('cards.timeOff')}
1933
- </div>
1934
- <div className="mt-1 text-xl font-semibold">
1935
- {collaborator.timeOffSummary.totalRequests}
1936
- </div>
1937
- <p className="text-xs text-muted-foreground">
1938
- {detailsT('cards.timeOffDescription', {
1939
- pending: collaborator.timeOffSummary.pendingRequests,
1940
- })}
1941
- </p>
1942
- </div>
1943
-
1944
- <div className="rounded-xl border bg-muted/20 px-4 py-3">
1945
- <div className="text-[11px] uppercase tracking-wide text-muted-foreground">
1946
- {detailsT('sections.scheduleAdjustments')}
1947
- </div>
1948
- <div className="mt-1 text-xl font-semibold">
1949
- {collaborator.scheduleAdjustmentRequests.length}
1950
- </div>
1951
- <p className="text-xs text-muted-foreground">
1952
- {detailsT('sections.scheduleAdjustmentsDescription')}
1953
- </p>
1954
- </div>
1955
- </div>
1956
-
1957
- <div className="grid gap-4 xl:grid-cols-2">
1958
- <div className="rounded-xl border px-4 py-3">
1959
- <div className="mb-3 space-y-0.5">
1960
- <h3 className="text-xs font-semibold uppercase tracking-wide text-muted-foreground">
1961
- {detailsT('sections.projects')}
1962
- </h3>
1963
- <p className="text-[11px] text-muted-foreground/80">
1964
- {detailsT('sections.projectsDescription')}
1965
- </p>
1966
- </div>
1967
-
1968
- {collaborator.assignedProjects.length > 0 ? (
1969
- <div className="space-y-2">
1970
- {collaborator.assignedProjects.slice(0, 6).map((project) => (
1971
- <div
1972
- key={project.id}
1973
- className="flex flex-col gap-2 rounded-lg border px-3 py-2.5"
1974
- >
1975
- <div className="flex items-start justify-between gap-3">
1976
- <div className="min-w-0">
1977
- <div className="truncate font-medium">{project.name}</div>
1978
- <div className="truncate text-xs text-muted-foreground">
1979
- {[
1980
- project.code,
1981
- project.roleLabel || commonT('labels.notAssigned'),
1982
- project.weeklyHours !== null &&
1983
- project.weeklyHours !== undefined
1984
- ? formatHours(project.weeklyHours)
1985
- : null,
1986
- project.allocationPercent !== null &&
1987
- project.allocationPercent !== undefined
1988
- ? `${project.allocationPercent}%`
1989
- : null,
1990
- ]
1991
- .filter(Boolean)
1992
- .join(' • ')}
1993
- </div>
1994
- </div>
1995
- <StatusBadge
1996
- label={formatEnumLabel(project.status)}
1997
- className={getStatusBadgeClass(project.status)}
1998
- />
1999
- </div>
2000
- <div className="text-xs text-muted-foreground">
2001
- {formatDateRange(project.startDate, project.endDate)}
2002
- </div>
2003
- </div>
2004
- ))}
2005
- </div>
2006
- ) : (
2007
- <p className="text-sm text-muted-foreground">
2008
- {detailsT('noProjects')}
2009
- </p>
2010
- )}
2011
- </div>
2012
-
2013
- <div className="space-y-4">
2014
- <div className="rounded-xl border px-4 py-3">
2015
- <div className="mb-3 space-y-0.5">
2016
- <h3 className="text-xs font-semibold uppercase tracking-wide text-muted-foreground">
2017
- {detailsT('sections.primaryContract')}
2018
- </h3>
2019
- <p className="text-[11px] text-muted-foreground/80">
2020
- {t('sections.contractDescription')}
2021
- </p>
2022
- </div>
2023
-
2024
- {collaborator.relatedContracts.length > 0 ? (
2025
- <div className="space-y-2">
2026
- {collaborator.relatedContracts.slice(0, 3).map((contract) => (
2027
- <Link
2028
- key={contract.id}
2029
- href={`/operations/contracts?edit=${contract.id}`}
2030
- className="flex cursor-pointer items-center justify-between gap-3 rounded-lg border px-3 py-2.5 transition-colors hover:bg-muted/20"
2031
- >
2032
- <div className="min-w-0">
2033
- <div className="truncate font-medium">
2034
- {contract.name || contract.code}
2035
- </div>
2036
- <div className="truncate text-xs text-muted-foreground">
2037
- {[
2038
- contract.code,
2039
- formatEnumLabel(contract.contractCategory),
2040
- ]
2041
- .filter(Boolean)
2042
- .join(' • ')}
2043
- </div>
2044
- </div>
2045
- <StatusBadge
2046
- label={formatEnumLabel(contract.status)}
2047
- className={getStatusBadgeClass(contract.status)}
2048
- />
2049
- </Link>
2050
- ))}
2051
- </div>
2052
- ) : (
2053
- <p className="text-sm text-muted-foreground">
2054
- {detailsT('noContracts')}
2055
- </p>
2056
- )}
2057
- </div>
2058
-
2059
- <div className="rounded-xl border px-4 py-3">
2060
- <div className="mb-3 space-y-0.5">
2061
- <h3 className="text-xs font-semibold uppercase tracking-wide text-muted-foreground">
2062
- {detailsT('sections.scheduleAdjustments')}
2063
- </h3>
2064
- <p className="text-[11px] text-muted-foreground/80">
2065
- {detailsT('sections.scheduleAdjustmentsDescription')}
2066
- </p>
2067
- </div>
2068
-
2069
- {collaborator.scheduleAdjustmentRequests.length > 0 ? (
2070
- <div className="space-y-2">
2071
- {collaborator.scheduleAdjustmentRequests
2072
- .slice(0, 4)
2073
- .map((request) => (
2074
- <div
2075
- key={request.id}
2076
- className="flex items-center justify-between gap-3 rounded-lg border px-3 py-2.5"
2077
- >
2078
- <div className="min-w-0">
2079
- <div className="font-medium">
2080
- {formatEnumLabel(request.requestScope)}
2081
- </div>
2082
- <div className="truncate text-xs text-muted-foreground">
2083
- {formatDateRange(
2084
- request.effectiveStartDate,
2085
- request.effectiveEndDate
2086
- )}
2087
- </div>
2088
- </div>
2089
- <StatusBadge
2090
- label={formatEnumLabel(request.status)}
2091
- className={getStatusBadgeClass(request.status)}
2092
- />
2093
- </div>
2094
- ))}
2095
- </div>
2096
- ) : (
2097
- <p className="text-sm text-muted-foreground">
2098
- {detailsT('noScheduleAdjustments')}
2099
- </p>
2100
- )}
2101
- </div>
2102
- </div>
2103
- </div>
2104
- </div>
2105
- ) : null;
2106
-
2107
2123
  const profileContent = (
2108
2124
  <div className="space-y-4">
2109
2125
  {basicInfoSection}
@@ -2112,6 +2128,58 @@ export function CollaboratorFormScreen({
2112
2128
  </div>
2113
2129
  );
2114
2130
 
2131
+ const salaryChartData = useMemo(() => {
2132
+ if (!compensationHistory.length) return [];
2133
+
2134
+ const sorted = [...compensationHistory].sort(
2135
+ (a, b) =>
2136
+ new Date(a.effectiveDate ?? a.createdAt).getTime() -
2137
+ new Date(b.effectiveDate ?? b.createdAt).getTime()
2138
+ );
2139
+
2140
+ const historicalPoints = sorted.map((entry) => ({
2141
+ date: (entry.effectiveDate ?? entry.createdAt).slice(0, 10),
2142
+ valor: Number(entry.amount),
2143
+ projecao: null as number | null,
2144
+ }));
2145
+
2146
+ const lastEntry = sorted[sorted.length - 1];
2147
+ if (!lastEntry) return [];
2148
+ const lastAmount = Number(lastEntry.amount);
2149
+ const prevEntry = sorted.length > 1 ? sorted[sorted.length - 2] : null;
2150
+ const growthRate =
2151
+ prevEntry && Number(prevEntry.amount) > 0
2152
+ ? (lastAmount - Number(prevEntry.amount)) / Number(prevEntry.amount)
2153
+ : 0;
2154
+
2155
+ const projectionPoints: { date: string; valor: null; projecao: number }[] =
2156
+ [];
2157
+ const baseDate = new Date(
2158
+ (lastEntry.effectiveDate ?? lastEntry.createdAt).slice(0, 10) +
2159
+ 'T00:00:00'
2160
+ );
2161
+
2162
+ for (let i = 1; i <= 12; i++) {
2163
+ const d = new Date(baseDate);
2164
+ d.setMonth(d.getMonth() + i);
2165
+ projectionPoints.push({
2166
+ date: d.toISOString().slice(0, 10),
2167
+ valor: null,
2168
+ projecao:
2169
+ Math.round(lastAmount * Math.pow(1 + growthRate, i / 12) * 100) / 100,
2170
+ });
2171
+ }
2172
+
2173
+ return [
2174
+ ...historicalPoints,
2175
+ {
2176
+ ...historicalPoints[historicalPoints.length - 1],
2177
+ projecao: lastAmount,
2178
+ },
2179
+ ...projectionPoints,
2180
+ ];
2181
+ }, [compensationHistory]);
2182
+
2115
2183
  const costsSection = (
2116
2184
  <Accordion
2117
2185
  type="single"
@@ -2145,13 +2213,241 @@ export function CollaboratorFormScreen({
2145
2213
  );
2146
2214
 
2147
2215
  const formContent = isSheetMode ? (
2148
- <div className="space-y-4 px-4">
2149
- {profileContent}
2150
- {contractSection}
2151
- {!isCreateMode ? costsSection : null}
2152
- {!isCreateMode ? scheduleSection : null}
2153
- {activitySection}
2154
- </div>
2216
+ <Tabs defaultValue="details" className="w-full">
2217
+ <TabsList
2218
+ className={`mx-4 mb-2 grid w-[calc(100%-2rem)] ${!isCreateMode && !isHourlyType ? 'grid-cols-7' : isCreateMode && isHourlyType ? 'grid-cols-5' : 'grid-cols-6'}`}
2219
+ >
2220
+ <TabsTrigger value="details">{t('tabs.details')}</TabsTrigger>
2221
+ <TabsTrigger value="costs">{t('tabs.costs')}</TabsTrigger>
2222
+ {!isHourlyType ? (
2223
+ <TabsTrigger value="schedule">
2224
+ {t('tabs.defaultSchedule')}
2225
+ </TabsTrigger>
2226
+ ) : null}
2227
+ <TabsTrigger value="projects">{t('tabs.projects')}</TabsTrigger>
2228
+ <TabsTrigger value="tasks">{t('tabs.tasks')}</TabsTrigger>
2229
+ <TabsTrigger value="timesheets">{t('tabs.timesheets')}</TabsTrigger>
2230
+ {!isCreateMode ? (
2231
+ <TabsTrigger value="salary">{t('tabs.salary')}</TabsTrigger>
2232
+ ) : null}
2233
+ </TabsList>
2234
+ <TabsContent value="details" className="mt-0 space-y-4 px-4 pt-2">
2235
+ {profileContent}
2236
+ {contractSection}
2237
+ </TabsContent>
2238
+ <TabsContent value="costs" className="mt-0 px-4 pt-2">
2239
+ {isCreateMode || !collaborator ? (
2240
+ <p className="text-sm text-muted-foreground">
2241
+ {t('sections.costsSaveBefore')}
2242
+ </p>
2243
+ ) : (
2244
+ <CollaboratorCostsSection
2245
+ collaboratorId={collaborator.id}
2246
+ disabled={!access.isDirector}
2247
+ weeklyCapacity={collaborator.weeklyCapacityHours ?? undefined}
2248
+ remunerationValue={
2249
+ collaborator.compensationAmount != null
2250
+ ? Number(collaborator.compensationAmount)
2251
+ : undefined
2252
+ }
2253
+ />
2254
+ )}
2255
+ </TabsContent>
2256
+ <TabsContent value="schedule" className="mt-0 px-4 pt-2">
2257
+ {isCreateMode || !collaborator ? (
2258
+ <p className="text-sm text-muted-foreground">
2259
+ {t('sections.costsSaveBefore')}
2260
+ </p>
2261
+ ) : (
2262
+ scheduleSection
2263
+ )}
2264
+ </TabsContent>
2265
+ <TabsContent value="projects" className="mt-0 px-4 pt-2">
2266
+ <ProjectAssignmentsTab
2267
+ collaborator={collaborator ?? null}
2268
+ request={request}
2269
+ onUpdated={() => void refetchCollaborator()}
2270
+ disabled={!access.isDirector}
2271
+ />
2272
+ </TabsContent>
2273
+ <TabsContent value="tasks" className="mt-0 px-4 pt-2">
2274
+ {isCreateMode || !collaborator ? (
2275
+ <p className="text-sm text-muted-foreground">
2276
+ {t('sections.costsSaveBefore')}
2277
+ </p>
2278
+ ) : (
2279
+ <CollaboratorTasksTab
2280
+ collaboratorId={collaborator.id}
2281
+ collaboratorName={collaborator.displayName}
2282
+ request={request}
2283
+ disabled={!access.isDirector}
2284
+ />
2285
+ )}
2286
+ </TabsContent>
2287
+ <TabsContent value="timesheets" className="mt-0 px-4 pt-2">
2288
+ {isCreateMode || !collaborator ? (
2289
+ <p className="text-sm text-muted-foreground">
2290
+ {t('sections.costsSaveBefore')}
2291
+ </p>
2292
+ ) : (
2293
+ <CollaboratorTimesheetsTab
2294
+ collaboratorId={collaborator.id}
2295
+ request={request}
2296
+ disabled={!access.isDirector}
2297
+ />
2298
+ )}
2299
+ </TabsContent>
2300
+ {!isCreateMode ? (
2301
+ <TabsContent value="salary" className="mt-0 px-4 pt-2 space-y-6">
2302
+ {access.isDirector ? (
2303
+ <>
2304
+ <div>
2305
+ <h3 className="text-xs font-semibold uppercase tracking-wide text-muted-foreground mb-3">
2306
+ {isHourlyType
2307
+ ? t('chart.hourlyHistory')
2308
+ : t('chart.salaryHistory')}
2309
+ </h3>
2310
+ {salaryChartData.length > 0 ? (
2311
+ <ResponsiveContainer width="100%" height={260}>
2312
+ <LineChart
2313
+ data={salaryChartData}
2314
+ margin={{ top: 8, right: 16, left: 8, bottom: 8 }}
2315
+ >
2316
+ <CartesianGrid
2317
+ strokeDasharray="3 3"
2318
+ className="stroke-muted"
2319
+ />
2320
+ <XAxis
2321
+ dataKey="date"
2322
+ tick={{ fontSize: 11 }}
2323
+ tickFormatter={(v: string) => {
2324
+ const [year, month] = v.split('-');
2325
+ return `${month}/${year?.slice(2)}`;
2326
+ }}
2327
+ />
2328
+ <YAxis
2329
+ tick={{ fontSize: 11 }}
2330
+ tickFormatter={(v: number) =>
2331
+ formatCurrency(v, getSettingValue, currentLocaleCode)
2332
+ }
2333
+ width={90}
2334
+ />
2335
+ <RechartsTooltip
2336
+ formatter={(value: number) => [
2337
+ formatCurrency(
2338
+ value,
2339
+ getSettingValue,
2340
+ currentLocaleCode
2341
+ ),
2342
+ ]}
2343
+ labelFormatter={(label: string) => label}
2344
+ />
2345
+ <Legend />
2346
+ <Line
2347
+ type="monotone"
2348
+ dataKey="valor"
2349
+ name={t('chart.actual')}
2350
+ stroke="hsl(var(--primary))"
2351
+ strokeWidth={2}
2352
+ dot={{ r: 4 }}
2353
+ activeDot={{ r: 6 }}
2354
+ isAnimationActive
2355
+ animationDuration={800}
2356
+ connectNulls={false}
2357
+ />
2358
+ <Line
2359
+ type="monotone"
2360
+ dataKey="projecao"
2361
+ name={t('chart.projection')}
2362
+ stroke="hsl(var(--muted-foreground))"
2363
+ strokeWidth={2}
2364
+ strokeDasharray="5 5"
2365
+ dot={false}
2366
+ isAnimationActive
2367
+ animationDuration={800}
2368
+ connectNulls={false}
2369
+ />
2370
+ </LineChart>
2371
+ </ResponsiveContainer>
2372
+ ) : (
2373
+ <p className="text-sm text-muted-foreground">
2374
+ {detailsT('noCompensationHistory')}
2375
+ </p>
2376
+ )}
2377
+ </div>
2378
+ <div>
2379
+ {compensationHistory.length > 0 ? (
2380
+ <div className="overflow-x-auto rounded-md border">
2381
+ <Table>
2382
+ <TableHeader>
2383
+ <TableRow>
2384
+ <TableHead>
2385
+ {detailsT('compensationHistory.amount')}
2386
+ </TableHead>
2387
+ <TableHead>
2388
+ {detailsT('compensationHistory.effectiveDate')}
2389
+ </TableHead>
2390
+ <TableHead>
2391
+ {detailsT('compensationHistory.recordedAt')}
2392
+ </TableHead>
2393
+ <TableHead>
2394
+ {detailsT('compensationHistory.changedBy')}
2395
+ </TableHead>
2396
+ <TableHead>
2397
+ {detailsT('compensationHistory.notes')}
2398
+ </TableHead>
2399
+ </TableRow>
2400
+ </TableHeader>
2401
+ <TableBody>
2402
+ {compensationHistory.map((entry) => (
2403
+ <TableRow key={entry.id}>
2404
+ <TableCell className="font-medium">
2405
+ {formatCurrency(
2406
+ Number(entry.amount),
2407
+ getSettingValue,
2408
+ currentLocaleCode
2409
+ )}
2410
+ </TableCell>
2411
+ <TableCell>
2412
+ {entry.effectiveDate
2413
+ ? formatDate(
2414
+ entry.effectiveDate,
2415
+ getSettingValue,
2416
+ currentLocaleCode
2417
+ )
2418
+ : '—'}
2419
+ </TableCell>
2420
+ <TableCell>
2421
+ {formatDate(
2422
+ entry.createdAt,
2423
+ getSettingValue,
2424
+ currentLocaleCode
2425
+ )}
2426
+ </TableCell>
2427
+ <TableCell>{entry.actorName ?? '—'}</TableCell>
2428
+ <TableCell className="text-muted-foreground">
2429
+ {entry.notes ?? '—'}
2430
+ </TableCell>
2431
+ </TableRow>
2432
+ ))}
2433
+ </TableBody>
2434
+ </Table>
2435
+ </div>
2436
+ ) : (
2437
+ <p className="text-sm text-muted-foreground">
2438
+ {detailsT('noCompensationHistory')}
2439
+ </p>
2440
+ )}
2441
+ </div>
2442
+ </>
2443
+ ) : (
2444
+ <p className="text-sm text-muted-foreground">
2445
+ {t('noDirectorAccess')}
2446
+ </p>
2447
+ )}
2448
+ </TabsContent>
2449
+ ) : null}
2450
+ </Tabs>
2155
2451
  ) : (
2156
2452
  <div className="space-y-4 px-4">
2157
2453
  {profileContent}
@@ -2168,7 +2464,7 @@ export function CollaboratorFormScreen({
2168
2464
 
2169
2465
  if (isSheetMode) {
2170
2466
  return (
2171
- <div className="mt-6 space-y-4 pb-6">
2467
+ <div className="mt-0 space-y-4 pb-6">
2172
2468
  {collaboratorSummary}
2173
2469
  {formContent}
2174
2470
  {loadingState}