@hed-hog/operations 0.0.322 → 0.0.325

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (689) hide show
  1. package/dist/controllers/operations-collaborators.controller.d.ts +9 -0
  2. package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -1
  3. package/dist/controllers/operations-collaborators.controller.js +25 -0
  4. package/dist/controllers/operations-collaborators.controller.js.map +1 -1
  5. package/dist/controllers/operations-project-costs.controller.d.ts +422 -0
  6. package/dist/controllers/operations-project-costs.controller.d.ts.map +1 -0
  7. package/dist/controllers/operations-project-costs.controller.js +250 -0
  8. package/dist/controllers/operations-project-costs.controller.js.map +1 -0
  9. package/dist/controllers/operations-reports.controller.d.ts +9 -0
  10. package/dist/controllers/operations-reports.controller.d.ts.map +1 -1
  11. package/dist/controllers/operations-tasks.controller.d.ts +42 -0
  12. package/dist/controllers/operations-tasks.controller.d.ts.map +1 -1
  13. package/dist/controllers/operations-tasks.controller.js +48 -0
  14. package/dist/controllers/operations-tasks.controller.js.map +1 -1
  15. package/dist/controllers/operations-timesheets.controller.d.ts +1 -0
  16. package/dist/controllers/operations-timesheets.controller.d.ts.map +1 -1
  17. package/dist/dto/create-collaborator-project-assignment.dto.d.ts +5 -0
  18. package/dist/dto/create-collaborator-project-assignment.dto.d.ts.map +1 -0
  19. package/dist/dto/create-collaborator-project-assignment.dto.js +30 -0
  20. package/dist/dto/create-collaborator-project-assignment.dto.js.map +1 -0
  21. package/dist/dto/create-project-cost-category.dto.d.ts +10 -0
  22. package/dist/dto/create-project-cost-category.dto.d.ts.map +1 -0
  23. package/dist/dto/create-project-cost-category.dto.js +59 -0
  24. package/dist/dto/create-project-cost-category.dto.js.map +1 -0
  25. package/dist/dto/create-project-cost-type.dto.d.ts +14 -0
  26. package/dist/dto/create-project-cost-type.dto.d.ts.map +1 -0
  27. package/dist/dto/create-project-cost-type.dto.js +87 -0
  28. package/dist/dto/create-project-cost-type.dto.js.map +1 -0
  29. package/dist/dto/create-project-cost.dto.d.ts +22 -0
  30. package/dist/dto/create-project-cost.dto.d.ts.map +1 -0
  31. package/dist/dto/create-project-cost.dto.js +135 -0
  32. package/dist/dto/create-project-cost.dto.js.map +1 -0
  33. package/dist/dto/get-project-cost-report.dto.d.ts +10 -0
  34. package/dist/dto/get-project-cost-report.dto.d.ts.map +1 -0
  35. package/dist/dto/get-project-cost-report.dto.js +65 -0
  36. package/dist/dto/get-project-cost-report.dto.js.map +1 -0
  37. package/dist/dto/list-project-cost-categories.dto.d.ts +6 -0
  38. package/dist/dto/list-project-cost-categories.dto.d.ts.map +1 -0
  39. package/dist/dto/list-project-cost-categories.dto.js +34 -0
  40. package/dist/dto/list-project-cost-categories.dto.js.map +1 -0
  41. package/dist/dto/list-project-cost-types.dto.d.ts +8 -0
  42. package/dist/dto/list-project-cost-types.dto.d.ts.map +1 -0
  43. package/dist/dto/list-project-cost-types.dto.js +45 -0
  44. package/dist/dto/list-project-cost-types.dto.js.map +1 -0
  45. package/dist/dto/list-project-costs.dto.d.ts +14 -0
  46. package/dist/dto/list-project-costs.dto.d.ts.map +1 -0
  47. package/dist/dto/list-project-costs.dto.js +81 -0
  48. package/dist/dto/list-project-costs.dto.js.map +1 -0
  49. package/dist/dto/list-tasks.dto.d.ts +1 -0
  50. package/dist/dto/list-tasks.dto.d.ts.map +1 -1
  51. package/dist/dto/list-tasks.dto.js +6 -0
  52. package/dist/dto/list-tasks.dto.js.map +1 -1
  53. package/dist/dto/list-timesheets.dto.d.ts +1 -0
  54. package/dist/dto/list-timesheets.dto.d.ts.map +1 -1
  55. package/dist/dto/list-timesheets.dto.js +7 -0
  56. package/dist/dto/list-timesheets.dto.js.map +1 -1
  57. package/dist/dto/update-collaborator-project-assignment.dto.d.ts +11 -0
  58. package/dist/dto/update-collaborator-project-assignment.dto.d.ts.map +1 -0
  59. package/dist/dto/update-collaborator-project-assignment.dto.js +65 -0
  60. package/dist/dto/update-collaborator-project-assignment.dto.js.map +1 -0
  61. package/dist/dto/update-project-cost-category.dto.d.ts +6 -0
  62. package/dist/dto/update-project-cost-category.dto.d.ts.map +1 -0
  63. package/dist/dto/update-project-cost-category.dto.js +9 -0
  64. package/dist/dto/update-project-cost-category.dto.js.map +1 -0
  65. package/dist/dto/update-project-cost-type.dto.d.ts +6 -0
  66. package/dist/dto/update-project-cost-type.dto.d.ts.map +1 -0
  67. package/dist/dto/update-project-cost-type.dto.js +9 -0
  68. package/dist/dto/update-project-cost-type.dto.js.map +1 -0
  69. package/dist/dto/update-project-cost.dto.d.ts +6 -0
  70. package/dist/dto/update-project-cost.dto.d.ts.map +1 -0
  71. package/dist/dto/update-project-cost.dto.js +9 -0
  72. package/dist/dto/update-project-cost.dto.js.map +1 -0
  73. package/dist/operations.module.d.ts.map +1 -1
  74. package/dist/operations.module.js +2 -0
  75. package/dist/operations.module.js.map +1 -1
  76. package/dist/operations.service.d.ts +562 -0
  77. package/dist/operations.service.d.ts.map +1 -1
  78. package/dist/operations.service.js +1657 -47
  79. package/dist/operations.service.js.map +1 -1
  80. package/hedhog/data/menu.yaml +52 -0
  81. package/hedhog/data/operations_project_cost_category.yaml +80 -0
  82. package/hedhog/data/operations_project_cost_type.yaml +503 -0
  83. package/hedhog/data/route.yaml +274 -0
  84. package/hedhog/frontend/app/_components/collaborator-costs-section.tsx.ejs +2 -18
  85. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +185 -276
  86. package/hedhog/frontend/app/_components/collaborator-tasks-tab.tsx.ejs +358 -0
  87. package/hedhog/frontend/app/_components/collaborator-timesheets-tab.tsx.ejs +242 -0
  88. package/hedhog/frontend/app/_components/my-project-summary-screen.tsx.ejs +167 -59
  89. package/hedhog/frontend/app/_components/person-select-with-create.tsx.ejs +1 -853
  90. package/hedhog/frontend/app/_components/project-assignments-tab.tsx.ejs +450 -0
  91. package/hedhog/frontend/app/_components/project-cost-report-screen.tsx.ejs +602 -0
  92. package/hedhog/frontend/app/_components/project-costs-section.tsx.ejs +1401 -0
  93. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +2003 -1846
  94. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +56 -11
  95. package/hedhog/frontend/app/_components/task-detail-sheet.tsx.ejs +297 -2
  96. package/hedhog/frontend/app/_components/task-form-sheet.tsx.ejs +530 -0
  97. package/hedhog/frontend/app/_lib/api.ts.ejs +247 -0
  98. package/hedhog/frontend/app/_lib/types.ts.ejs +196 -7
  99. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +9 -3
  100. package/hedhog/frontend/app/collaborators/page.tsx.ejs +18 -7
  101. package/hedhog/frontend/app/my-tasks/page.tsx.ejs +219 -122
  102. package/hedhog/frontend/app/project-cost-categories/page.tsx.ejs +674 -0
  103. package/hedhog/frontend/app/project-cost-types/page.tsx.ejs +845 -0
  104. package/hedhog/frontend/app/projects/[id]/costs-report/page.tsx.ejs +10 -0
  105. package/hedhog/frontend/app/reports/collaborators/page.tsx.ejs +20 -349
  106. package/hedhog/frontend/app/reports/projects/page.tsx.ejs +192 -484
  107. package/hedhog/frontend/messages/en.json +279 -10
  108. package/hedhog/frontend/messages/en.json.ejs +2043 -0
  109. package/hedhog/frontend/messages/operations/en.json +2068 -0
  110. package/hedhog/frontend/messages/operations/operations/en.json +2102 -0
  111. package/hedhog/frontend/messages/operations/operations/pt.json +2111 -0
  112. package/hedhog/frontend/messages/operations/pt.json +2072 -0
  113. package/hedhog/frontend/messages/pt.json +284 -13
  114. package/hedhog/frontend/messages/pt.json.ejs +2056 -0
  115. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts +29 -0
  116. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.d.ts.map +1 -0
  117. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js +95 -0
  118. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.js.map +1 -0
  119. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/async-options-combobox.tsx +233 -0
  120. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts +10 -0
  121. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.d.ts.map +1 -0
  122. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js +577 -0
  123. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.js.map +1 -0
  124. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-costs-section.tsx +868 -0
  125. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts +4 -0
  126. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.d.ts.map +1 -0
  127. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js +337 -0
  128. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.js.map +1 -0
  129. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-details-screen.tsx +476 -0
  130. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts +9 -0
  131. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.d.ts.map +1 -0
  132. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js +1348 -0
  133. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.js.map +1 -0
  134. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-form-screen.tsx +2233 -0
  135. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts +12 -0
  136. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.d.ts.map +1 -0
  137. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js +162 -0
  138. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.js.map +1 -0
  139. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/collaborator-select-with-create.tsx +261 -0
  140. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts +18 -0
  141. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.d.ts.map +1 -0
  142. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js +145 -0
  143. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.js.map +1 -0
  144. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-content-editor.tsx +258 -0
  145. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts +4 -0
  146. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.d.ts.map +1 -0
  147. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js +223 -0
  148. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.js.map +1 -0
  149. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-details-screen.tsx +342 -0
  150. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts +58 -0
  151. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.d.ts.map +1 -0
  152. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js +438 -0
  153. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.js.map +1 -0
  154. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/contract-form-screen.tsx +698 -0
  155. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts +20 -0
  156. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.d.ts.map +1 -0
  157. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js +233 -0
  158. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.js.map +1 -0
  159. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/department-select-with-create.tsx +392 -0
  160. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts +4 -0
  161. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.d.ts.map +1 -0
  162. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js +814 -0
  163. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.js.map +1 -0
  164. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/my-project-summary-screen.tsx +1288 -0
  165. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts +21 -0
  166. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.d.ts.map +1 -0
  167. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js +174 -0
  168. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.js.map +1 -0
  169. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-calendar-view.tsx +306 -0
  170. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts +10 -0
  171. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.d.ts.map +1 -0
  172. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js +12 -0
  173. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.js.map +1 -0
  174. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/operations-header.tsx +29 -0
  175. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts +15 -0
  176. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.d.ts.map +1 -0
  177. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js +501 -0
  178. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.js.map +1 -0
  179. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/person-select-with-create.tsx +853 -0
  180. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts +6 -0
  181. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.d.ts.map +1 -0
  182. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js +847 -0
  183. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.js.map +1 -0
  184. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-costs-section.tsx +1340 -0
  185. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts +4 -0
  186. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.d.ts.map +1 -0
  187. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js +2930 -0
  188. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.js.map +1 -0
  189. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-details-screen.tsx +4378 -0
  190. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts +9 -0
  191. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.d.ts.map +1 -0
  192. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js +1013 -0
  193. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.js.map +1 -0
  194. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/project-form-screen.tsx +1745 -0
  195. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts +13 -0
  196. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.d.ts.map +1 -0
  197. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js +38 -0
  198. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.js.map +1 -0
  199. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/section-card.tsx +74 -0
  200. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts +7 -0
  201. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.d.ts.map +1 -0
  202. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js +11 -0
  203. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.js.map +1 -0
  204. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/status-badge.tsx +15 -0
  205. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts +18 -0
  206. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.d.ts.map +1 -0
  207. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js +406 -0
  208. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.js.map +1 -0
  209. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/system-user-select-with-create.tsx +660 -0
  210. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts +26 -0
  211. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.d.ts.map +1 -0
  212. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js +332 -0
  213. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.js.map +1 -0
  214. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-detail-sheet.tsx +518 -0
  215. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts +6 -0
  216. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.d.ts.map +1 -0
  217. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js +255 -0
  218. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.js.map +1 -0
  219. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/task-file-attachments.tsx +388 -0
  220. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts +10 -0
  221. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.d.ts.map +1 -0
  222. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js +131 -0
  223. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.js.map +1 -0
  224. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_components/timesheet-task-create-sheet.tsx +214 -0
  225. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts +108 -0
  226. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.d.ts.map +1 -0
  227. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js +162 -0
  228. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.js.map +1 -0
  229. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/api.ts +428 -0
  230. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts +8 -0
  231. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.d.ts.map +1 -0
  232. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js +36 -0
  233. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.js.map +1 -0
  234. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/hooks/use-operations-access.ts +44 -0
  235. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts +836 -0
  236. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.d.ts.map +1 -0
  237. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js +3 -0
  238. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.js.map +1 -0
  239. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/types.ts +860 -0
  240. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts +16 -0
  241. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.d.ts.map +1 -0
  242. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js +182 -0
  243. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.js.map +1 -0
  244. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/format.ts +250 -0
  245. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts +4 -0
  246. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.d.ts.map +1 -0
  247. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js +51 -0
  248. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.js.map +1 -0
  249. package/hedhog/frontend/src/app/(app)/(libraries)/operations/_lib/utils/forms.ts +61 -0
  250. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts +2 -0
  251. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.d.ts.map +1 -0
  252. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js +954 -0
  253. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.js.map +1 -0
  254. package/hedhog/frontend/src/app/(app)/(libraries)/operations/approvals/page.tsx +1277 -0
  255. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts +2 -0
  256. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.d.ts.map +1 -0
  257. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js +488 -0
  258. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.js.map +1 -0
  259. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborator-types/page.tsx +805 -0
  260. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts +6 -0
  261. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.d.ts.map +1 -0
  262. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js +9 -0
  263. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.js.map +1 -0
  264. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/edit/page.tsx +11 -0
  265. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts +6 -0
  266. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.d.ts.map +1 -0
  267. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js +9 -0
  268. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.js.map +1 -0
  269. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/[id]/page.tsx +11 -0
  270. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts +2 -0
  271. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.d.ts.map +1 -0
  272. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js +8 -0
  273. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.js.map +1 -0
  274. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/new/page.tsx +5 -0
  275. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts +2 -0
  276. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.d.ts.map +1 -0
  277. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js +612 -0
  278. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.js.map +1 -0
  279. package/hedhog/frontend/src/app/(app)/(libraries)/operations/collaborators/page.tsx +939 -0
  280. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts +6 -0
  281. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.d.ts.map +1 -0
  282. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js +9 -0
  283. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.js.map +1 -0
  284. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/edit/page.tsx +11 -0
  285. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts +6 -0
  286. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.d.ts.map +1 -0
  287. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js +9 -0
  288. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.js.map +1 -0
  289. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/[id]/page.tsx +11 -0
  290. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts +6 -0
  291. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.d.ts.map +1 -0
  292. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js +9 -0
  293. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.js.map +1 -0
  294. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/new/page.tsx +17 -0
  295. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts +2 -0
  296. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.d.ts.map +1 -0
  297. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js +348 -0
  298. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.js.map +1 -0
  299. package/hedhog/frontend/src/app/(app)/(libraries)/operations/contracts/page.tsx +536 -0
  300. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts +2 -0
  301. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.d.ts.map +1 -0
  302. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js +401 -0
  303. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.js.map +1 -0
  304. package/hedhog/frontend/src/app/(app)/(libraries)/operations/departments/page.tsx +607 -0
  305. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts +5 -0
  306. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.d.ts.map +1 -0
  307. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js +7 -0
  308. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.js.map +1 -0
  309. package/hedhog/frontend/src/app/(app)/(libraries)/operations/layout.tsx +9 -0
  310. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts +6 -0
  311. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.d.ts.map +1 -0
  312. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js +9 -0
  313. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.js.map +1 -0
  314. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/[id]/page.tsx +11 -0
  315. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts +2 -0
  316. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.d.ts.map +1 -0
  317. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js +321 -0
  318. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.js.map +1 -0
  319. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-projects/page.tsx +440 -0
  320. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts +2 -0
  321. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.d.ts.map +1 -0
  322. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js +939 -0
  323. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.js.map +1 -0
  324. package/hedhog/frontend/src/app/(app)/(libraries)/operations/my-tasks/page.tsx +1499 -0
  325. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts +29 -0
  326. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.d.ts.map +1 -0
  327. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js +95 -0
  328. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.js.map +1 -0
  329. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/async-options-combobox.tsx +233 -0
  330. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts +10 -0
  331. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.d.ts.map +1 -0
  332. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js +577 -0
  333. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.js.map +1 -0
  334. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-costs-section.tsx +868 -0
  335. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts +4 -0
  336. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.d.ts.map +1 -0
  337. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js +337 -0
  338. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.js.map +1 -0
  339. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-details-screen.tsx +476 -0
  340. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts +9 -0
  341. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.d.ts.map +1 -0
  342. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js +1348 -0
  343. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.js.map +1 -0
  344. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-form-screen.tsx +2233 -0
  345. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts +12 -0
  346. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.d.ts.map +1 -0
  347. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js +162 -0
  348. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.js.map +1 -0
  349. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/collaborator-select-with-create.tsx +261 -0
  350. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts +18 -0
  351. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.d.ts.map +1 -0
  352. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js +145 -0
  353. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.js.map +1 -0
  354. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-content-editor.tsx +258 -0
  355. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts +4 -0
  356. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.d.ts.map +1 -0
  357. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js +223 -0
  358. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.js.map +1 -0
  359. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-details-screen.tsx +342 -0
  360. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts +58 -0
  361. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.d.ts.map +1 -0
  362. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js +438 -0
  363. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.js.map +1 -0
  364. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/contract-form-screen.tsx +698 -0
  365. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts +20 -0
  366. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.d.ts.map +1 -0
  367. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js +233 -0
  368. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.js.map +1 -0
  369. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/department-select-with-create.tsx +392 -0
  370. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts +4 -0
  371. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.d.ts.map +1 -0
  372. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js +814 -0
  373. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.js.map +1 -0
  374. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/my-project-summary-screen.tsx +1288 -0
  375. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts +21 -0
  376. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.d.ts.map +1 -0
  377. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js +174 -0
  378. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.js.map +1 -0
  379. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-calendar-view.tsx +306 -0
  380. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts +10 -0
  381. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.d.ts.map +1 -0
  382. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js +12 -0
  383. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.js.map +1 -0
  384. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/operations-header.tsx +29 -0
  385. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts +15 -0
  386. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.d.ts.map +1 -0
  387. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js +501 -0
  388. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.js.map +1 -0
  389. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/person-select-with-create.tsx +853 -0
  390. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts +6 -0
  391. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.d.ts.map +1 -0
  392. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js +459 -0
  393. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.js.map +1 -0
  394. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-cost-report-screen.tsx +598 -0
  395. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts +6 -0
  396. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.d.ts.map +1 -0
  397. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js +876 -0
  398. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.js.map +1 -0
  399. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-costs-section.tsx +1368 -0
  400. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts +4 -0
  401. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.d.ts.map +1 -0
  402. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js +2930 -0
  403. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.js.map +1 -0
  404. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-details-screen.tsx +4378 -0
  405. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts +9 -0
  406. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.d.ts.map +1 -0
  407. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js +1013 -0
  408. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.js.map +1 -0
  409. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/project-form-screen.tsx +1745 -0
  410. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts +13 -0
  411. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.d.ts.map +1 -0
  412. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js +38 -0
  413. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.js.map +1 -0
  414. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/section-card.tsx +74 -0
  415. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts +7 -0
  416. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.d.ts.map +1 -0
  417. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js +11 -0
  418. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.js.map +1 -0
  419. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/status-badge.tsx +15 -0
  420. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts +18 -0
  421. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.d.ts.map +1 -0
  422. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js +406 -0
  423. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.js.map +1 -0
  424. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/system-user-select-with-create.tsx +660 -0
  425. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts +26 -0
  426. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.d.ts.map +1 -0
  427. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js +332 -0
  428. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.js.map +1 -0
  429. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-detail-sheet.tsx +518 -0
  430. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts +6 -0
  431. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.d.ts.map +1 -0
  432. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js +255 -0
  433. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.js.map +1 -0
  434. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/task-file-attachments.tsx +388 -0
  435. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts +10 -0
  436. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.d.ts.map +1 -0
  437. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js +131 -0
  438. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.js.map +1 -0
  439. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_components/timesheet-task-create-sheet.tsx +214 -0
  440. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts +108 -0
  441. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.d.ts.map +1 -0
  442. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js +162 -0
  443. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.js.map +1 -0
  444. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/api.ts +428 -0
  445. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts +8 -0
  446. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.d.ts.map +1 -0
  447. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js +36 -0
  448. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.js.map +1 -0
  449. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/hooks/use-operations-access.ts +44 -0
  450. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts +836 -0
  451. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.d.ts.map +1 -0
  452. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js +3 -0
  453. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.js.map +1 -0
  454. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/types.ts +860 -0
  455. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts +16 -0
  456. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.d.ts.map +1 -0
  457. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js +182 -0
  458. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.js.map +1 -0
  459. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/format.ts +250 -0
  460. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts +4 -0
  461. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.d.ts.map +1 -0
  462. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js +51 -0
  463. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.js.map +1 -0
  464. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/_lib/utils/forms.ts +61 -0
  465. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts +2 -0
  466. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.d.ts.map +1 -0
  467. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js +954 -0
  468. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.js.map +1 -0
  469. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/approvals/page.tsx +1277 -0
  470. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts +2 -0
  471. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.d.ts.map +1 -0
  472. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js +488 -0
  473. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.js.map +1 -0
  474. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborator-types/page.tsx +805 -0
  475. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts +6 -0
  476. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.d.ts.map +1 -0
  477. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js +9 -0
  478. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.js.map +1 -0
  479. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/edit/page.tsx +11 -0
  480. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts +6 -0
  481. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.d.ts.map +1 -0
  482. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js +9 -0
  483. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.js.map +1 -0
  484. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/[id]/page.tsx +11 -0
  485. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts +2 -0
  486. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.d.ts.map +1 -0
  487. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js +8 -0
  488. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.js.map +1 -0
  489. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/new/page.tsx +5 -0
  490. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts +2 -0
  491. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.d.ts.map +1 -0
  492. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js +612 -0
  493. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.js.map +1 -0
  494. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/collaborators/page.tsx +939 -0
  495. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts +6 -0
  496. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.d.ts.map +1 -0
  497. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js +9 -0
  498. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.js.map +1 -0
  499. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/edit/page.tsx +11 -0
  500. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts +6 -0
  501. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.d.ts.map +1 -0
  502. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js +9 -0
  503. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.js.map +1 -0
  504. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/[id]/page.tsx +11 -0
  505. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts +6 -0
  506. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.d.ts.map +1 -0
  507. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js +9 -0
  508. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.js.map +1 -0
  509. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/new/page.tsx +17 -0
  510. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts +2 -0
  511. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.d.ts.map +1 -0
  512. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js +348 -0
  513. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.js.map +1 -0
  514. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/contracts/page.tsx +536 -0
  515. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts +2 -0
  516. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.d.ts.map +1 -0
  517. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js +401 -0
  518. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.js.map +1 -0
  519. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/departments/page.tsx +607 -0
  520. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts +5 -0
  521. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.d.ts.map +1 -0
  522. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js +7 -0
  523. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.js.map +1 -0
  524. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/layout.tsx +9 -0
  525. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts +6 -0
  526. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.d.ts.map +1 -0
  527. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js +9 -0
  528. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.js.map +1 -0
  529. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/[id]/page.tsx +11 -0
  530. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts +2 -0
  531. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.d.ts.map +1 -0
  532. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js +321 -0
  533. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.js.map +1 -0
  534. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-projects/page.tsx +440 -0
  535. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts +2 -0
  536. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.d.ts.map +1 -0
  537. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js +939 -0
  538. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.js.map +1 -0
  539. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/my-tasks/page.tsx +1499 -0
  540. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts +2 -0
  541. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.d.ts.map +1 -0
  542. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js +8 -0
  543. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.js.map +1 -0
  544. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/page.tsx +5 -0
  545. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts +2 -0
  546. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.d.ts.map +1 -0
  547. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js +436 -0
  548. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.js.map +1 -0
  549. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-categories/page.tsx +675 -0
  550. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts +2 -0
  551. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.d.ts.map +1 -0
  552. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js +563 -0
  553. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.js.map +1 -0
  554. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/project-cost-types/page.tsx +846 -0
  555. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts +6 -0
  556. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.d.ts.map +1 -0
  557. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js +9 -0
  558. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.js.map +1 -0
  559. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/costs-report/page.tsx +10 -0
  560. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts +6 -0
  561. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.d.ts.map +1 -0
  562. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js +9 -0
  563. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.js.map +1 -0
  564. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/edit/page.tsx +11 -0
  565. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts +6 -0
  566. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.d.ts.map +1 -0
  567. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js +9 -0
  568. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.js.map +1 -0
  569. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/[id]/page.tsx +11 -0
  570. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts +2 -0
  571. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.d.ts.map +1 -0
  572. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js +8 -0
  573. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.js.map +1 -0
  574. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/new/page.tsx +5 -0
  575. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts +2 -0
  576. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.d.ts.map +1 -0
  577. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js +492 -0
  578. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.js.map +1 -0
  579. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/projects/page.tsx +757 -0
  580. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts +2 -0
  581. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.d.ts.map +1 -0
  582. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js +342 -0
  583. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.js.map +1 -0
  584. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/collaborators/page.tsx +430 -0
  585. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts +2 -0
  586. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.d.ts.map +1 -0
  587. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js +338 -0
  588. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.js.map +1 -0
  589. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/reports/projects/page.tsx +428 -0
  590. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts +2 -0
  591. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.d.ts.map +1 -0
  592. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js +660 -0
  593. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.js.map +1 -0
  594. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/schedule-adjustments/page.tsx +992 -0
  595. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts +2 -0
  596. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.d.ts.map +1 -0
  597. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js +515 -0
  598. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.js.map +1 -0
  599. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/time-off/page.tsx +707 -0
  600. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts +2 -0
  601. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.d.ts.map +1 -0
  602. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js +1141 -0
  603. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.js.map +1 -0
  604. package/hedhog/frontend/src/app/(app)/(libraries)/operations/operations/timesheets/page.tsx +1705 -0
  605. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts +2 -0
  606. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.d.ts.map +1 -0
  607. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js +8 -0
  608. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.js.map +1 -0
  609. package/hedhog/frontend/src/app/(app)/(libraries)/operations/page.tsx +5 -0
  610. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts +2 -0
  611. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.d.ts.map +1 -0
  612. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js +436 -0
  613. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.js.map +1 -0
  614. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-categories/page.tsx +675 -0
  615. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts +2 -0
  616. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.d.ts.map +1 -0
  617. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js +563 -0
  618. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.js.map +1 -0
  619. package/hedhog/frontend/src/app/(app)/(libraries)/operations/project-cost-types/page.tsx +846 -0
  620. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts +6 -0
  621. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.d.ts.map +1 -0
  622. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js +9 -0
  623. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.js.map +1 -0
  624. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/edit/page.tsx +11 -0
  625. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts +6 -0
  626. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.d.ts.map +1 -0
  627. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js +9 -0
  628. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.js.map +1 -0
  629. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/[id]/page.tsx +11 -0
  630. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts +2 -0
  631. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.d.ts.map +1 -0
  632. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js +8 -0
  633. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.js.map +1 -0
  634. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/new/page.tsx +5 -0
  635. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts +2 -0
  636. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.d.ts.map +1 -0
  637. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js +492 -0
  638. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.js.map +1 -0
  639. package/hedhog/frontend/src/app/(app)/(libraries)/operations/projects/page.tsx +757 -0
  640. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts +2 -0
  641. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.d.ts.map +1 -0
  642. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js +342 -0
  643. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.js.map +1 -0
  644. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/collaborators/page.tsx +430 -0
  645. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts +2 -0
  646. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.d.ts.map +1 -0
  647. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js +338 -0
  648. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.js.map +1 -0
  649. package/hedhog/frontend/src/app/(app)/(libraries)/operations/reports/projects/page.tsx +428 -0
  650. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts +2 -0
  651. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.d.ts.map +1 -0
  652. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js +660 -0
  653. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.js.map +1 -0
  654. package/hedhog/frontend/src/app/(app)/(libraries)/operations/schedule-adjustments/page.tsx +992 -0
  655. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts +2 -0
  656. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.d.ts.map +1 -0
  657. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js +515 -0
  658. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.js.map +1 -0
  659. package/hedhog/frontend/src/app/(app)/(libraries)/operations/time-off/page.tsx +707 -0
  660. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts +2 -0
  661. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.d.ts.map +1 -0
  662. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js +1141 -0
  663. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.js.map +1 -0
  664. package/hedhog/frontend/src/app/(app)/(libraries)/operations/timesheets/page.tsx +1705 -0
  665. package/hedhog/table/operations_project_assignment.yaml +1 -0
  666. package/hedhog/table/operations_project_cost.yaml +93 -0
  667. package/hedhog/table/operations_project_cost_category.yaml +37 -0
  668. package/hedhog/table/operations_project_cost_type.yaml +55 -0
  669. package/hedhog/table/operations_task_comment.yaml +26 -0
  670. package/package.json +6 -6
  671. package/src/controllers/operations-collaborators.controller.ts +26 -0
  672. package/src/controllers/operations-project-costs.controller.ts +249 -0
  673. package/src/controllers/operations-tasks.controller.ts +49 -0
  674. package/src/dto/create-collaborator-project-assignment.dto.ts +14 -0
  675. package/src/dto/create-project-cost-category.dto.ts +37 -0
  676. package/src/dto/create-project-cost-type.dto.ts +64 -0
  677. package/src/dto/create-project-cost.dto.ts +126 -0
  678. package/src/dto/get-project-cost-report.dto.ts +46 -0
  679. package/src/dto/list-project-cost-categories.dto.ts +17 -0
  680. package/src/dto/list-project-cost-types.dto.ts +28 -0
  681. package/src/dto/list-project-costs.dto.ts +59 -0
  682. package/src/dto/list-tasks.dto.ts +7 -0
  683. package/src/dto/list-timesheets.dto.ts +7 -1
  684. package/src/dto/update-collaborator-project-assignment.dto.ts +58 -0
  685. package/src/dto/update-project-cost-category.dto.ts +4 -0
  686. package/src/dto/update-project-cost-type.dto.ts +4 -0
  687. package/src/dto/update-project-cost.dto.ts +4 -0
  688. package/src/operations.module.ts +2 -0
  689. package/src/operations.service.ts +2274 -39
@@ -0,0 +1,954 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.default = OperationsApprovalsPage;
5
+ const entity_list_1 = require("@/components/entity-list");
6
+ const button_1 = require("@/components/ui/button");
7
+ const card_1 = require("@/components/ui/card");
8
+ const dialog_1 = require("@/components/ui/dialog");
9
+ const kpi_cards_grid_1 = require("@/components/ui/kpi-cards-grid");
10
+ const sheet_1 = require("@/components/ui/sheet");
11
+ const table_1 = require("@/components/ui/table");
12
+ const textarea_1 = require("@/components/ui/textarea");
13
+ const toggle_group_1 = require("@/components/ui/toggle-group");
14
+ const next_app_provider_1 = require("@hed-hog/next-app-provider");
15
+ const lucide_react_1 = require("lucide-react");
16
+ const next_intl_1 = require("next-intl");
17
+ const react_1 = require("react");
18
+ const operations_calendar_view_1 = require("../_components/operations-calendar-view");
19
+ const operations_header_1 = require("../_components/operations-header");
20
+ const status_badge_1 = require("../_components/status-badge");
21
+ const api_1 = require("../_lib/api");
22
+ const use_operations_access_1 = require("../_lib/hooks/use-operations-access");
23
+ const format_1 = require("../_lib/utils/format");
24
+ const WEEKDAY_ORDER = [
25
+ 'monday',
26
+ 'tuesday',
27
+ 'wednesday',
28
+ 'thursday',
29
+ 'friday',
30
+ 'saturday',
31
+ 'sunday',
32
+ ];
33
+ function formatTimeValue(t) {
34
+ var _a, _b;
35
+ if (t.includes('T'))
36
+ return (_b = (_a = t.split('T')[1]) === null || _a === void 0 ? void 0 : _a.slice(0, 5)) !== null && _b !== void 0 ? _b : '--:--';
37
+ return t.slice(0, 5);
38
+ }
39
+ function groupScheduleLines(days, locale) {
40
+ var _a;
41
+ if (!days.length)
42
+ return [];
43
+ const sorted = [...days].sort((a, b) => WEEKDAY_ORDER.indexOf(a.weekday.toLowerCase()) -
44
+ WEEKDAY_ORDER.indexOf(b.weekday.toLowerCase()));
45
+ const dayAbbr = (weekday) => (0, format_1.formatWeekdayLabel)(weekday, locale).slice(0, 3);
46
+ const groups = [];
47
+ for (const day of sorted) {
48
+ const time = day.isWorkingDay && day.startTime && day.endTime
49
+ ? `${formatTimeValue(day.startTime)}–${formatTimeValue(day.endTime)}`
50
+ : null;
51
+ const breakMin = day.isWorkingDay ? ((_a = day.breakMinutes) !== null && _a !== void 0 ? _a : null) : null;
52
+ const isOff = !day.isWorkingDay;
53
+ const last = groups[groups.length - 1];
54
+ if (last &&
55
+ last.isOff === isOff &&
56
+ last.time === time &&
57
+ last.break === breakMin) {
58
+ last.days.push(dayAbbr(day.weekday));
59
+ }
60
+ else {
61
+ groups.push({
62
+ days: [dayAbbr(day.weekday)],
63
+ time,
64
+ break: breakMin,
65
+ isOff,
66
+ });
67
+ }
68
+ }
69
+ return groups.map((g) => ({
70
+ dayLabel: g.days.length > 1
71
+ ? `${g.days[0]}–${g.days[g.days.length - 1]}`
72
+ : g.days[0],
73
+ time: g.time,
74
+ break: g.break,
75
+ isOff: g.isOff,
76
+ }));
77
+ }
78
+ function SchedulePanel({ days, locale, emptyLabel, }) {
79
+ const lines = groupScheduleLines(days, locale);
80
+ if (!lines.length)
81
+ return <p className="text-xs text-muted-foreground">{emptyLabel}</p>;
82
+ return (<div className="space-y-1">
83
+ {lines.map((line, i) => (<div key={i} className="flex items-center gap-2 text-xs">
84
+ <span className={`inline-block size-2 shrink-0 rounded-full ${line.isOff ? 'bg-muted-foreground/30' : 'bg-emerald-500'}`}/>
85
+ <span className="w-16 shrink-0 font-medium text-foreground">
86
+ {line.dayLabel}
87
+ </span>
88
+ {line.isOff ? (<span className="text-muted-foreground">Folga</span>) : (<span className="text-foreground">
89
+ {line.time}
90
+ {line.break ? (<span className="ml-1 text-muted-foreground">
91
+ ({line.break}min int.)
92
+ </span>) : null}
93
+ </span>)}
94
+ </div>))}
95
+ </div>);
96
+ }
97
+ function formatDateLabel(value) {
98
+ if (!value)
99
+ return '—';
100
+ const match = String(value).match(/(\d{4}-\d{2}-\d{2})/);
101
+ if (!match)
102
+ return value;
103
+ const date = new Date(`${match[1]}T12:00:00`);
104
+ if (Number.isNaN(date.getTime()))
105
+ return value;
106
+ return new Intl.DateTimeFormat(undefined, {
107
+ day: '2-digit',
108
+ month: 'short',
109
+ year: 'numeric',
110
+ }).format(date);
111
+ }
112
+ function formatEntryDuration(minutes, hours) {
113
+ if (typeof minutes === 'number' && Number.isFinite(minutes) && minutes > 0) {
114
+ const h = Math.floor(minutes / 60);
115
+ const m = minutes % 60;
116
+ if (!h)
117
+ return `${m}m`;
118
+ if (!m)
119
+ return `${h}h`;
120
+ return `${h}h ${m}m`;
121
+ }
122
+ return (0, format_1.formatHours)(Number(hours !== null && hours !== void 0 ? hours : 0));
123
+ }
124
+ function OperationsApprovalsPage() {
125
+ var _a, _b, _c, _d, _e, _f, _g, _h;
126
+ const t = (0, next_intl_1.useTranslations)('operations.ApprovalsPage');
127
+ const commonT = (0, next_intl_1.useTranslations)('operations.Common');
128
+ const { request, showToastHandler, currentLocaleCode } = (0, next_app_provider_1.useApp)();
129
+ const access = (0, use_operations_access_1.useOperationsAccess)();
130
+ const [search, setSearch] = (0, react_1.useState)('');
131
+ const [statusFilter, setStatusFilter] = (0, react_1.useState)('all');
132
+ const [targetFilter, setTargetFilter] = (0, react_1.useState)('all');
133
+ const [dateFrom, setDateFrom] = (0, react_1.useState)('');
134
+ const [dateTo, setDateTo] = (0, react_1.useState)('');
135
+ const [calendarYear, setCalendarYear] = (0, react_1.useState)(() => new Date().getFullYear());
136
+ const [calendarMonth, setCalendarMonth] = (0, react_1.useState)(() => new Date().getMonth() + 1);
137
+ const [page, setPage] = (0, react_1.useState)(1);
138
+ const [pageSize, setPageSize] = (0, react_1.useState)(12);
139
+ const [viewMode, setViewMode] = (0, react_1.useState)(() => {
140
+ if (typeof window === 'undefined')
141
+ return 'table';
142
+ const saved = window.localStorage.getItem('operations-approvals-view-mode');
143
+ return saved === 'cards' || saved === 'calendar' ? saved : 'table';
144
+ });
145
+ const [decisionNote, setDecisionNote] = (0, react_1.useState)('');
146
+ const [pendingDecision, setPendingDecision] = (0, react_1.useState)(null);
147
+ const [selectedApproval, setSelectedApproval] = (0, react_1.useState)(null);
148
+ const [isDetailsOpen, setIsDetailsOpen] = (0, react_1.useState)(false);
149
+ const [isDetailLoading, setIsDetailLoading] = (0, react_1.useState)(false);
150
+ const getStatusLabel = (value) => {
151
+ if (!value) {
152
+ return '-';
153
+ }
154
+ const key = `options.statuses.${value}`;
155
+ return t.has(key) ? t(key) : (0, format_1.formatEnumLabel)(value);
156
+ };
157
+ const getTargetTypeLabel = (value) => {
158
+ if (!value) {
159
+ return '-';
160
+ }
161
+ const key = `options.targetTypes.${value}`;
162
+ return t.has(key) ? t(key) : (0, format_1.formatEnumLabel)(value);
163
+ };
164
+ const getTimeOffTypeLabel = (value) => {
165
+ if (!value) {
166
+ return '-';
167
+ }
168
+ const key = `options.timeOffTypes.${value}`;
169
+ return t.has(key) ? t(key) : (0, format_1.formatEnumLabel)(value);
170
+ };
171
+ const getScheduleScopeLabel = (value) => {
172
+ if (!value) {
173
+ return '-';
174
+ }
175
+ const key = `options.scheduleScopes.${value}`;
176
+ return t.has(key) ? t(key) : (0, format_1.formatEnumLabel)(value);
177
+ };
178
+ const getTypeColorClass = (targetType) => {
179
+ switch (targetType) {
180
+ case 'timesheet':
181
+ return 'bg-blue-100 text-blue-700 dark:bg-blue-900/30 dark:text-blue-400';
182
+ case 'time_off_request':
183
+ return 'bg-amber-100 text-amber-700 dark:bg-amber-900/30 dark:text-amber-400';
184
+ case 'schedule_adjustment_request':
185
+ return 'bg-emerald-100 text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400';
186
+ default:
187
+ return 'bg-muted text-muted-foreground';
188
+ }
189
+ };
190
+ const getTypeIcon = (targetType) => {
191
+ switch (targetType) {
192
+ case 'timesheet':
193
+ return <lucide_react_1.Clock className="size-3"/>;
194
+ case 'time_off_request':
195
+ return <lucide_react_1.CalendarOff className="size-3"/>;
196
+ case 'schedule_adjustment_request':
197
+ return <lucide_react_1.SlidersHorizontal className="size-3"/>;
198
+ default:
199
+ return null;
200
+ }
201
+ };
202
+ const getTargetLabel = (approval) => {
203
+ switch (approval.targetType) {
204
+ case 'timesheet':
205
+ return `${getTargetTypeLabel('timesheet')} ${(0, format_1.formatDate)(approval.timesheetWeekStartDate)}`;
206
+ case 'time_off_request':
207
+ return `${getTimeOffTypeLabel(approval.timeOffType)} ${(0, format_1.formatDate)(approval.timeOffStartDate)}`;
208
+ case 'schedule_adjustment_request':
209
+ return `${getScheduleScopeLabel(approval.scheduleRequestScope)} ${(0, format_1.formatDate)(approval.scheduleStartDate)}`;
210
+ default:
211
+ return getTargetTypeLabel(approval.targetType);
212
+ }
213
+ };
214
+ const { data: approvalsResponse, refetch } = (0, next_app_provider_1.useQuery)({
215
+ queryKey: [
216
+ 'operations-approvals',
217
+ currentLocaleCode,
218
+ search,
219
+ statusFilter,
220
+ targetFilter,
221
+ dateFrom,
222
+ dateTo,
223
+ page,
224
+ pageSize,
225
+ ],
226
+ enabled: access.isSupervisor,
227
+ queryFn: () => {
228
+ const params = new URLSearchParams({
229
+ page: String(page),
230
+ pageSize: String(pageSize),
231
+ });
232
+ if (search.trim())
233
+ params.set('search', search.trim());
234
+ if (statusFilter !== 'all')
235
+ params.set('status', statusFilter);
236
+ if (targetFilter !== 'all')
237
+ params.set('targetType', targetFilter);
238
+ if (dateFrom)
239
+ params.set('dateFrom', dateFrom);
240
+ if (dateTo)
241
+ params.set('dateTo', dateTo);
242
+ return (0, api_1.fetchOperations)(request, `/operations/approvals?${params.toString()}`);
243
+ },
244
+ placeholderData: (previous) => previous,
245
+ });
246
+ const calendarDateFrom = `${String(calendarYear)}-${String(calendarMonth).padStart(2, '0')}-01`;
247
+ const calendarDateTo = (() => {
248
+ const lastDay = new Date(calendarYear, calendarMonth, 0).getDate();
249
+ return `${String(calendarYear)}-${String(calendarMonth).padStart(2, '0')}-${String(lastDay).padStart(2, '0')}`;
250
+ })();
251
+ const { data: calendarApprovalsResponse } = (0, next_app_provider_1.useQuery)({
252
+ queryKey: [
253
+ 'operations-approvals-calendar',
254
+ currentLocaleCode,
255
+ search,
256
+ statusFilter,
257
+ calendarYear,
258
+ calendarMonth,
259
+ ],
260
+ enabled: access.isSupervisor && viewMode === 'calendar',
261
+ queryFn: () => {
262
+ const params = new URLSearchParams({
263
+ sortField: 'submittedAt',
264
+ sortOrder: 'desc',
265
+ dateFrom: calendarDateFrom,
266
+ dateTo: calendarDateTo,
267
+ });
268
+ if (search.trim())
269
+ params.set('search', search.trim());
270
+ if (statusFilter !== 'all')
271
+ params.set('status', statusFilter);
272
+ return (0, api_1.fetchOperations)(request, `/operations/approvals?${params.toString()}`);
273
+ },
274
+ placeholderData: (previous) => previous,
275
+ });
276
+ const approvals = (_a = approvalsResponse === null || approvalsResponse === void 0 ? void 0 : approvalsResponse.data) !== null && _a !== void 0 ? _a : [];
277
+ const calendarApprovals = (_b = calendarApprovalsResponse === null || calendarApprovalsResponse === void 0 ? void 0 : calendarApprovalsResponse.data) !== null && _b !== void 0 ? _b : [];
278
+ const buildCalendarItem = (approval) => {
279
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j;
280
+ return ({
281
+ id: `approval-${approval.id}`,
282
+ date: approval.targetType === 'timesheet'
283
+ ? ((_b = String((_a = approval.timesheetWeekStartDate) !== null && _a !== void 0 ? _a : '').match(/(\d{4}-\d{2}-\d{2})/)) === null || _b === void 0 ? void 0 : _b[1]) ||
284
+ ((_c = approval.submittedAt) === null || _c === void 0 ? void 0 : _c.slice(0, 10)) ||
285
+ ''
286
+ : approval.targetType === 'time_off_request'
287
+ ? ((_e = String((_d = approval.timeOffStartDate) !== null && _d !== void 0 ? _d : '').match(/(\d{4}-\d{2}-\d{2})/)) === null || _e === void 0 ? void 0 : _e[1]) ||
288
+ ((_f = approval.submittedAt) === null || _f === void 0 ? void 0 : _f.slice(0, 10)) ||
289
+ ''
290
+ : ((_h = String((_g = approval.scheduleStartDate) !== null && _g !== void 0 ? _g : '').match(/(\d{4}-\d{2}-\d{2})/)) === null || _h === void 0 ? void 0 : _h[1]) ||
291
+ ((_j = approval.submittedAt) === null || _j === void 0 ? void 0 : _j.slice(0, 10)) ||
292
+ '',
293
+ title: approval.requesterName,
294
+ subtitle: getTargetLabel(approval),
295
+ kind: approval.targetType,
296
+ meta: approval.status === 'pending'
297
+ ? (0, format_1.formatDateTime)(approval.submittedAt)
298
+ : (0, format_1.formatDateTime)(approval.decidedAt),
299
+ statusLabel: getStatusLabel(approval.status),
300
+ badgeClassName: (0, format_1.getStatusBadgeClass)(approval.status),
301
+ });
302
+ };
303
+ const calendarItems = (0, react_1.useMemo)(() => (viewMode === 'calendar' ? calendarApprovals : approvals).map(buildCalendarItem),
304
+ // eslint-disable-next-line react-hooks/exhaustive-deps
305
+ [approvals, calendarApprovals, viewMode]);
306
+ const calendarApprovalById = (0, react_1.useMemo)(() => new Map(calendarApprovals.map((a) => [`approval-${a.id}`, a])), [calendarApprovals]);
307
+ const handleViewModeChange = (value) => {
308
+ if (value !== 'table' && value !== 'cards' && value !== 'calendar')
309
+ return;
310
+ setViewMode(value);
311
+ if (typeof window !== 'undefined') {
312
+ window.localStorage.setItem('operations-approvals-view-mode', value);
313
+ }
314
+ };
315
+ const cards = [
316
+ {
317
+ key: 'pending',
318
+ title: t('cards.pending'),
319
+ description: t('cards.pendingDescription'),
320
+ value: approvals.filter((item) => item.status === 'pending').length,
321
+ },
322
+ {
323
+ key: 'approved',
324
+ title: t('cards.approved'),
325
+ description: t('cards.approvedDescription'),
326
+ value: approvals.filter((item) => item.status === 'approved').length,
327
+ },
328
+ {
329
+ key: 'rejected',
330
+ title: t('cards.rejected'),
331
+ description: t('cards.rejectedDescription'),
332
+ value: approvals.filter((item) => item.status === 'rejected').length,
333
+ },
334
+ ];
335
+ const decide = async () => {
336
+ if (!pendingDecision) {
337
+ return;
338
+ }
339
+ try {
340
+ await request({
341
+ url: `/operations/approvals/${pendingDecision.approval.id}/${pendingDecision.action}`,
342
+ method: 'POST',
343
+ data: {
344
+ note: decisionNote.trim() || undefined,
345
+ },
346
+ });
347
+ showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('success', pendingDecision.action === 'approve'
348
+ ? t('messages.approveSuccess')
349
+ : t('messages.rejectSuccess'));
350
+ setPendingDecision(null);
351
+ setDecisionNote('');
352
+ await refetch();
353
+ }
354
+ catch (_a) {
355
+ showToastHandler === null || showToastHandler === void 0 ? void 0 : showToastHandler('error', pendingDecision.action === 'approve'
356
+ ? t('messages.approveError')
357
+ : t('messages.rejectError'));
358
+ }
359
+ };
360
+ const openDetails = async (approval) => {
361
+ setSelectedApproval(approval);
362
+ setIsDetailsOpen(true);
363
+ if (approval.targetType === 'timesheet' ||
364
+ approval.targetType === 'schedule_adjustment_request') {
365
+ setIsDetailLoading(true);
366
+ try {
367
+ const detail = await (0, api_1.fetchOperations)(request, `/operations/approvals/${approval.id}`);
368
+ setSelectedApproval(detail);
369
+ }
370
+ catch (_a) {
371
+ // keep base data if detail fetch fails
372
+ }
373
+ finally {
374
+ setIsDetailLoading(false);
375
+ }
376
+ }
377
+ };
378
+ if (!access.isSupervisor && !access.isLoading) {
379
+ return (<entity_list_1.Page>
380
+ <operations_header_1.OperationsHeader title={t('title')} description={t('description')} current={t('breadcrumb')}/>
381
+ <entity_list_1.EmptyState icon={<lucide_react_1.ClipboardCheck className="size-12"/>} title={commonT('states.noAccessTitle')} description={t('noAccessDescription')} actionLabel={commonT('actions.refresh')} onAction={() => void refetch()}/>
382
+ </entity_list_1.Page>);
383
+ }
384
+ return (<entity_list_1.Page>
385
+ <operations_header_1.OperationsHeader title={t('title')} description={t('description')} current={t('breadcrumb')}/>
386
+
387
+ <kpi_cards_grid_1.KpiCardsGrid items={cards} columns={3}/>
388
+
389
+ <div className="flex min-w-0 flex-col gap-4 xl:flex-row xl:items-center">
390
+ <div className="flex-1">
391
+ <entity_list_1.SearchBar searchQuery={search} onSearchChange={(value) => {
392
+ setSearch(value);
393
+ setPage(1);
394
+ }} showSearchButton={false} debounceMs={500} placeholder={t('searchPlaceholder')} controls={[
395
+ {
396
+ id: 'status',
397
+ type: 'select',
398
+ value: statusFilter,
399
+ onChange: (value) => {
400
+ setStatusFilter(value);
401
+ setPage(1);
402
+ },
403
+ placeholder: commonT('labels.status'),
404
+ options: [
405
+ { value: 'all', label: commonT('filters.allStatuses') },
406
+ { value: 'pending', label: getStatusLabel('pending') },
407
+ { value: 'approved', label: getStatusLabel('approved') },
408
+ { value: 'rejected', label: getStatusLabel('rejected') },
409
+ ],
410
+ },
411
+ {
412
+ id: 'target',
413
+ type: 'select',
414
+ value: targetFilter,
415
+ onChange: (value) => {
416
+ setTargetFilter(value);
417
+ setPage(1);
418
+ },
419
+ placeholder: commonT('labels.requestType'),
420
+ options: [
421
+ { value: 'all', label: commonT('filters.allTypes') },
422
+ {
423
+ value: 'timesheet',
424
+ label: getTargetTypeLabel('timesheet'),
425
+ },
426
+ {
427
+ value: 'time_off_request',
428
+ label: getTargetTypeLabel('time_off_request'),
429
+ },
430
+ {
431
+ value: 'schedule_adjustment_request',
432
+ label: getTargetTypeLabel('schedule_adjustment_request'),
433
+ },
434
+ ],
435
+ },
436
+ {
437
+ id: 'dateFrom',
438
+ type: 'date',
439
+ value: dateFrom,
440
+ onChange: (value) => {
441
+ setDateFrom(value);
442
+ setPage(1);
443
+ },
444
+ label: commonT('filters.dateFrom'),
445
+ },
446
+ {
447
+ id: 'dateTo',
448
+ type: 'date',
449
+ value: dateTo,
450
+ onChange: (value) => {
451
+ setDateTo(value);
452
+ setPage(1);
453
+ },
454
+ label: commonT('filters.dateTo'),
455
+ },
456
+ ]}/>
457
+ </div>
458
+
459
+ <div className="flex items-center justify-between gap-3 xl:justify-end">
460
+ <span className="text-xs font-medium text-muted-foreground">
461
+ {t('viewMode')}
462
+ </span>
463
+ <toggle_group_1.ToggleGroup type="single" value={viewMode} onValueChange={handleViewModeChange} variant="outline" size="sm">
464
+ <toggle_group_1.ToggleGroupItem value="table" className="gap-1.5 px-2.5">
465
+ <lucide_react_1.List className="h-4 w-4"/>
466
+ <span className="hidden sm:inline">{t('viewModeTable')}</span>
467
+ </toggle_group_1.ToggleGroupItem>
468
+ <toggle_group_1.ToggleGroupItem value="cards" className="gap-1.5 px-2.5">
469
+ <lucide_react_1.LayoutGrid className="h-4 w-4"/>
470
+ <span className="hidden sm:inline">{t('viewModeCards')}</span>
471
+ </toggle_group_1.ToggleGroupItem>
472
+ <toggle_group_1.ToggleGroupItem value="calendar" className="gap-1.5 px-2.5">
473
+ <lucide_react_1.CalendarDays className="h-4 w-4"/>
474
+ <span className="hidden sm:inline">{t('viewModeCalendar')}</span>
475
+ </toggle_group_1.ToggleGroupItem>
476
+ </toggle_group_1.ToggleGroup>
477
+ </div>
478
+ </div>
479
+
480
+ {(viewMode === 'calendar' ? true : approvals.length > 0) ? (viewMode === 'calendar' ? (<operations_calendar_view_1.OperationsCalendarView locale={currentLocaleCode} items={calendarItems.filter((item) => item.date)} emptyLabel={t('emptyDescription')} actionLabel={t('actions.viewDetails')} onMonthChange={(year, month) => {
481
+ setCalendarYear(year);
482
+ setCalendarMonth(month);
483
+ }} onDateSelect={(_date, items) => {
484
+ var _a;
485
+ const approval = calendarApprovalById.get(String((_a = items[0]) === null || _a === void 0 ? void 0 : _a.id));
486
+ if (approval)
487
+ void openDetails(approval);
488
+ }} onOpenItem={(item) => {
489
+ const approval = calendarApprovalById.get(String(item.id));
490
+ if (approval) {
491
+ void openDetails(approval);
492
+ }
493
+ }}/>) : viewMode === 'cards' ? (<div className="grid gap-4 md:grid-cols-2 2xl:grid-cols-3">
494
+ {approvals.map((approval) => (<card_1.Card key={approval.id} className="overflow-hidden border-border/60 py-0 shadow-sm">
495
+ <card_1.CardContent className="space-y-3 p-4">
496
+ <div className="flex items-start justify-between gap-3">
497
+ <div className="min-w-0">
498
+ <div className="truncate font-semibold">
499
+ {approval.requesterName}
500
+ </div>
501
+ <div className="truncate text-xs text-muted-foreground">
502
+ {getTargetLabel(approval)}
503
+ </div>
504
+ </div>
505
+ <status_badge_1.StatusBadge label={getStatusLabel(approval.status)} className={(0, format_1.getStatusBadgeClass)(approval.status)}/>
506
+ </div>
507
+ <div className="grid grid-cols-2 gap-2 text-sm text-muted-foreground">
508
+ <div>
509
+ <span className="font-medium text-foreground">
510
+ {commonT('labels.submittedAt')}:
511
+ </span>
512
+ <br />
513
+ {(0, format_1.formatDateTime)(approval.submittedAt)}
514
+ </div>
515
+ <div>
516
+ <span className="font-medium text-foreground">
517
+ {commonT('labels.approver')}:
518
+ </span>
519
+ <br />
520
+ {approval.approverName || commonT('labels.notAssigned')}
521
+ </div>
522
+ </div>
523
+ {approval.status === 'pending' ? (<div className="flex flex-wrap justify-end gap-2 border-t border-border/60 pt-3">
524
+ <button_1.Button size="sm" variant="outline" className="cursor-pointer" onClick={() => void openDetails(approval)}>
525
+ <lucide_react_1.Eye className="size-4"/>
526
+ {t('actions.viewDetails')}
527
+ </button_1.Button>
528
+ <button_1.Button size="sm" variant="outline" onClick={() => {
529
+ setPendingDecision({ approval, action: 'reject' });
530
+ setDecisionNote('');
531
+ }}>
532
+ <lucide_react_1.X className="size-4"/>
533
+ {commonT('actions.reject')}
534
+ </button_1.Button>
535
+ <button_1.Button size="sm" onClick={() => {
536
+ setPendingDecision({ approval, action: 'approve' });
537
+ setDecisionNote('');
538
+ }}>
539
+ <lucide_react_1.Check className="size-4"/>
540
+ {commonT('actions.approve')}
541
+ </button_1.Button>
542
+ </div>) : (<div className="flex items-center justify-between gap-2 border-t border-border/60 pt-3">
543
+ <button_1.Button size="sm" variant="outline" className="cursor-pointer" onClick={() => void openDetails(approval)}>
544
+ <lucide_react_1.Eye className="size-4"/>
545
+ {t('actions.viewDetails')}
546
+ </button_1.Button>
547
+ <div className="text-right text-xs text-muted-foreground">
548
+ {(0, format_1.formatDateTime)(approval.decidedAt)}
549
+ </div>
550
+ </div>)}
551
+ </card_1.CardContent>
552
+ </card_1.Card>))}
553
+ </div>) : (<div className="overflow-x-auto rounded-md border">
554
+ <table_1.Table>
555
+ <table_1.TableHeader>
556
+ <table_1.TableRow>
557
+ <table_1.TableHead>{commonT('labels.requester')}</table_1.TableHead>
558
+ <table_1.TableHead>{commonT('labels.requestType')}</table_1.TableHead>
559
+ <table_1.TableHead>{commonT('labels.submittedAt')}</table_1.TableHead>
560
+ <table_1.TableHead>{commonT('labels.approver')}</table_1.TableHead>
561
+ <table_1.TableHead>{commonT('labels.status')}</table_1.TableHead>
562
+ <table_1.TableHead className="w-45 text-right">
563
+ {commonT('labels.actions')}
564
+ </table_1.TableHead>
565
+ </table_1.TableRow>
566
+ </table_1.TableHeader>
567
+ <table_1.TableBody>
568
+ {approvals.map((approval) => (<table_1.TableRow key={approval.id}>
569
+ <table_1.TableCell>
570
+ <div className="font-medium">
571
+ {approval.requesterName}
572
+ </div>
573
+ <div className="text-xs text-muted-foreground">
574
+ {approval.decisionNote || commonT('labels.noNotes')}
575
+ </div>
576
+ </table_1.TableCell>
577
+ <table_1.TableCell>{getTargetLabel(approval)}</table_1.TableCell>
578
+ <table_1.TableCell>
579
+ <div>{(0, format_1.formatDateTime)(approval.submittedAt)}</div>
580
+ <div className="text-xs text-muted-foreground">
581
+ {(0, format_1.formatDate)(approval.decidedAt)}
582
+ </div>
583
+ </table_1.TableCell>
584
+ <table_1.TableCell>
585
+ <div>
586
+ {approval.approverName || commonT('labels.notAssigned')}
587
+ </div>
588
+ <div className="text-xs text-muted-foreground">
589
+ {approval.targetType === 'timesheet'
590
+ ? [
591
+ approval.timesheetProjectNames,
592
+ approval.timesheetTotalHours
593
+ ? `${approval.timesheetTotalHours}h`
594
+ : null,
595
+ ]
596
+ .filter(Boolean)
597
+ .join(' • ') || commonT('labels.notAvailable')
598
+ : approval.targetType === 'time_off_request'
599
+ ? approval.timeOffReason ||
600
+ commonT('labels.noNotes')
601
+ : approval.scheduleReason ||
602
+ commonT('labels.noNotes')}
603
+ </div>
604
+ </table_1.TableCell>
605
+ <table_1.TableCell>
606
+ <status_badge_1.StatusBadge label={getStatusLabel(approval.status)} className={(0, format_1.getStatusBadgeClass)(approval.status)}/>
607
+ </table_1.TableCell>
608
+ <table_1.TableCell>
609
+ <div className="flex flex-wrap justify-end gap-2">
610
+ <button_1.Button size="sm" variant="outline" className="cursor-pointer" onClick={() => void openDetails(approval)}>
611
+ <lucide_react_1.Eye className="size-4"/>
612
+ {t('actions.viewDetails')}
613
+ </button_1.Button>
614
+ {approval.status === 'pending' ? (<>
615
+ <button_1.Button size="sm" variant="outline" onClick={() => {
616
+ setPendingDecision({
617
+ approval,
618
+ action: 'reject',
619
+ });
620
+ setDecisionNote('');
621
+ }}>
622
+ <lucide_react_1.X className="size-4"/>
623
+ {commonT('actions.reject')}
624
+ </button_1.Button>
625
+ <button_1.Button size="sm" onClick={() => {
626
+ setPendingDecision({
627
+ approval,
628
+ action: 'approve',
629
+ });
630
+ setDecisionNote('');
631
+ }}>
632
+ <lucide_react_1.Check className="size-4"/>
633
+ {commonT('actions.approve')}
634
+ </button_1.Button>
635
+ </>) : (<div className="flex items-center text-right text-xs text-muted-foreground">
636
+ {(0, format_1.formatDateTime)(approval.decidedAt)}
637
+ </div>)}
638
+ </div>
639
+ </table_1.TableCell>
640
+ </table_1.TableRow>))}
641
+ </table_1.TableBody>
642
+ </table_1.Table>
643
+ </div>)) : (<entity_list_1.EmptyState icon={<lucide_react_1.ClipboardCheck className="size-12"/>} title={commonT('states.emptyTitle')} description={t('emptyDescription')} actionLabel={commonT('actions.refresh')} onAction={() => void refetch()}/>)}
644
+
645
+ <entity_list_1.PaginationFooter currentPage={page} pageSize={pageSize} totalItems={(_c = approvalsResponse === null || approvalsResponse === void 0 ? void 0 : approvalsResponse.total) !== null && _c !== void 0 ? _c : 0} pageSizeOptions={[12, 24, 48]} onPageChange={setPage} onPageSizeChange={(size) => {
646
+ setPageSize(size);
647
+ setPage(1);
648
+ }}/>
649
+
650
+ <sheet_1.Sheet open={isDetailsOpen} onOpenChange={setIsDetailsOpen}>
651
+ <sheet_1.SheetContent className="w-full overflow-y-auto sm:max-w-2xl">
652
+ <sheet_1.SheetHeader>
653
+ <sheet_1.SheetTitle>{t('details.title')}</sheet_1.SheetTitle>
654
+ <sheet_1.SheetDescription>{t('details.description')}</sheet_1.SheetDescription>
655
+ </sheet_1.SheetHeader>
656
+
657
+ {selectedApproval ? (<div className="mt-6 space-y-5 px-4 pb-8">
658
+ <div className="rounded-lg border bg-muted/20 p-4">
659
+ <div className="flex flex-wrap items-start justify-between gap-3">
660
+ <div>
661
+ <div className="text-lg font-semibold">
662
+ {selectedApproval.requesterName}
663
+ </div>
664
+ <div className="mt-2 flex flex-wrap items-center gap-2">
665
+ <span className={`inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium ${getTypeColorClass(selectedApproval.targetType)}`}>
666
+ {getTypeIcon(selectedApproval.targetType)}
667
+ {getTargetTypeLabel(selectedApproval.targetType)}
668
+ </span>
669
+ <span className="text-sm text-muted-foreground">
670
+ {selectedApproval.targetType === 'timesheet'
671
+ ? (0, format_1.formatDate)(selectedApproval.timesheetWeekStartDate)
672
+ : selectedApproval.targetType === 'time_off_request'
673
+ ? [
674
+ (0, format_1.formatDate)(selectedApproval.timeOffStartDate),
675
+ (0, format_1.formatDate)(selectedApproval.timeOffEndDate),
676
+ ]
677
+ .filter(Boolean)
678
+ .join(' – ')
679
+ : [
680
+ (0, format_1.formatDate)(selectedApproval.scheduleStartDate),
681
+ (0, format_1.formatDate)(selectedApproval.scheduleEndDate),
682
+ ]
683
+ .filter(Boolean)
684
+ .join(' – ')}
685
+ </span>
686
+ </div>
687
+ </div>
688
+ <status_badge_1.StatusBadge label={getStatusLabel(selectedApproval.status)} className={(0, format_1.getStatusBadgeClass)(selectedApproval.status)}/>
689
+ </div>
690
+ </div>
691
+
692
+ <div className="grid gap-4 sm:grid-cols-2">
693
+ <div>
694
+ <div className="text-xs font-medium uppercase text-muted-foreground">
695
+ {commonT('labels.approver')}
696
+ </div>
697
+ <div className="mt-1 text-sm">
698
+ {selectedApproval.approverName ||
699
+ commonT('labels.notAssigned')}
700
+ </div>
701
+ </div>
702
+ <div>
703
+ <div className="text-xs font-medium uppercase text-muted-foreground">
704
+ {commonT('labels.submittedAt')}
705
+ </div>
706
+ <div className="mt-1 text-sm">
707
+ {(0, format_1.formatDateTime)(selectedApproval.submittedAt)}
708
+ </div>
709
+ </div>
710
+ <div>
711
+ <div className="text-xs font-medium uppercase text-muted-foreground">
712
+ {t('details.decidedAt')}
713
+ </div>
714
+ <div className="mt-1 text-sm">
715
+ {(_d = (0, format_1.formatDateTime)(selectedApproval.decidedAt)) !== null && _d !== void 0 ? _d : '-'}
716
+ </div>
717
+ </div>
718
+ </div>
719
+
720
+ <div className="flex items-center gap-3">
721
+ <div className="flex-1 border-t"/>
722
+ <span className="text-xs font-semibold uppercase tracking-wide text-muted-foreground">
723
+ {selectedApproval.targetType === 'timesheet'
724
+ ? t('details.timesheetSection')
725
+ : selectedApproval.targetType === 'time_off_request'
726
+ ? t('details.timeOffSection')
727
+ : t('details.scheduleSection')}
728
+ </span>
729
+ <div className="flex-1 border-t"/>
730
+ </div>
731
+
732
+ {selectedApproval.targetType === 'timesheet' ? (<>
733
+ <div className="grid gap-4 sm:grid-cols-2">
734
+ <div>
735
+ <div className="text-xs font-medium uppercase text-muted-foreground">
736
+ {t('details.period')}
737
+ </div>
738
+ <div className="mt-1 text-sm">
739
+ {(0, format_1.formatDate)(selectedApproval.timesheetWeekStartDate)}
740
+ </div>
741
+ </div>
742
+ <div>
743
+ <div className="text-xs font-medium uppercase text-muted-foreground">
744
+ {commonT('labels.totalHours')}
745
+ </div>
746
+ <div className="mt-1 text-sm">
747
+ {selectedApproval.timesheetTotalHours != null
748
+ ? `${selectedApproval.timesheetTotalHours}h`
749
+ : commonT('labels.notAvailable')}
750
+ </div>
751
+ </div>
752
+ <div className="sm:col-span-2">
753
+ <div className="text-xs font-medium uppercase text-muted-foreground">
754
+ {t('details.projects')}
755
+ </div>
756
+ <div className="mt-1 rounded-lg border p-3 text-sm">
757
+ {selectedApproval.timesheetProjectNames ||
758
+ commonT('labels.notAvailable')}
759
+ </div>
760
+ </div>
761
+ </div>
762
+
763
+ <div>
764
+ <div className="text-xs font-medium uppercase text-muted-foreground">
765
+ {t('details.entriesTitle')}
766
+ </div>
767
+ {isDetailLoading ? (<div className="mt-3 flex items-center gap-2 text-sm text-muted-foreground">
768
+ <lucide_react_1.Loader2 className="size-4 animate-spin"/>
769
+ {t('details.loadingEntries')}
770
+ </div>) : (<div className="mt-2 space-y-3">
771
+ {((_e = selectedApproval.entries) !== null && _e !== void 0 ? _e : []).length ? (((_f = selectedApproval.entries) !== null && _f !== void 0 ? _f : []).map((entry) => (<div key={entry.id} className="rounded-lg border p-3">
772
+ <div className="flex flex-wrap items-start justify-between gap-3">
773
+ <div>
774
+ <div className="font-medium">
775
+ {entry.taskName ||
776
+ entry.activityLabel ||
777
+ commonT('labels.unassigned')}
778
+ </div>
779
+ <div className="text-xs text-muted-foreground">
780
+ {[entry.projectName, entry.roleLabel]
781
+ .filter(Boolean)
782
+ .join(' • ') ||
783
+ commonT('labels.unassigned')}
784
+ </div>
785
+ </div>
786
+ <div className="text-sm text-muted-foreground">
787
+ {formatEntryDuration(entry.durationMinutes, entry.hours)}
788
+ </div>
789
+ </div>
790
+ <div className="mt-2 text-xs text-muted-foreground">
791
+ {formatDateLabel(entry.workDate)}
792
+ </div>
793
+ <div className="mt-2 text-sm">
794
+ {entry.description || commonT('labels.noNotes')}
795
+ </div>
796
+ </div>))) : (<div className="rounded-lg border p-3 text-sm text-muted-foreground">
797
+ {t('details.noEntries')}
798
+ </div>)}
799
+ </div>)}
800
+ </div>
801
+ </>) : null}
802
+
803
+ {selectedApproval.targetType === 'time_off_request' ? (<div className="grid gap-4 sm:grid-cols-2">
804
+ <div className="sm:col-span-2">
805
+ <div className="text-xs font-medium uppercase text-muted-foreground">
806
+ {t('details.period')}
807
+ </div>
808
+ <div className="mt-1 text-sm">
809
+ {[
810
+ (0, format_1.formatDate)(selectedApproval.timeOffStartDate),
811
+ (0, format_1.formatDate)(selectedApproval.timeOffEndDate),
812
+ ]
813
+ .filter(Boolean)
814
+ .join(' – ') || '—'}
815
+ </div>
816
+ </div>
817
+ <div>
818
+ <div className="text-xs font-medium uppercase text-muted-foreground">
819
+ {commonT('labels.requestType')}
820
+ </div>
821
+ <div className="mt-1 text-sm">
822
+ {getTimeOffTypeLabel(selectedApproval.timeOffType)}
823
+ </div>
824
+ </div>
825
+ <div className="sm:col-span-2">
826
+ <div className="text-xs font-medium uppercase text-muted-foreground">
827
+ {commonT('labels.reason')}
828
+ </div>
829
+ <div className="mt-1 rounded-lg border p-3 text-sm">
830
+ {selectedApproval.timeOffReason ||
831
+ commonT('labels.noNotes')}
832
+ </div>
833
+ </div>
834
+ </div>) : null}
835
+
836
+ {selectedApproval.targetType === 'schedule_adjustment_request' ? (<>
837
+ <div className="grid gap-4 sm:grid-cols-2">
838
+ <div className="sm:col-span-2">
839
+ <div className="text-xs font-medium uppercase text-muted-foreground">
840
+ {t('details.period')}
841
+ </div>
842
+ <div className="mt-1 text-sm">
843
+ {[
844
+ (0, format_1.formatDate)(selectedApproval.scheduleStartDate),
845
+ (0, format_1.formatDate)(selectedApproval.scheduleEndDate),
846
+ ]
847
+ .filter(Boolean)
848
+ .join(' – ') || '—'}
849
+ </div>
850
+ </div>
851
+ <div>
852
+ <div className="text-xs font-medium uppercase text-muted-foreground">
853
+ {commonT('labels.requestScope')}
854
+ </div>
855
+ <div className="mt-1 text-sm">
856
+ {getScheduleScopeLabel(selectedApproval.scheduleRequestScope)}
857
+ </div>
858
+ </div>
859
+ <div className="sm:col-span-2">
860
+ <div className="text-xs font-medium uppercase text-muted-foreground">
861
+ {commonT('labels.reason')}
862
+ </div>
863
+ <div className="mt-1 rounded-lg border p-3 text-sm">
864
+ {selectedApproval.scheduleReason ||
865
+ commonT('labels.noNotes')}
866
+ </div>
867
+ </div>
868
+ </div>
869
+
870
+ {isDetailLoading ? (<div className="flex items-center gap-2 text-sm text-muted-foreground">
871
+ <lucide_react_1.Loader2 className="size-4 animate-spin"/>
872
+ {t('details.loadingSchedule')}
873
+ </div>) : (<div className="grid gap-4 sm:grid-cols-2">
874
+ <div>
875
+ <div className="mb-2 text-xs font-medium uppercase tracking-wide text-muted-foreground">
876
+ {t('details.currentSchedule')}
877
+ </div>
878
+ <div className="rounded-lg border p-3">
879
+ <SchedulePanel days={(_g = selectedApproval.currentSchedule) !== null && _g !== void 0 ? _g : []} locale={currentLocaleCode} emptyLabel={commonT('labels.notAssigned')}/>
880
+ </div>
881
+ </div>
882
+ <div>
883
+ <div className="mb-2 text-xs font-medium uppercase tracking-wide text-muted-foreground">
884
+ {t('details.requestedSchedule')}
885
+ </div>
886
+ <div className="rounded-lg border p-3">
887
+ <SchedulePanel days={(_h = selectedApproval.days) !== null && _h !== void 0 ? _h : []} locale={currentLocaleCode} emptyLabel={commonT('labels.notAssigned')}/>
888
+ </div>
889
+ </div>
890
+ </div>)}
891
+ </>) : null}
892
+
893
+ <div>
894
+ <div className="text-xs font-medium uppercase text-muted-foreground">
895
+ {commonT('labels.decisionNote')}
896
+ </div>
897
+ <div className="mt-1 rounded-lg border p-3 text-sm">
898
+ {selectedApproval.decisionNote || commonT('labels.noNotes')}
899
+ </div>
900
+ </div>
901
+ </div>) : null}
902
+ </sheet_1.SheetContent>
903
+ </sheet_1.Sheet>
904
+
905
+ <dialog_1.Dialog open={Boolean(pendingDecision)} onOpenChange={(open) => {
906
+ if (!open) {
907
+ setPendingDecision(null);
908
+ setDecisionNote('');
909
+ }
910
+ }}>
911
+ <dialog_1.DialogContent className="max-w-150">
912
+ <dialog_1.DialogHeader>
913
+ <dialog_1.DialogTitle>
914
+ {(pendingDecision === null || pendingDecision === void 0 ? void 0 : pendingDecision.action) === 'approve'
915
+ ? t('dialog.approveTitle')
916
+ : t('dialog.rejectTitle')}
917
+ </dialog_1.DialogTitle>
918
+ <dialog_1.DialogDescription>
919
+ {pendingDecision
920
+ ? t('dialog.description', {
921
+ target: getTargetLabel(pendingDecision.approval),
922
+ requester: pendingDecision.approval.requesterName,
923
+ })
924
+ : ''}
925
+ </dialog_1.DialogDescription>
926
+ </dialog_1.DialogHeader>
927
+
928
+ <div className="space-y-2">
929
+ <label className="text-sm font-medium">
930
+ {commonT('labels.noteOptional')}
931
+ </label>
932
+ <textarea_1.Textarea rows={4} value={decisionNote} placeholder={t('dialog.notePlaceholder')} onChange={(event) => setDecisionNote(event.target.value)}/>
933
+ </div>
934
+
935
+ <dialog_1.DialogFooter>
936
+ <button_1.Button variant="outline" onClick={() => {
937
+ setPendingDecision(null);
938
+ setDecisionNote('');
939
+ }}>
940
+ {commonT('actions.cancel')}
941
+ </button_1.Button>
942
+ <button_1.Button variant={(pendingDecision === null || pendingDecision === void 0 ? void 0 : pendingDecision.action) === 'approve'
943
+ ? 'default'
944
+ : 'destructive'} onClick={() => void decide()}>
945
+ {(pendingDecision === null || pendingDecision === void 0 ? void 0 : pendingDecision.action) === 'approve'
946
+ ? commonT('actions.approve')
947
+ : commonT('actions.reject')}
948
+ </button_1.Button>
949
+ </dialog_1.DialogFooter>
950
+ </dialog_1.DialogContent>
951
+ </dialog_1.Dialog>
952
+ </entity_list_1.Page>);
953
+ }
954
+ //# sourceMappingURL=page.js.map