@hed-hog/operations 0.0.327 → 0.0.329

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 (571) hide show
  1. package/dist/controllers/operations-tasks.controller.d.ts +3 -3
  2. package/dist/operations.service.d.ts +3 -3
  3. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +7 -7
  4. package/hedhog/frontend/app/_components/department-picker.tsx.ejs +125 -0
  5. package/hedhog/frontend/app/_components/department-select-with-create.tsx.ejs +64 -325
  6. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +16 -16
  7. package/hedhog/frontend/app/_components/system-user-picker.tsx.ejs +198 -0
  8. package/hedhog/frontend/app/_components/system-user-select-with-create.tsx.ejs +107 -569
  9. package/hedhog/frontend/messages/en.json +79 -10
  10. package/hedhog/frontend/messages/operations/en.json +67 -3
  11. package/hedhog/frontend/messages/operations/pt.json +67 -3
  12. package/hedhog/frontend/messages/pt.json +77 -8
  13. package/package.json +5 -5
  14. package/hedhog/frontend/app/_components/collaborator-details-screen.tsx.ejs +0 -476
  15. package/hedhog/frontend/app/_components/collaborator-select-with-create.tsx.ejs +0 -261
  16. package/hedhog/frontend/app/_components/contract-content-editor.tsx.ejs +0 -258
  17. package/hedhog/frontend/app/_components/person-select-with-create.tsx.ejs +0 -1
  18. package/hedhog/frontend/messages/en.json.ejs +0 -2060
  19. package/hedhog/frontend/messages/operations/operations/en.json +0 -2102
  20. package/hedhog/frontend/messages/operations/operations/pt.json +0 -2111
  21. package/hedhog/frontend/messages/pt.json.ejs +0 -2067
  22. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts +0 -29
  23. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts.map +0 -1
  24. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js +0 -95
  25. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js.map +0 -1
  26. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.tsx +0 -233
  27. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts +0 -10
  28. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts.map +0 -1
  29. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js +0 -577
  30. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js.map +0 -1
  31. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.tsx +0 -868
  32. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts +0 -4
  33. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts.map +0 -1
  34. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js +0 -337
  35. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js.map +0 -1
  36. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.tsx +0 -476
  37. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts +0 -9
  38. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts.map +0 -1
  39. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js +0 -1348
  40. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js.map +0 -1
  41. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.tsx +0 -2233
  42. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts +0 -12
  43. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts.map +0 -1
  44. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js +0 -162
  45. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js.map +0 -1
  46. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.tsx +0 -261
  47. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts +0 -18
  48. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts.map +0 -1
  49. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js +0 -145
  50. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js.map +0 -1
  51. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.tsx +0 -258
  52. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts +0 -4
  53. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts.map +0 -1
  54. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js +0 -223
  55. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js.map +0 -1
  56. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.tsx +0 -342
  57. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts +0 -58
  58. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts.map +0 -1
  59. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js +0 -438
  60. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js.map +0 -1
  61. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.tsx +0 -698
  62. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts +0 -20
  63. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts.map +0 -1
  64. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js +0 -233
  65. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js.map +0 -1
  66. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.tsx +0 -392
  67. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts +0 -4
  68. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts.map +0 -1
  69. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js +0 -814
  70. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js.map +0 -1
  71. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.tsx +0 -1288
  72. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts +0 -21
  73. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts.map +0 -1
  74. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js +0 -174
  75. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js.map +0 -1
  76. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.tsx +0 -306
  77. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts +0 -10
  78. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts.map +0 -1
  79. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js +0 -12
  80. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js.map +0 -1
  81. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.tsx +0 -29
  82. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts +0 -15
  83. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts.map +0 -1
  84. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js +0 -501
  85. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js.map +0 -1
  86. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.tsx +0 -853
  87. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts +0 -6
  88. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts.map +0 -1
  89. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js +0 -847
  90. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js.map +0 -1
  91. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.tsx +0 -1340
  92. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts +0 -4
  93. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts.map +0 -1
  94. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js +0 -2930
  95. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js.map +0 -1
  96. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.tsx +0 -4378
  97. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts +0 -9
  98. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts.map +0 -1
  99. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js +0 -1013
  100. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js.map +0 -1
  101. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.tsx +0 -1745
  102. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts +0 -13
  103. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts.map +0 -1
  104. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js +0 -38
  105. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js.map +0 -1
  106. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.tsx +0 -74
  107. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts +0 -7
  108. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts.map +0 -1
  109. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js +0 -11
  110. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js.map +0 -1
  111. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.tsx +0 -15
  112. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts +0 -18
  113. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts.map +0 -1
  114. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js +0 -406
  115. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js.map +0 -1
  116. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.tsx +0 -660
  117. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts +0 -26
  118. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts.map +0 -1
  119. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js +0 -332
  120. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js.map +0 -1
  121. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.tsx +0 -518
  122. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts +0 -6
  123. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts.map +0 -1
  124. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js +0 -255
  125. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js.map +0 -1
  126. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.tsx +0 -388
  127. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts +0 -10
  128. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts.map +0 -1
  129. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js +0 -131
  130. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js.map +0 -1
  131. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.tsx +0 -214
  132. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts +0 -108
  133. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts.map +0 -1
  134. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js +0 -162
  135. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js.map +0 -1
  136. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.ts +0 -428
  137. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts +0 -8
  138. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts.map +0 -1
  139. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js +0 -36
  140. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js.map +0 -1
  141. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.ts +0 -44
  142. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts +0 -837
  143. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts.map +0 -1
  144. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js +0 -3
  145. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js.map +0 -1
  146. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.ts +0 -861
  147. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts +0 -16
  148. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts.map +0 -1
  149. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js +0 -182
  150. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js.map +0 -1
  151. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.ts +0 -250
  152. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts +0 -4
  153. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts.map +0 -1
  154. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js +0 -51
  155. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js.map +0 -1
  156. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.ts +0 -61
  157. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts +0 -2
  158. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts.map +0 -1
  159. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js +0 -954
  160. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js.map +0 -1
  161. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.tsx +0 -1277
  162. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts +0 -2
  163. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts.map +0 -1
  164. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js +0 -488
  165. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js.map +0 -1
  166. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.tsx +0 -805
  167. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts +0 -6
  168. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts.map +0 -1
  169. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js +0 -9
  170. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js.map +0 -1
  171. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.tsx +0 -11
  172. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts +0 -6
  173. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts.map +0 -1
  174. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js +0 -9
  175. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js.map +0 -1
  176. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.tsx +0 -11
  177. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts +0 -2
  178. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts.map +0 -1
  179. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js +0 -8
  180. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js.map +0 -1
  181. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.tsx +0 -5
  182. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts +0 -2
  183. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts.map +0 -1
  184. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js +0 -612
  185. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js.map +0 -1
  186. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.tsx +0 -939
  187. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts +0 -6
  188. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts.map +0 -1
  189. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js +0 -9
  190. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js.map +0 -1
  191. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.tsx +0 -11
  192. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts +0 -6
  193. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts.map +0 -1
  194. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js +0 -9
  195. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js.map +0 -1
  196. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.tsx +0 -11
  197. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts +0 -6
  198. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts.map +0 -1
  199. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js +0 -9
  200. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js.map +0 -1
  201. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.tsx +0 -17
  202. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts +0 -2
  203. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts.map +0 -1
  204. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js +0 -348
  205. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js.map +0 -1
  206. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.tsx +0 -536
  207. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts +0 -2
  208. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts.map +0 -1
  209. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js +0 -401
  210. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js.map +0 -1
  211. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.tsx +0 -607
  212. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts +0 -5
  213. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts.map +0 -1
  214. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js +0 -7
  215. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js.map +0 -1
  216. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.tsx +0 -9
  217. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts +0 -6
  218. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts.map +0 -1
  219. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js +0 -9
  220. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js.map +0 -1
  221. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.tsx +0 -11
  222. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts +0 -2
  223. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts.map +0 -1
  224. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js +0 -321
  225. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js.map +0 -1
  226. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.tsx +0 -440
  227. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts +0 -2
  228. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts.map +0 -1
  229. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js +0 -939
  230. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js.map +0 -1
  231. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.tsx +0 -1499
  232. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts +0 -29
  233. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts.map +0 -1
  234. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js +0 -95
  235. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js.map +0 -1
  236. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.tsx +0 -233
  237. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts +0 -10
  238. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts.map +0 -1
  239. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js +0 -577
  240. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js.map +0 -1
  241. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.tsx +0 -868
  242. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts +0 -4
  243. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts.map +0 -1
  244. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js +0 -337
  245. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js.map +0 -1
  246. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.tsx +0 -476
  247. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts +0 -9
  248. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts.map +0 -1
  249. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js +0 -1348
  250. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js.map +0 -1
  251. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.tsx +0 -2233
  252. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts +0 -12
  253. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts.map +0 -1
  254. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js +0 -162
  255. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js.map +0 -1
  256. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.tsx +0 -261
  257. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts +0 -18
  258. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts.map +0 -1
  259. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js +0 -145
  260. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js.map +0 -1
  261. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.tsx +0 -258
  262. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts +0 -4
  263. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts.map +0 -1
  264. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js +0 -223
  265. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js.map +0 -1
  266. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.tsx +0 -342
  267. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts +0 -58
  268. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts.map +0 -1
  269. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js +0 -438
  270. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js.map +0 -1
  271. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.tsx +0 -698
  272. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts +0 -20
  273. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts.map +0 -1
  274. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js +0 -233
  275. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js.map +0 -1
  276. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.tsx +0 -392
  277. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts +0 -4
  278. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts.map +0 -1
  279. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js +0 -814
  280. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js.map +0 -1
  281. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.tsx +0 -1288
  282. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts +0 -21
  283. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts.map +0 -1
  284. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js +0 -174
  285. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js.map +0 -1
  286. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.tsx +0 -306
  287. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts +0 -10
  288. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts.map +0 -1
  289. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js +0 -12
  290. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js.map +0 -1
  291. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.tsx +0 -29
  292. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts +0 -15
  293. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts.map +0 -1
  294. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js +0 -501
  295. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js.map +0 -1
  296. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.tsx +0 -853
  297. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts +0 -6
  298. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts.map +0 -1
  299. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js +0 -459
  300. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js.map +0 -1
  301. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.tsx +0 -598
  302. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts +0 -6
  303. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts.map +0 -1
  304. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js +0 -876
  305. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js.map +0 -1
  306. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.tsx +0 -1368
  307. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts +0 -4
  308. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts.map +0 -1
  309. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js +0 -2930
  310. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js.map +0 -1
  311. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.tsx +0 -4378
  312. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts +0 -9
  313. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts.map +0 -1
  314. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js +0 -1013
  315. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js.map +0 -1
  316. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.tsx +0 -1745
  317. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts +0 -13
  318. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts.map +0 -1
  319. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js +0 -38
  320. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js.map +0 -1
  321. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.tsx +0 -74
  322. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts +0 -7
  323. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts.map +0 -1
  324. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js +0 -11
  325. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js.map +0 -1
  326. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.tsx +0 -15
  327. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts +0 -18
  328. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts.map +0 -1
  329. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js +0 -406
  330. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js.map +0 -1
  331. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.tsx +0 -660
  332. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts +0 -26
  333. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts.map +0 -1
  334. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js +0 -332
  335. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js.map +0 -1
  336. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.tsx +0 -518
  337. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts +0 -6
  338. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts.map +0 -1
  339. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js +0 -255
  340. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js.map +0 -1
  341. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.tsx +0 -388
  342. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts +0 -10
  343. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts.map +0 -1
  344. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js +0 -131
  345. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js.map +0 -1
  346. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.tsx +0 -214
  347. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts +0 -108
  348. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts.map +0 -1
  349. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js +0 -162
  350. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js.map +0 -1
  351. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.ts +0 -428
  352. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts +0 -8
  353. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts.map +0 -1
  354. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js +0 -36
  355. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js.map +0 -1
  356. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.ts +0 -44
  357. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts +0 -837
  358. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts.map +0 -1
  359. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js +0 -3
  360. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js.map +0 -1
  361. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.ts +0 -861
  362. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts +0 -16
  363. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts.map +0 -1
  364. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js +0 -182
  365. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js.map +0 -1
  366. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.ts +0 -250
  367. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts +0 -4
  368. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts.map +0 -1
  369. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js +0 -51
  370. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js.map +0 -1
  371. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.ts +0 -61
  372. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts +0 -2
  373. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts.map +0 -1
  374. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js +0 -954
  375. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js.map +0 -1
  376. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.tsx +0 -1277
  377. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts +0 -2
  378. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts.map +0 -1
  379. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js +0 -488
  380. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js.map +0 -1
  381. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.tsx +0 -805
  382. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts +0 -6
  383. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts.map +0 -1
  384. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js +0 -9
  385. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js.map +0 -1
  386. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.tsx +0 -11
  387. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts +0 -6
  388. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts.map +0 -1
  389. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js +0 -9
  390. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js.map +0 -1
  391. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.tsx +0 -11
  392. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts +0 -2
  393. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts.map +0 -1
  394. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js +0 -8
  395. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js.map +0 -1
  396. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.tsx +0 -5
  397. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts +0 -2
  398. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts.map +0 -1
  399. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js +0 -612
  400. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js.map +0 -1
  401. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.tsx +0 -939
  402. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts +0 -6
  403. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts.map +0 -1
  404. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js +0 -9
  405. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js.map +0 -1
  406. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.tsx +0 -11
  407. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts +0 -6
  408. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts.map +0 -1
  409. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js +0 -9
  410. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js.map +0 -1
  411. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.tsx +0 -11
  412. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts +0 -6
  413. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts.map +0 -1
  414. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js +0 -9
  415. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js.map +0 -1
  416. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.tsx +0 -17
  417. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts +0 -2
  418. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts.map +0 -1
  419. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js +0 -348
  420. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js.map +0 -1
  421. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.tsx +0 -536
  422. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts +0 -2
  423. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts.map +0 -1
  424. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js +0 -401
  425. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js.map +0 -1
  426. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.tsx +0 -607
  427. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts +0 -5
  428. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts.map +0 -1
  429. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js +0 -7
  430. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js.map +0 -1
  431. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.tsx +0 -9
  432. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts +0 -6
  433. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts.map +0 -1
  434. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js +0 -9
  435. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js.map +0 -1
  436. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.tsx +0 -11
  437. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts +0 -2
  438. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts.map +0 -1
  439. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js +0 -321
  440. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js.map +0 -1
  441. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.tsx +0 -440
  442. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts +0 -2
  443. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts.map +0 -1
  444. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js +0 -939
  445. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js.map +0 -1
  446. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.tsx +0 -1499
  447. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts +0 -2
  448. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts.map +0 -1
  449. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js +0 -8
  450. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js.map +0 -1
  451. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.tsx +0 -5
  452. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts +0 -2
  453. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts.map +0 -1
  454. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js +0 -436
  455. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js.map +0 -1
  456. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.tsx +0 -675
  457. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts +0 -2
  458. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts.map +0 -1
  459. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js +0 -563
  460. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js.map +0 -1
  461. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.tsx +0 -846
  462. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts +0 -6
  463. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts.map +0 -1
  464. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js +0 -9
  465. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js.map +0 -1
  466. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.tsx +0 -10
  467. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts +0 -6
  468. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts.map +0 -1
  469. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js +0 -9
  470. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js.map +0 -1
  471. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.tsx +0 -11
  472. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts +0 -6
  473. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts.map +0 -1
  474. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js +0 -9
  475. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js.map +0 -1
  476. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.tsx +0 -11
  477. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts +0 -2
  478. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts.map +0 -1
  479. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js +0 -8
  480. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js.map +0 -1
  481. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.tsx +0 -5
  482. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts +0 -2
  483. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts.map +0 -1
  484. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js +0 -492
  485. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js.map +0 -1
  486. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.tsx +0 -757
  487. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts +0 -2
  488. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts.map +0 -1
  489. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js +0 -342
  490. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js.map +0 -1
  491. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.tsx +0 -430
  492. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts +0 -2
  493. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts.map +0 -1
  494. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js +0 -338
  495. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js.map +0 -1
  496. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.tsx +0 -428
  497. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts +0 -2
  498. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts.map +0 -1
  499. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js +0 -660
  500. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js.map +0 -1
  501. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.tsx +0 -992
  502. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts +0 -2
  503. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts.map +0 -1
  504. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js +0 -515
  505. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js.map +0 -1
  506. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.tsx +0 -707
  507. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts +0 -2
  508. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts.map +0 -1
  509. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js +0 -1141
  510. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js.map +0 -1
  511. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.tsx +0 -1705
  512. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts +0 -2
  513. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts.map +0 -1
  514. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js +0 -8
  515. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js.map +0 -1
  516. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.tsx +0 -5
  517. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts +0 -2
  518. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts.map +0 -1
  519. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js +0 -436
  520. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js.map +0 -1
  521. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.tsx +0 -675
  522. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts +0 -2
  523. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts.map +0 -1
  524. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js +0 -563
  525. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js.map +0 -1
  526. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.tsx +0 -846
  527. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts +0 -6
  528. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts.map +0 -1
  529. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js +0 -9
  530. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js.map +0 -1
  531. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.tsx +0 -11
  532. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts +0 -6
  533. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts.map +0 -1
  534. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js +0 -9
  535. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js.map +0 -1
  536. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.tsx +0 -11
  537. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts +0 -2
  538. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts.map +0 -1
  539. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js +0 -8
  540. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js.map +0 -1
  541. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.tsx +0 -5
  542. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts +0 -2
  543. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts.map +0 -1
  544. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js +0 -492
  545. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js.map +0 -1
  546. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.tsx +0 -757
  547. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts +0 -2
  548. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts.map +0 -1
  549. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js +0 -342
  550. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js.map +0 -1
  551. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.tsx +0 -430
  552. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts +0 -2
  553. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts.map +0 -1
  554. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js +0 -338
  555. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js.map +0 -1
  556. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.tsx +0 -428
  557. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts +0 -2
  558. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts.map +0 -1
  559. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js +0 -660
  560. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js.map +0 -1
  561. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.tsx +0 -992
  562. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts +0 -2
  563. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts.map +0 -1
  564. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js +0 -515
  565. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js.map +0 -1
  566. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.tsx +0 -707
  567. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts +0 -2
  568. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts.map +0 -1
  569. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js +0 -1141
  570. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js.map +0 -1
  571. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.tsx +0 -1705
@@ -1,1141 +0,0 @@
1
- "use strict";
2
- 'use client';
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.default = OperationsTimesheetsPage;
5
- const entity_list_1 = require("@/components/entity-list");
6
- const alert_dialog_1 = require("@/components/ui/alert-dialog");
7
- const button_1 = require("@/components/ui/button");
8
- const form_1 = require("@/components/ui/form");
9
- const form_actions_1 = require("@/components/ui/form-actions");
10
- const input_1 = require("@/components/ui/input");
11
- const kpi_cards_grid_1 = require("@/components/ui/kpi-cards-grid");
12
- const sheet_1 = require("@/components/ui/sheet");
13
- const switch_1 = require("@/components/ui/switch");
14
- const table_1 = require("@/components/ui/table");
15
- const textarea_1 = require("@/components/ui/textarea");
16
- const toggle_group_1 = require("@/components/ui/toggle-group");
17
- const next_app_provider_1 = require("@hed-hog/next-app-provider");
18
- const zod_1 = require("@hookform/resolvers/zod");
19
- const lucide_react_1 = require("lucide-react");
20
- const next_intl_1 = require("next-intl");
21
- const react_1 = require("react");
22
- const react_hook_form_1 = require("react-hook-form");
23
- const zod_2 = require("zod");
24
- const async_options_combobox_1 = require("../_components/async-options-combobox");
25
- const operations_calendar_view_1 = require("../_components/operations-calendar-view");
26
- const operations_header_1 = require("../_components/operations-header");
27
- const status_badge_1 = require("../_components/status-badge");
28
- const timesheet_task_create_sheet_1 = require("../_components/timesheet-task-create-sheet");
29
- const api_1 = require("../_lib/api");
30
- const use_operations_access_1 = require("../_lib/hooks/use-operations-access");
31
- const format_1 = require("../_lib/utils/format");
32
- const forms_1 = require("../_lib/utils/forms");
33
- const getTodayDate = () => {
34
- const now = new Date();
35
- return `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;
36
- };
37
- const buildDefaultFormValues = () => ({
38
- projectId: undefined,
39
- taskId: undefined,
40
- workDate: getTodayDate(),
41
- duration: undefined,
42
- unit: 'hours',
43
- description: '',
44
- });
45
- const positiveNumberField = (message) => zod_2.z.preprocess((value) => {
46
- if (value === '' || value === null || value === undefined) {
47
- return undefined;
48
- }
49
- if (typeof value === 'number') {
50
- return value;
51
- }
52
- const parsed = Number(value);
53
- return Number.isNaN(parsed) ? value : parsed;
54
- }, zod_2.z.number({ required_error: message }).positive(message));
55
- function appendUniqueById(current, next) {
56
- const unique = new Map();
57
- [...current, ...next].forEach((item) => {
58
- unique.set(String(item.id), item);
59
- });
60
- return Array.from(unique.values());
61
- }
62
- function formatDateLabel(value) {
63
- if (!value) {
64
- return '—';
65
- }
66
- // Always extract just the YYYY-MM-DD part to avoid UTC offset shifting the date
67
- const match = String(value).match(/(\d{4}-\d{2}-\d{2})/);
68
- if (!match) {
69
- return value;
70
- }
71
- const date = new Date(`${match[1]}T12:00:00`);
72
- if (Number.isNaN(date.getTime())) {
73
- return value;
74
- }
75
- return new Intl.DateTimeFormat(undefined, {
76
- day: '2-digit',
77
- month: 'short',
78
- year: 'numeric',
79
- }).format(date);
80
- }
81
- function formatEntryDuration(minutes, hours) {
82
- if (typeof minutes === 'number' && Number.isFinite(minutes) && minutes > 0) {
83
- const wholeHours = Math.floor(minutes / 60);
84
- const remainingMinutes = minutes % 60;
85
- if (!wholeHours) {
86
- return `${remainingMinutes}m`;
87
- }
88
- if (!remainingMinutes) {
89
- return `${wholeHours}h`;
90
- }
91
- return `${wholeHours}h ${remainingMinutes}m`;
92
- }
93
- return (0, format_1.formatHours)(Number(hours !== null && hours !== void 0 ? hours : 0));
94
- }
95
- function buildFollowUpFormValues(current, keepContextOnSave) {
96
- var _a;
97
- if (!keepContextOnSave) {
98
- return buildDefaultFormValues();
99
- }
100
- return {
101
- projectId: current.projectId,
102
- taskId: current.taskId,
103
- workDate: current.workDate || getTodayDate(),
104
- duration: 0,
105
- unit: (_a = current.unit) !== null && _a !== void 0 ? _a : 'hours',
106
- description: '',
107
- };
108
- }
109
- function buildEntryFormValues(entry) {
110
- var _a, _b, _c, _d, _e, _f;
111
- return {
112
- projectId: (_a = entry.projectId) !== null && _a !== void 0 ? _a : undefined,
113
- taskId: (_b = entry.taskId) !== null && _b !== void 0 ? _b : undefined,
114
- workDate: (_d = (_c = String(entry.workDate).match(/(\d{4}-\d{2}-\d{2})/)) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : '',
115
- duration: typeof entry.durationMinutes === 'number' && entry.durationMinutes > 0
116
- ? Number((entry.durationMinutes / 60).toFixed(2))
117
- : Number((_e = entry.hours) !== null && _e !== void 0 ? _e : 0),
118
- unit: 'hours',
119
- description: (_f = entry.description) !== null && _f !== void 0 ? _f : '',
120
- };
121
- }
122
- function OperationsTimesheetsPage() {
123
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
124
- const t = (0, next_intl_1.useTranslations)('operations.TimesheetsPage');
125
- const commonT = (0, next_intl_1.useTranslations)('operations.Common');
126
- const { request, showToastHandler, currentLocaleCode } = (0, next_app_provider_1.useApp)();
127
- const access = (0, use_operations_access_1.useOperationsAccess)();
128
- const [search, setSearch] = (0, react_1.useState)('');
129
- const [statusFilter, setStatusFilter] = (0, react_1.useState)('all');
130
- const [dateFrom, setDateFrom] = (0, react_1.useState)('');
131
- const [dateTo, setDateTo] = (0, react_1.useState)('');
132
- const [calendarYear, setCalendarYear] = (0, react_1.useState)(() => new Date().getFullYear());
133
- const [calendarMonth, setCalendarMonth] = (0, react_1.useState)(() => new Date().getMonth() + 1);
134
- const [page, setPage] = (0, react_1.useState)(1);
135
- const [pageSize, setPageSize] = (0, react_1.useState)(12);
136
- const [viewMode, setViewMode] = (0, react_1.useState)(() => {
137
- if (typeof window === 'undefined')
138
- return 'table';
139
- const saved = window.localStorage.getItem('operations-timesheets-view-mode');
140
- return saved === 'cards' || saved === 'calendar' ? saved : 'table';
141
- });
142
- const [isSheetOpen, setIsSheetOpen] = (0, react_1.useState)(false);
143
- const [isDetailsOpen, setIsDetailsOpen] = (0, react_1.useState)(false);
144
- const [isTaskCreateSheetOpen, setIsTaskCreateSheetOpen] = (0, react_1.useState)(false);
145
- const [keepContextOnSave, setKeepContextOnSave] = (0, react_1.useState)(true);
146
- const [editingEntry, setEditingEntry] = (0, react_1.useState)(null);
147
- const [entryToDelete, setEntryToDelete] = (0, react_1.useState)(null);
148
- const [selectedTimesheet, setSelectedTimesheet] = (0, react_1.useState)(null);
149
- const [isDeletingEntry, setIsDeletingEntry] = (0, react_1.useState)(false);
150
- const [projectQuery, setProjectQuery] = (0, react_1.useState)({ search: '', page: 1 });
151
- const [projectOptions, setProjectOptions] = (0, react_1.useState)([]);
152
- const [taskQuery, setTaskQuery] = (0, react_1.useState)({ search: '', page: 1 });
153
- const [taskRefreshKey, setTaskRefreshKey] = (0, react_1.useState)(0);
154
- const [taskOptions, setTaskOptions] = (0, react_1.useState)([]);
155
- const previousProjectIdRef = (0, react_1.useRef)(undefined);
156
- const quickEntrySchema = (0, react_1.useMemo)(() => zod_2.z.object({
157
- projectId: positiveNumberField(t('messages.selectProjectRequired')),
158
- taskId: positiveNumberField(t('messages.selectTaskRequired')),
159
- workDate: zod_2.z.string().min(1, t('messages.requiredFields')),
160
- duration: positiveNumberField(t('messages.entryValidation')),
161
- unit: zod_2.z.enum(['hours', 'minutes']),
162
- description: zod_2.z
163
- .string()
164
- .trim()
165
- .max(500, t('sheet.validation.descriptionMaxLength'))
166
- .optional()
167
- .or(zod_2.z.literal('')),
168
- }), [t]);
169
- const form = (0, react_hook_form_1.useForm)({
170
- resolver: (0, zod_1.zodResolver)(quickEntrySchema),
171
- defaultValues: buildDefaultFormValues(),
172
- });
173
- const selectedProjectId = (0, react_hook_form_1.useWatch)({
174
- control: form.control,
175
- name: 'projectId',
176
- });
177
- const selectedTaskId = (0, react_hook_form_1.useWatch)({
178
- control: form.control,
179
- name: 'taskId',
180
- });
181
- const unitValue = (0, react_hook_form_1.useWatch)({
182
- control: form.control,
183
- name: 'unit',
184
- });
185
- const { data: timesheetsResponse, refetch } = (0, next_app_provider_1.useQuery)({
186
- queryKey: [
187
- 'operations-timesheets',
188
- currentLocaleCode,
189
- search,
190
- statusFilter,
191
- dateFrom,
192
- dateTo,
193
- page,
194
- pageSize,
195
- ],
196
- queryFn: () => {
197
- const params = new URLSearchParams({
198
- page: String(page),
199
- pageSize: String(pageSize),
200
- });
201
- if (search.trim())
202
- params.set('search', search.trim());
203
- if (statusFilter !== 'all')
204
- params.set('status', statusFilter);
205
- if (dateFrom)
206
- params.set('dateFrom', dateFrom);
207
- if (dateTo)
208
- params.set('dateTo', dateTo);
209
- return (0, api_1.fetchOperations)(request, `/operations/timesheets?${params.toString()}`);
210
- },
211
- placeholderData: (previous) => previous,
212
- });
213
- const timesheets = (_a = timesheetsResponse === null || timesheetsResponse === void 0 ? void 0 : timesheetsResponse.data) !== null && _a !== void 0 ? _a : [];
214
- const calendarDateFrom = `${String(calendarYear)}-${String(calendarMonth).padStart(2, '0')}-01`;
215
- const calendarDateTo = (() => {
216
- const lastDay = new Date(calendarYear, calendarMonth, 0).getDate();
217
- return `${String(calendarYear)}-${String(calendarMonth).padStart(2, '0')}-${String(lastDay).padStart(2, '0')}`;
218
- })();
219
- const { data: calendarTimesheetsResponse } = (0, next_app_provider_1.useQuery)({
220
- queryKey: [
221
- 'operations-timesheets-calendar',
222
- currentLocaleCode,
223
- search,
224
- statusFilter,
225
- calendarYear,
226
- calendarMonth,
227
- ],
228
- enabled: viewMode === 'calendar',
229
- queryFn: () => {
230
- const params = new URLSearchParams({
231
- sortField: 'weekStartDate',
232
- sortOrder: 'desc',
233
- dateFrom: calendarDateFrom,
234
- dateTo: calendarDateTo,
235
- });
236
- if (search.trim())
237
- params.set('search', search.trim());
238
- if (statusFilter !== 'all')
239
- params.set('status', statusFilter);
240
- return (0, api_1.fetchOperations)(request, `/operations/timesheets?${params.toString()}`);
241
- },
242
- placeholderData: (previous) => previous,
243
- });
244
- const calendarTimesheets = (0, react_1.useMemo)(() => { var _a; return (_a = calendarTimesheetsResponse === null || calendarTimesheetsResponse === void 0 ? void 0 : calendarTimesheetsResponse.data) !== null && _a !== void 0 ? _a : []; }, [calendarTimesheetsResponse]);
245
- const getTimesheetStatusLabel = (0, react_1.useCallback)((status) => {
246
- if (!status) {
247
- return commonT('labels.notAvailable');
248
- }
249
- return t.has(`statuses.${status}`)
250
- ? t(`statuses.${status}`)
251
- : (0, format_1.formatEnumLabel)(status);
252
- }, [commonT, t]);
253
- const handleViewModeChange = (value) => {
254
- if (value !== 'table' && value !== 'cards' && value !== 'calendar')
255
- return;
256
- setViewMode(value);
257
- if (typeof window !== 'undefined') {
258
- window.localStorage.setItem('operations-timesheets-view-mode', value);
259
- }
260
- };
261
- const { data: me } = (0, next_app_provider_1.useQuery)({
262
- queryKey: ['operations-timesheets-me', currentLocaleCode],
263
- enabled: access.isCollaborator,
264
- queryFn: () => (0, api_1.fetchOperations)(request, '/operations/collaborators/me'),
265
- });
266
- const { refetch: refetchRecentEntries } = (0, next_app_provider_1.useQuery)({
267
- queryKey: [
268
- 'operations-timesheet-recent-entries',
269
- currentLocaleCode,
270
- search,
271
- statusFilter,
272
- ],
273
- enabled: access.isCollaborator,
274
- queryFn: () => {
275
- const params = new URLSearchParams({
276
- page: '1',
277
- pageSize: '8',
278
- sortField: 'workDate',
279
- sortOrder: 'desc',
280
- });
281
- if (search.trim()) {
282
- params.set('search', search.trim());
283
- }
284
- if (statusFilter !== 'all') {
285
- params.set('status', statusFilter);
286
- }
287
- return (0, api_1.fetchOperations)(request, `/operations/timesheet-entries?${params.toString()}`);
288
- },
289
- placeholderData: (previous) => previous,
290
- });
291
- const { data: projectOptionsResponse, isLoading: isProjectOptionsLoading, error: projectOptionsError, } = (0, next_app_provider_1.useQuery)({
292
- queryKey: [
293
- 'operations-timesheet-project-options',
294
- currentLocaleCode,
295
- projectQuery.search,
296
- projectQuery.page,
297
- ],
298
- enabled: access.isCollaborator && isSheetOpen,
299
- queryFn: () => {
300
- const params = new URLSearchParams({
301
- page: String(projectQuery.page),
302
- pageSize: '20',
303
- });
304
- if (projectQuery.search.trim()) {
305
- params.set('search', projectQuery.search.trim());
306
- }
307
- return (0, api_1.fetchOperations)(request, `/operations/projects/options?${params.toString()}`);
308
- },
309
- placeholderData: (previous) => previous,
310
- });
311
- const selectedProject = (_b = projectOptions.find((option) => option.id === selectedProjectId)) !== null && _b !== void 0 ? _b : null;
312
- const { data: taskOptionsResponse, isLoading: isTaskOptionsLoading, error: taskOptionsError, } = (0, next_app_provider_1.useQuery)({
313
- queryKey: [
314
- 'operations-timesheet-task-options',
315
- currentLocaleCode,
316
- selectedProjectId,
317
- taskQuery.search,
318
- taskQuery.page,
319
- taskRefreshKey,
320
- ],
321
- enabled: access.isCollaborator && isSheetOpen && Boolean(selectedProjectId),
322
- queryFn: () => {
323
- const params = new URLSearchParams({
324
- page: String(taskQuery.page),
325
- pageSize: '20',
326
- });
327
- if (taskQuery.search.trim()) {
328
- params.set('search', taskQuery.search.trim());
329
- }
330
- if (selectedProjectId) {
331
- params.set('projectId', String(selectedProjectId));
332
- }
333
- return (0, api_1.fetchOperations)(request, `/operations/tasks?${params.toString()}`);
334
- },
335
- });
336
- (0, react_1.useEffect)(() => {
337
- if (!projectOptionsResponse) {
338
- return;
339
- }
340
- setProjectOptions((current) => {
341
- var _a, _b, _c;
342
- return projectQuery.page === 1
343
- ? editingEntry
344
- ? appendUniqueById(current, (_a = projectOptionsResponse.data) !== null && _a !== void 0 ? _a : [])
345
- : ((_b = projectOptionsResponse.data) !== null && _b !== void 0 ? _b : [])
346
- : appendUniqueById(current, (_c = projectOptionsResponse.data) !== null && _c !== void 0 ? _c : []);
347
- });
348
- }, [editingEntry, projectOptionsResponse, projectQuery.page]);
349
- (0, react_1.useEffect)(() => {
350
- if (!selectedProjectId) {
351
- setTaskOptions([]);
352
- return;
353
- }
354
- if (!taskOptionsResponse) {
355
- return;
356
- }
357
- setTaskOptions((current) => {
358
- var _a, _b, _c;
359
- return taskQuery.page === 1
360
- ? editingEntry
361
- ? appendUniqueById(current, ((_a = taskOptionsResponse.data) !== null && _a !== void 0 ? _a : []).filter((option) => option.projectId === selectedProjectId))
362
- : ((_b = taskOptionsResponse.data) !== null && _b !== void 0 ? _b : []).filter((option) => option.projectId === selectedProjectId)
363
- : appendUniqueById(current, ((_c = taskOptionsResponse.data) !== null && _c !== void 0 ? _c : []).filter((option) => option.projectId === selectedProjectId));
364
- });
365
- }, [editingEntry, selectedProjectId, taskOptionsResponse, taskQuery.page]);
366
- (0, react_1.useEffect)(() => {
367
- const previousProjectId = previousProjectIdRef.current;
368
- previousProjectIdRef.current = selectedProjectId;
369
- if (previousProjectId === undefined ||
370
- previousProjectId === selectedProjectId) {
371
- return;
372
- }
373
- setTaskOptions([]);
374
- setTaskQuery({ search: '', page: 1 });
375
- form.setValue('taskId', undefined, {
376
- shouldDirty: true,
377
- shouldTouch: true,
378
- shouldValidate: false,
379
- });
380
- }, [form, selectedProjectId]);
381
- (0, react_1.useEffect)(() => {
382
- if (!projectOptionsError) {
383
- return;
384
- }
385
- showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('error', (0, api_1.getOperationsErrorMessage)(projectOptionsError, t('messages.projectLoadError')));
386
- }, [projectOptionsError, showToastHandler, t]);
387
- (0, react_1.useEffect)(() => {
388
- if (!taskOptionsError) {
389
- return;
390
- }
391
- showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('error', (0, api_1.getOperationsErrorMessage)(taskOptionsError, t('messages.taskLoadError')));
392
- }, [showToastHandler, t, taskOptionsError]);
393
- const filteredTaskOptions = selectedProjectId
394
- ? taskOptions.filter((option) => option.projectId === selectedProjectId)
395
- : [];
396
- const selectedTask = (_c = filteredTaskOptions.find((option) => option.id === selectedTaskId)) !== null && _c !== void 0 ? _c : null;
397
- const isEditingEntry = Boolean(editingEntry);
398
- const filteredRows = timesheets;
399
- const calendarItems = (0, react_1.useMemo)(() => calendarTimesheets.map((timesheet) => {
400
- var _a, _b, _c, _d, _e;
401
- return ({
402
- id: `timesheet-${timesheet.id}`,
403
- date: (_b = (_a = String(timesheet.weekStartDate).match(/(\d{4}-\d{2}-\d{2})/)) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : timesheet.weekStartDate,
404
- kind: 'timesheet',
405
- title: `${(0, format_1.formatHours)(timesheet.totalHours)} • ${timesheet.collaboratorName}`,
406
- subtitle: ((_c = timesheet.entries) !== null && _c !== void 0 ? _c : [])
407
- .slice(0, 2)
408
- .map((entry) => [entry.projectName, entry.taskName || entry.activityLabel]
409
- .filter(Boolean)
410
- .join(' • ') || commonT('labels.unassigned'))
411
- .join(', ') || commonT('labels.unassigned'),
412
- meta: `${(_e = (_d = timesheet.entries) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0} ${commonT('labels.lines')}`,
413
- statusLabel: getTimesheetStatusLabel(timesheet.status),
414
- badgeClassName: (0, format_1.getStatusBadgeClass)(timesheet.status),
415
- });
416
- }), [calendarTimesheets, commonT, getTimesheetStatusLabel]);
417
- const cards = [
418
- {
419
- key: 'all',
420
- title: t('cards.visible'),
421
- description: t('cards.visibleDescription'),
422
- value: timesheets.length,
423
- },
424
- {
425
- key: 'pending',
426
- title: t('cards.pending'),
427
- description: t('cards.pendingDescription'),
428
- value: timesheets.filter((item) => item.status === 'submitted').length,
429
- },
430
- {
431
- key: 'hours',
432
- title: t('cards.hours'),
433
- description: t('cards.hoursDescription'),
434
- value: (0, format_1.formatHours)(timesheets.reduce((total, item) => { var _a; return total + Number((_a = item.totalHours) !== null && _a !== void 0 ? _a : 0); }, 0)),
435
- },
436
- ];
437
- const openCreate = () => {
438
- setEditingEntry(null);
439
- form.reset(buildDefaultFormValues());
440
- setProjectQuery({ search: '', page: 1 });
441
- setTaskQuery({ search: '', page: 1 });
442
- setProjectOptions([]);
443
- setTaskOptions([]);
444
- setIsTaskCreateSheetOpen(false);
445
- setIsSheetOpen(true);
446
- };
447
- const closeCreateSheet = () => {
448
- setIsSheetOpen(false);
449
- setEditingEntry(null);
450
- setIsTaskCreateSheetOpen(false);
451
- form.reset(buildDefaultFormValues());
452
- setProjectQuery({ search: '', page: 1 });
453
- setTaskQuery({ search: '', page: 1 });
454
- setProjectOptions([]);
455
- setTaskOptions([]);
456
- };
457
- const openDetails = (timesheet) => {
458
- setSelectedTimesheet(timesheet);
459
- setIsDetailsOpen(true);
460
- };
461
- const openEditEntry = (entry) => {
462
- setEditingEntry(entry);
463
- form.reset(buildEntryFormValues(entry));
464
- setProjectQuery({ search: '', page: 1 });
465
- setTaskQuery({ search: '', page: 1 });
466
- setProjectOptions((current) => {
467
- var _a;
468
- return appendUniqueById(current, entry.projectId && entry.projectName
469
- ? [
470
- {
471
- id: entry.projectId,
472
- label: [entry.projectCode, entry.projectName]
473
- .filter(Boolean)
474
- .join(' • ') || entry.projectName,
475
- name: entry.projectName,
476
- code: entry.projectCode,
477
- status: (_a = entry.status) !== null && _a !== void 0 ? _a : 'submitted',
478
- },
479
- ]
480
- : []);
481
- });
482
- setTaskOptions((current) => {
483
- var _a, _b;
484
- return appendUniqueById(current, entry.taskId && entry.projectId
485
- ? [
486
- {
487
- id: entry.taskId,
488
- label: entry.taskName ||
489
- entry.activityLabel ||
490
- commonT('labels.unassigned'),
491
- name: entry.taskName ||
492
- entry.activityLabel ||
493
- commonT('labels.unassigned'),
494
- status: (_a = entry.status) !== null && _a !== void 0 ? _a : 'submitted',
495
- projectId: entry.projectId,
496
- projectAssignmentId: (_b = entry.projectAssignmentId) !== null && _b !== void 0 ? _b : 0,
497
- projectName: entry.projectName || commonT('labels.unassigned'),
498
- },
499
- ]
500
- : []);
501
- });
502
- setEntryToDelete(null);
503
- setIsDetailsOpen(false);
504
- setIsTaskCreateSheetOpen(false);
505
- setIsSheetOpen(true);
506
- };
507
- const openTimesheetForDate = (date) => {
508
- var _a;
509
- const existingTimesheet = (_a = calendarTimesheets.find((item) => item.weekStartDate === date)) !== null && _a !== void 0 ? _a : timesheets.find((item) => item.weekStartDate === date);
510
- if (existingTimesheet) {
511
- openDetails(existingTimesheet);
512
- return;
513
- }
514
- setEditingEntry(null);
515
- form.reset(Object.assign(Object.assign({}, buildDefaultFormValues()), { workDate: date }));
516
- setProjectQuery({ search: '', page: 1 });
517
- setTaskQuery({ search: '', page: 1 });
518
- setProjectOptions([]);
519
- setTaskOptions([]);
520
- setIsTaskCreateSheetOpen(false);
521
- setIsSheetOpen(true);
522
- };
523
- const canManageRow = (timesheet) => {
524
- return Boolean((me === null || me === void 0 ? void 0 : me.id) &&
525
- timesheet.collaboratorId === me.id &&
526
- timesheet.status !== 'approved');
527
- };
528
- const canSubmitTimesheet = (timesheet) => {
529
- return Boolean((me === null || me === void 0 ? void 0 : me.id) &&
530
- timesheet.collaboratorId === me.id &&
531
- ['draft', 'rejected'].includes(timesheet.status));
532
- };
533
- const handleQuickEntrySubmit = async (values) => {
534
- const payload = {
535
- projectId: values.projectId,
536
- taskId: values.taskId,
537
- workDate: values.workDate,
538
- duration: values.duration,
539
- unit: values.unit,
540
- description: (0, forms_1.trimToNull)(values.description),
541
- };
542
- try {
543
- if (editingEntry === null || editingEntry === void 0 ? void 0 : editingEntry.id) {
544
- await (0, api_1.mutateOperations)(request, `/operations/timesheet-entries/${editingEntry.id}`, 'PATCH', payload);
545
- }
546
- else {
547
- await (0, api_1.mutateOperations)(request, '/operations/timesheet-entries', 'POST', payload);
548
- }
549
- showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('success', editingEntry ? t('messages.updateSuccess') : t('messages.saveSuccess'));
550
- if (!editingEntry && keepContextOnSave) {
551
- form.reset(buildFollowUpFormValues(values, true));
552
- setProjectQuery({ search: '', page: 1 });
553
- setTaskQuery({ search: '', page: 1 });
554
- setIsTaskCreateSheetOpen(false);
555
- setTimeout(() => form.setFocus('duration'), 0);
556
- }
557
- else {
558
- closeCreateSheet();
559
- }
560
- await Promise.all([refetch(), refetchRecentEntries()]);
561
- }
562
- catch (error) {
563
- showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('error', (0, api_1.getOperationsErrorMessage)(error, editingEntry ? t('messages.updateError') : t('messages.saveError')));
564
- }
565
- };
566
- const submitTimesheet = async (timesheetId) => {
567
- try {
568
- await request({
569
- url: `/operations/timesheets/${timesheetId}/submit`,
570
- method: 'POST',
571
- });
572
- showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('success', t('messages.submitSuccess'));
573
- await Promise.all([refetch(), refetchRecentEntries()]);
574
- }
575
- catch (error) {
576
- showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('error', (0, api_1.getOperationsErrorMessage)(error, t('messages.submitError')));
577
- }
578
- };
579
- const openTaskCreateSheet = () => {
580
- if (!selectedProjectId || !selectedProject) {
581
- showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('error', t('messages.selectProjectFirst'));
582
- return;
583
- }
584
- setIsTaskCreateSheetOpen(true);
585
- };
586
- const handleTaskCreated = (task) => {
587
- setTaskOptions((current) => [
588
- task,
589
- ...current.filter((item) => item.id !== task.id),
590
- ]);
591
- form.setValue('taskId', task.id, {
592
- shouldDirty: true,
593
- shouldTouch: true,
594
- shouldValidate: true,
595
- });
596
- setTaskQuery({ search: '', page: 1 });
597
- setTaskRefreshKey((current) => current + 1);
598
- };
599
- const handleDeleteEntry = async () => {
600
- if (!(entryToDelete === null || entryToDelete === void 0 ? void 0 : entryToDelete.id)) {
601
- return;
602
- }
603
- try {
604
- setIsDeletingEntry(true);
605
- await (0, api_1.mutateOperations)(request, `/operations/timesheet-entries/${entryToDelete.id}`, 'DELETE');
606
- showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('success', t('messages.deleteSuccess'));
607
- setEntryToDelete(null);
608
- await Promise.all([refetch(), refetchRecentEntries()]);
609
- }
610
- catch (error) {
611
- showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('error', (0, api_1.getOperationsErrorMessage)(error, t('messages.deleteError')));
612
- }
613
- finally {
614
- setIsDeletingEntry(false);
615
- }
616
- };
617
- return (<entity_list_1.Page>
618
- <operations_header_1.OperationsHeader title={t('title')} description={t('description')} current={t('breadcrumb')} actions={access.isCollaborator ? (<button_1.Button size="sm" onClick={openCreate}>
619
- <lucide_react_1.Plus className="size-4"/>
620
- {commonT('actions.create')}
621
- </button_1.Button>) : undefined}/>
622
-
623
- <div className="flex min-w-0 flex-col gap-4 xl:flex-row xl:items-center">
624
- <div className="flex-1">
625
- <entity_list_1.SearchBar searchQuery={search} onSearchChange={(value) => {
626
- setSearch(value);
627
- setPage(1);
628
- }} showSearchButton={false} debounceMs={500} placeholder={t('searchPlaceholder')} controls={[
629
- {
630
- id: 'status',
631
- type: 'select',
632
- value: statusFilter,
633
- onChange: (value) => {
634
- setStatusFilter(value);
635
- setPage(1);
636
- },
637
- placeholder: commonT('labels.status'),
638
- options: [
639
- { value: 'all', label: commonT('filters.allStatuses') },
640
- { value: 'draft', label: getTimesheetStatusLabel('draft') },
641
- {
642
- value: 'submitted',
643
- label: getTimesheetStatusLabel('submitted'),
644
- },
645
- {
646
- value: 'approved',
647
- label: getTimesheetStatusLabel('approved'),
648
- },
649
- {
650
- value: 'rejected',
651
- label: getTimesheetStatusLabel('rejected'),
652
- },
653
- ],
654
- },
655
- {
656
- id: 'dateFrom',
657
- type: 'date',
658
- value: dateFrom,
659
- onChange: (value) => {
660
- setDateFrom(value);
661
- setPage(1);
662
- },
663
- label: commonT('filters.dateFrom'),
664
- },
665
- {
666
- id: 'dateTo',
667
- type: 'date',
668
- value: dateTo,
669
- onChange: (value) => {
670
- setDateTo(value);
671
- setPage(1);
672
- },
673
- label: commonT('filters.dateTo'),
674
- },
675
- ]}/>
676
- </div>
677
-
678
- <div className="flex items-center justify-between gap-3 xl:justify-end">
679
- <span className="text-xs font-medium text-muted-foreground">
680
- {t('viewMode')}
681
- </span>
682
- <toggle_group_1.ToggleGroup type="single" value={viewMode} onValueChange={handleViewModeChange} variant="outline" size="sm">
683
- <toggle_group_1.ToggleGroupItem value="table" className="gap-1.5 px-2.5">
684
- <lucide_react_1.List className="h-4 w-4"/>
685
- <span className="hidden sm:inline">{t('viewModeTable')}</span>
686
- </toggle_group_1.ToggleGroupItem>
687
- <toggle_group_1.ToggleGroupItem value="cards" className="gap-1.5 px-2.5">
688
- <lucide_react_1.LayoutGrid className="h-4 w-4"/>
689
- <span className="hidden sm:inline">{t('viewModeCards')}</span>
690
- </toggle_group_1.ToggleGroupItem>
691
- <toggle_group_1.ToggleGroupItem value="calendar" className="gap-1.5 px-2.5">
692
- <lucide_react_1.CalendarDays className="h-4 w-4"/>
693
- <span className="hidden sm:inline">{t('viewModeCalendar')}</span>
694
- </toggle_group_1.ToggleGroupItem>
695
- </toggle_group_1.ToggleGroup>
696
- </div>
697
- </div>
698
-
699
- <kpi_cards_grid_1.KpiCardsGrid items={cards} columns={3}/>
700
-
701
- {(viewMode === 'calendar' ? true : timesheets.length > 0) ? (viewMode === 'calendar' ? (<operations_calendar_view_1.OperationsCalendarView locale={currentLocaleCode} items={calendarItems} emptyLabel={t('emptyDescription')} actionLabel={t('actions.viewDetails')} onMonthChange={(year, month) => {
702
- setCalendarYear(year);
703
- setCalendarMonth(month);
704
- }} onOpenItem={(item) => {
705
- openTimesheetForDate(item.date);
706
- }} onDateSelect={(date, items) => {
707
- if (items.some((item) => item.kind === 'timesheet')) {
708
- openTimesheetForDate(date);
709
- }
710
- }}/>) : viewMode === 'cards' ? (<div className="grid gap-4 md:grid-cols-2 2xl:grid-cols-3">
711
- {timesheets.map((timesheet) => {
712
- var _a, _b;
713
- return (<div key={timesheet.id} className="rounded-lg border bg-card shadow-sm p-4 space-y-3">
714
- <div className="flex items-start justify-between gap-3">
715
- <div className="min-w-0">
716
- <div className="truncate font-semibold">
717
- {timesheet.collaboratorName}
718
- </div>
719
- <div className="truncate text-xs text-muted-foreground">
720
- {(0, format_1.formatDate)(timesheet.weekStartDate)}
721
- </div>
722
- </div>
723
- <status_badge_1.StatusBadge label={getTimesheetStatusLabel(timesheet.status)} className={(0, format_1.getStatusBadgeClass)(timesheet.status)}/>
724
- </div>
725
- <div className="grid grid-cols-2 gap-2 text-sm text-muted-foreground">
726
- <div>
727
- <span className="font-medium text-foreground">
728
- {commonT('labels.totalHours')}:
729
- </span>{' '}
730
- {(0, format_1.formatHours)(timesheet.totalHours)}
731
- </div>
732
- <div>
733
- <span className="font-medium text-foreground">
734
- {commonT('labels.entries')}:
735
- </span>{' '}
736
- {(_b = (_a = timesheet.entries) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0}
737
- </div>
738
- </div>
739
- {timesheet.approverName ? (<div className="text-sm text-muted-foreground">
740
- <span className="font-medium text-foreground">
741
- {commonT('labels.approver')}:
742
- </span>{' '}
743
- {timesheet.approverName}
744
- </div>) : null}
745
- {canManageRow(timesheet) ? (<div className="flex justify-end gap-2 border-t border-border/60 pt-3">
746
- <button_1.Button variant="outline" size="sm" className="cursor-pointer" onClick={() => openDetails(timesheet)}>
747
- <lucide_react_1.Eye className="size-4"/>
748
- {t('actions.viewDetails')}
749
- </button_1.Button>
750
- {canSubmitTimesheet(timesheet) ? (<button_1.Button size="sm" onClick={() => void submitTimesheet(timesheet.id)}>
751
- <lucide_react_1.Send className="size-4"/>
752
- {commonT('actions.submit')}
753
- </button_1.Button>) : null}
754
- </div>) : (<div className="flex justify-end border-t border-border/60 pt-3">
755
- <button_1.Button variant="outline" size="sm" className="cursor-pointer" onClick={() => openDetails(timesheet)}>
756
- <lucide_react_1.Eye className="size-4"/>
757
- {t('actions.viewDetails')}
758
- </button_1.Button>
759
- </div>)}
760
- </div>);
761
- })}
762
- </div>) : (<div className="overflow-x-auto rounded-md border">
763
- <table_1.Table>
764
- <table_1.TableHeader>
765
- <table_1.TableRow>
766
- <table_1.TableHead>{commonT('labels.collaborator')}</table_1.TableHead>
767
- <table_1.TableHead>{commonT('labels.workDate')}</table_1.TableHead>
768
- <table_1.TableHead>{commonT('labels.entries')}</table_1.TableHead>
769
- <table_1.TableHead>{commonT('labels.totalHours')}</table_1.TableHead>
770
- <table_1.TableHead>{commonT('labels.approver')}</table_1.TableHead>
771
- <table_1.TableHead>{commonT('labels.decisionNote')}</table_1.TableHead>
772
- <table_1.TableHead>{commonT('labels.status')}</table_1.TableHead>
773
- <table_1.TableHead>{commonT('labels.actions')}</table_1.TableHead>
774
- </table_1.TableRow>
775
- </table_1.TableHeader>
776
- <table_1.TableBody>
777
- {filteredRows.map((timesheet) => {
778
- var _a, _b, _c;
779
- return (<table_1.TableRow key={timesheet.id} className="hover:bg-muted/30">
780
- <table_1.TableCell>
781
- <div className="font-medium">
782
- {timesheet.collaboratorName}
783
- </div>
784
- <div className="text-xs text-muted-foreground">
785
- {timesheet.notes || commonT('labels.noNotes')}
786
- </div>
787
- </table_1.TableCell>
788
- <table_1.TableCell>{(0, format_1.formatDate)(timesheet.weekStartDate)}</table_1.TableCell>
789
- <table_1.TableCell>
790
- <div className="font-medium">
791
- {(_b = (_a = timesheet.entries) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0}{' '}
792
- {commonT('labels.lines')}
793
- </div>
794
- <div className="text-xs text-muted-foreground">
795
- {((_c = timesheet.entries) !== null && _c !== void 0 ? _c : [])
796
- .slice(0, 2)
797
- .map((entry) => [
798
- entry.projectName,
799
- entry.taskName || entry.activityLabel,
800
- ]
801
- .filter(Boolean)
802
- .join(' • ') || commonT('labels.unassigned'))
803
- .join(', ') || commonT('labels.unassigned')}
804
- </div>
805
- </table_1.TableCell>
806
- <table_1.TableCell>{(0, format_1.formatHours)(timesheet.totalHours)}</table_1.TableCell>
807
- <table_1.TableCell>
808
- {timesheet.approverName || commonT('labels.notAssigned')}
809
- </table_1.TableCell>
810
- <table_1.TableCell>
811
- <div className="text-sm text-muted-foreground">
812
- {timesheet.decisionNote || commonT('labels.noNotes')}
813
- </div>
814
- </table_1.TableCell>
815
- <table_1.TableCell>
816
- <status_badge_1.StatusBadge label={getTimesheetStatusLabel(timesheet.status)} className={(0, format_1.getStatusBadgeClass)(timesheet.status)}/>
817
- </table_1.TableCell>
818
- <table_1.TableCell>
819
- <div className="flex justify-end gap-2">
820
- {canManageRow(timesheet) ? (<>
821
- <button_1.Button variant="outline" size="sm" className="cursor-pointer" onClick={() => openDetails(timesheet)}>
822
- <lucide_react_1.Eye className="size-4"/>
823
- {t('actions.viewDetails')}
824
- </button_1.Button>
825
- {canSubmitTimesheet(timesheet) ? (<button_1.Button size="icon" onClick={() => void submitTimesheet(timesheet.id)}>
826
- <lucide_react_1.Send className="size-4"/>
827
- </button_1.Button>) : null}
828
- </>) : (<button_1.Button variant="outline" size="sm" className="cursor-pointer" onClick={() => openDetails(timesheet)}>
829
- <lucide_react_1.Eye className="size-4"/>
830
- {t('actions.viewDetails')}
831
- </button_1.Button>)}
832
- </div>
833
- </table_1.TableCell>
834
- </table_1.TableRow>);
835
- })}
836
- </table_1.TableBody>
837
- </table_1.Table>
838
- </div>)) : (<entity_list_1.EmptyState icon={<lucide_react_1.ClipboardList className="size-12"/>} title={commonT('states.emptyTitle')} description={t('emptyDescription')} actionLabel={access.isCollaborator
839
- ? commonT('actions.create')
840
- : commonT('actions.refresh')} onAction={access.isCollaborator ? openCreate : () => void refetch()}/>)}
841
-
842
- <entity_list_1.PaginationFooter currentPage={page} pageSize={pageSize} totalItems={(_d = timesheetsResponse === null || timesheetsResponse === void 0 ? void 0 : timesheetsResponse.total) !== null && _d !== void 0 ? _d : 0} pageSizeOptions={[12, 24, 48]} onPageChange={setPage} onPageSizeChange={(size) => {
843
- setPageSize(size);
844
- setPage(1);
845
- }}/>
846
-
847
- <sheet_1.Sheet open={isSheetOpen} onOpenChange={(open) => {
848
- if (form.formState.isSubmitting && !open) {
849
- return;
850
- }
851
- if (!open) {
852
- closeCreateSheet();
853
- return;
854
- }
855
- setIsSheetOpen(true);
856
- }}>
857
- <sheet_1.SheetContent className="flex h-full w-full flex-col gap-0 overflow-hidden p-0 sm:max-w-2xl">
858
- <sheet_1.SheetHeader className="border-b px-4 py-4 text-left">
859
- <div className="flex items-start gap-3">
860
- <div className="flex h-10 w-10 shrink-0 items-center justify-center rounded-xl bg-primary/10 text-primary">
861
- <lucide_react_1.Clock3 className="size-5"/>
862
- </div>
863
-
864
- <div className="space-y-1">
865
- <sheet_1.SheetTitle>
866
- {isEditingEntry
867
- ? t('sheet.editTitle')
868
- : t('sheet.createTitle')}
869
- </sheet_1.SheetTitle>
870
- <sheet_1.SheetDescription>{t('sheet.description')}</sheet_1.SheetDescription>
871
- </div>
872
- </div>
873
- </sheet_1.SheetHeader>
874
-
875
- <form_1.Form {...form}>
876
- <form onSubmit={form.handleSubmit(handleQuickEntrySubmit)} className="flex min-h-0 flex-1 flex-col">
877
- <div className="flex-1 space-y-5 overflow-y-auto px-4 py-4">
878
- <div className="grid gap-4 lg:grid-cols-2">
879
- <form_1.FormField control={form.control} name="projectId" render={({ field }) => (<form_1.FormItem>
880
- <form_1.FormLabel>{t('sheet.fields.project')}</form_1.FormLabel>
881
- <form_1.FormControl>
882
- <async_options_combobox_1.AsyncOptionsCombobox value={field.value} selectedOption={selectedProject} options={projectOptions} onSelect={(option) => {
883
- field.onChange(option === null || option === void 0 ? void 0 : option.id);
884
- form.setValue('taskId', undefined, {
885
- shouldDirty: true,
886
- shouldTouch: true,
887
- });
888
- setTaskQuery({ search: '', page: 1 });
889
- setTaskOptions([]);
890
- }} searchValue={projectQuery.search} onSearchValueChange={(value) => setProjectQuery({ search: value, page: 1 })} placeholder={t('sheet.placeholders.project')} searchPlaceholder={t('sheet.placeholders.projectSearch')} emptyLabel={t('entries.projectHint')} loadMoreLabel={commonT('actions.loadMore')} clearLabel={commonT('actions.clearSelection')} isLoading={isProjectOptionsLoading} hasMore={Boolean(projectOptionsResponse === null || projectOptionsResponse === void 0 ? void 0 : projectOptionsResponse.next)} onLoadMore={() => setProjectQuery((current) => (Object.assign(Object.assign({}, current), { page: current.page + 1 })))}/>
891
- </form_1.FormControl>
892
- <form_1.FormMessage />
893
- </form_1.FormItem>)}/>
894
-
895
- <form_1.FormField control={form.control} name="taskId" render={({ field }) => (<form_1.FormItem>
896
- <form_1.FormLabel>{t('sheet.fields.task')}</form_1.FormLabel>
897
- <form_1.FormControl>
898
- <async_options_combobox_1.AsyncOptionsCombobox value={field.value} selectedOption={selectedTask} options={filteredTaskOptions} onSelect={(option) => field.onChange(option === null || option === void 0 ? void 0 : option.id)} searchValue={taskQuery.search} onSearchValueChange={(value) => setTaskQuery({ search: value, page: 1 })} placeholder={t('sheet.placeholders.task')} searchPlaceholder={t('sheet.placeholders.taskSearch')} emptyLabel={selectedProjectId
899
- ? t('sheet.helper.task')
900
- : t('sheet.helper.selectProjectFirst')} loadMoreLabel={commonT('actions.loadMore')} clearLabel={commonT('actions.clearSelection')} createLabel={t('sheet.task.createAction')} onCreateClick={openTaskCreateSheet} isLoading={isTaskOptionsLoading} hasMore={Boolean(taskOptionsResponse === null || taskOptionsResponse === void 0 ? void 0 : taskOptionsResponse.next)} onLoadMore={() => setTaskQuery((current) => (Object.assign(Object.assign({}, current), { page: current.page + 1 })))} disabled={!selectedProjectId}/>
901
- </form_1.FormControl>
902
-
903
- <form_1.FormMessage />
904
- </form_1.FormItem>)}/>
905
- </div>
906
-
907
- <div className="grid gap-4 md:grid-cols-[1fr_1fr_220px]">
908
- <form_1.FormField control={form.control} name="workDate" render={({ field }) => (<form_1.FormItem>
909
- <form_1.FormLabel>{commonT('labels.workDate')}</form_1.FormLabel>
910
- <form_1.FormControl>
911
- <input_1.Input type="date" {...field}/>
912
- </form_1.FormControl>
913
- <form_1.FormMessage />
914
- </form_1.FormItem>)}/>
915
-
916
- <form_1.FormField control={form.control} name="duration" render={({ field }) => {
917
- var _a;
918
- return (<form_1.FormItem>
919
- <form_1.FormLabel>{t('sheet.fields.duration')}</form_1.FormLabel>
920
- <form_1.FormControl>
921
- <input_1.Input type="number" min="0" step={unitValue === 'minutes' ? '5' : '0.25'} placeholder={t('sheet.placeholders.duration')} value={(_a = field.value) !== null && _a !== void 0 ? _a : ''} onChange={(event) => {
922
- const nextValue = event.target.value;
923
- field.onChange(nextValue === '' ? undefined : Number(nextValue));
924
- }}/>
925
- </form_1.FormControl>
926
- <form_1.FormMessage />
927
- </form_1.FormItem>);
928
- }}/>
929
-
930
- <form_1.FormField control={form.control} name="unit" render={({ field }) => (<form_1.FormItem>
931
- <form_1.FormLabel>{t('sheet.fields.unit')}</form_1.FormLabel>
932
- <form_1.FormControl>
933
- <toggle_group_1.ToggleGroup type="single" value={field.value} className="w-full" onValueChange={(value) => {
934
- if (value === 'hours' || value === 'minutes') {
935
- field.onChange(value);
936
- }
937
- }}>
938
- <toggle_group_1.ToggleGroupItem value="hours" className="flex-1">
939
- {t('sheet.fields.hours')}
940
- </toggle_group_1.ToggleGroupItem>
941
- <toggle_group_1.ToggleGroupItem value="minutes" className="flex-1">
942
- {t('sheet.fields.minutes')}
943
- </toggle_group_1.ToggleGroupItem>
944
- </toggle_group_1.ToggleGroup>
945
- </form_1.FormControl>
946
- <form_1.FormMessage />
947
- </form_1.FormItem>)}/>
948
- </div>
949
-
950
- <form_1.FormField control={form.control} name="description" render={({ field }) => (<form_1.FormItem>
951
- <form_1.FormLabel>{commonT('labels.description')}</form_1.FormLabel>
952
- <form_1.FormControl>
953
- <textarea_1.Textarea {...field} rows={4} placeholder={t('sheet.placeholders.description')}/>
954
- </form_1.FormControl>
955
- <form_1.FormMessage />
956
- </form_1.FormItem>)}/>
957
-
958
- <div className="flex items-center justify-between rounded-lg border bg-background p-3">
959
- <div className="space-y-1 pr-3">
960
- <p className="text-sm font-medium text-foreground">
961
- {t('sheet.helper.keepContext')}
962
- </p>
963
- <p className="text-xs text-muted-foreground">
964
- {t('sheet.helper.keepContextDescription')}
965
- </p>
966
- </div>
967
-
968
- <switch_1.Switch checked={keepContextOnSave} onCheckedChange={setKeepContextOnSave} aria-label={t('sheet.helper.keepContext')}/>
969
- </div>
970
- </div>
971
-
972
- <form_actions_1.FormActions sheet onCancel={closeCreateSheet} cancelLabel={commonT('actions.cancel')} submitType="submit" submitLabel={isEditingEntry
973
- ? commonT('actions.save')
974
- : commonT('actions.submit')} submitDisabled={form.formState.isSubmitting}/>
975
- </form>
976
- </form_1.Form>
977
- </sheet_1.SheetContent>
978
- </sheet_1.Sheet>
979
-
980
- <timesheet_task_create_sheet_1.TimesheetTaskCreateSheet open={isTaskCreateSheetOpen} onOpenChange={setIsTaskCreateSheetOpen} project={selectedProject} onCreated={handleTaskCreated}/>
981
-
982
- <sheet_1.Sheet open={isDetailsOpen} onOpenChange={setIsDetailsOpen}>
983
- <sheet_1.SheetContent className="w-full overflow-y-auto sm:max-w-2xl">
984
- <sheet_1.SheetHeader>
985
- <sheet_1.SheetTitle>{t('details.title')}</sheet_1.SheetTitle>
986
- <sheet_1.SheetDescription>{t('details.description')}</sheet_1.SheetDescription>
987
- </sheet_1.SheetHeader>
988
-
989
- {selectedTimesheet ? (<div className="mt-6 space-y-5 px-4 pb-8">
990
- <div className="rounded-lg border bg-muted/20 p-4">
991
- <div className="flex flex-wrap items-start justify-between gap-3">
992
- <div>
993
- <div className="text-lg font-semibold">
994
- {selectedTimesheet.collaboratorName}
995
- </div>
996
- <div className="mt-1 text-sm text-muted-foreground">
997
- {(0, format_1.formatDate)(selectedTimesheet.weekStartDate)}
998
- </div>
999
- </div>
1000
- <status_badge_1.StatusBadge label={t.has(`statuses.${selectedTimesheet.status}`)
1001
- ? t(`statuses.${selectedTimesheet.status}`)
1002
- : (0, format_1.formatEnumLabel)(selectedTimesheet.status)} className={(0, format_1.getStatusBadgeClass)(selectedTimesheet.status)}/>
1003
- </div>
1004
- </div>
1005
-
1006
- <div className="grid gap-4 sm:grid-cols-2">
1007
- <div>
1008
- <div className="text-xs font-medium uppercase text-muted-foreground">
1009
- {commonT('labels.totalHours')}
1010
- </div>
1011
- <div className="mt-1 text-sm">
1012
- {(0, format_1.formatHours)(selectedTimesheet.totalHours)}
1013
- </div>
1014
- </div>
1015
- <div>
1016
- <div className="text-xs font-medium uppercase text-muted-foreground">
1017
- {commonT('labels.entries')}
1018
- </div>
1019
- <div className="mt-1 text-sm">
1020
- {(_f = (_e = selectedTimesheet.entries) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0}
1021
- </div>
1022
- </div>
1023
- <div>
1024
- <div className="text-xs font-medium uppercase text-muted-foreground">
1025
- {commonT('labels.approver')}
1026
- </div>
1027
- <div className="mt-1 text-sm">
1028
- {selectedTimesheet.approverName ||
1029
- commonT('labels.notAssigned')}
1030
- </div>
1031
- </div>
1032
- <div>
1033
- <div className="text-xs font-medium uppercase text-muted-foreground">
1034
- {t('details.period')}
1035
- </div>
1036
- <div className="mt-1 text-sm">
1037
- {formatDateLabel(selectedTimesheet.weekStartDate)}
1038
- </div>
1039
- </div>
1040
- </div>
1041
-
1042
- <div>
1043
- <div className="text-xs font-medium uppercase text-muted-foreground">
1044
- {commonT('labels.notes')}
1045
- </div>
1046
- <div className="mt-1 rounded-lg border p-3 text-sm">
1047
- {selectedTimesheet.notes || commonT('labels.noNotes')}
1048
- </div>
1049
- </div>
1050
-
1051
- <div>
1052
- <div className="text-xs font-medium uppercase text-muted-foreground">
1053
- {commonT('labels.decisionNote')}
1054
- </div>
1055
- <div className="mt-1 rounded-lg border p-3 text-sm">
1056
- {selectedTimesheet.decisionNote || commonT('labels.noNotes')}
1057
- </div>
1058
- </div>
1059
-
1060
- <div>
1061
- <div className="text-xs font-medium uppercase text-muted-foreground">
1062
- {t('details.entriesTitle')}
1063
- </div>
1064
- <div className="mt-2 space-y-3">
1065
- {((_g = selectedTimesheet.entries) !== null && _g !== void 0 ? _g : []).length ? (((_h = selectedTimesheet.entries) !== null && _h !== void 0 ? _h : []).map((entry) => (<div key={entry.id} className="rounded-lg border p-3">
1066
- <div className="flex flex-wrap items-start justify-between gap-3">
1067
- <div>
1068
- <div className="font-medium">
1069
- {entry.taskName ||
1070
- entry.activityLabel ||
1071
- commonT('labels.unassigned')}
1072
- </div>
1073
- <div className="text-xs text-muted-foreground">
1074
- {[entry.projectName, entry.roleLabel]
1075
- .filter(Boolean)
1076
- .join(' • ') || commonT('labels.unassigned')}
1077
- </div>
1078
- </div>
1079
- <div className="text-sm text-muted-foreground">
1080
- {formatEntryDuration(entry.durationMinutes, entry.hours)}
1081
- </div>
1082
- </div>
1083
- <div className="mt-2 text-xs text-muted-foreground">
1084
- {formatDateLabel(entry.workDate)}
1085
- </div>
1086
- <div className="mt-2 text-sm">
1087
- {entry.description || commonT('labels.noNotes')}
1088
- </div>
1089
- {canManageRow(selectedTimesheet) ? (<div className="mt-3 flex justify-end gap-2 border-t border-border/60 pt-3">
1090
- <button_1.Button type="button" variant="outline" size="sm" className="cursor-pointer" onClick={() => openEditEntry(entry)}>
1091
- <lucide_react_1.Pencil className="size-4"/>
1092
- {commonT('actions.edit')}
1093
- </button_1.Button>
1094
- <button_1.Button type="button" variant="outline" size="sm" className="cursor-pointer text-destructive hover:bg-destructive/10" onClick={() => setEntryToDelete(entry)}>
1095
- <lucide_react_1.Trash2 className="size-4"/>
1096
- {commonT('actions.delete')}
1097
- </button_1.Button>
1098
- </div>) : null}
1099
- </div>))) : (<div className="rounded-lg border p-3 text-sm text-muted-foreground">
1100
- {t('details.noEntries')}
1101
- </div>)}
1102
- </div>
1103
- </div>
1104
- </div>) : null}
1105
- </sheet_1.SheetContent>
1106
- </sheet_1.Sheet>
1107
-
1108
- <alert_dialog_1.AlertDialog open={Boolean(entryToDelete)} onOpenChange={(open) => {
1109
- if (!open && !isDeletingEntry) {
1110
- setEntryToDelete(null);
1111
- }
1112
- }}>
1113
- <alert_dialog_1.AlertDialogContent>
1114
- <alert_dialog_1.AlertDialogHeader>
1115
- <alert_dialog_1.AlertDialogTitle>
1116
- {t('messages.confirmDeleteTitle')}
1117
- </alert_dialog_1.AlertDialogTitle>
1118
- <alert_dialog_1.AlertDialogDescription>
1119
- {t('messages.confirmDeleteDescription', {
1120
- name: (entryToDelete === null || entryToDelete === void 0 ? void 0 : entryToDelete.taskName) ||
1121
- (entryToDelete === null || entryToDelete === void 0 ? void 0 : entryToDelete.activityLabel) ||
1122
- (entryToDelete === null || entryToDelete === void 0 ? void 0 : entryToDelete.projectName) ||
1123
- `#${(_j = entryToDelete === null || entryToDelete === void 0 ? void 0 : entryToDelete.id) !== null && _j !== void 0 ? _j : ''}`,
1124
- })}
1125
- </alert_dialog_1.AlertDialogDescription>
1126
- </alert_dialog_1.AlertDialogHeader>
1127
-
1128
- <alert_dialog_1.AlertDialogFooter>
1129
- <alert_dialog_1.AlertDialogCancel disabled={isDeletingEntry}>
1130
- {commonT('actions.cancel')}
1131
- </alert_dialog_1.AlertDialogCancel>
1132
- <alert_dialog_1.AlertDialogAction onClick={() => void handleDeleteEntry()} disabled={isDeletingEntry}>
1133
- {isDeletingEntry ? (<lucide_react_1.Loader2 className="size-4 animate-spin"/>) : null}
1134
- {commonT('actions.delete')}
1135
- </alert_dialog_1.AlertDialogAction>
1136
- </alert_dialog_1.AlertDialogFooter>
1137
- </alert_dialog_1.AlertDialogContent>
1138
- </alert_dialog_1.AlertDialog>
1139
- </entity_list_1.Page>);
1140
- }
1141
- //# sourceMappingURL=page.js.map