@hed-hog/operations 0.0.330 → 0.0.331

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 (281) hide show
  1. package/README.md +5 -5
  2. package/dist/controllers/operations-collaborators.controller.d.ts +7 -216
  3. package/dist/controllers/operations-collaborators.controller.d.ts.map +1 -1
  4. package/dist/controllers/operations-contracts.controller.d.ts +6 -6
  5. package/dist/controllers/operations-projects.controller.d.ts +25 -0
  6. package/dist/controllers/operations-projects.controller.d.ts.map +1 -1
  7. package/dist/controllers/operations-projects.controller.js +48 -0
  8. package/dist/controllers/operations-projects.controller.js.map +1 -1
  9. package/dist/controllers/operations-reports.controller.d.ts +1 -1
  10. package/dist/controllers/operations-tasks.controller.d.ts +34 -9
  11. package/dist/controllers/operations-tasks.controller.d.ts.map +1 -1
  12. package/dist/controllers/operations-tasks.controller.js +43 -32
  13. package/dist/controllers/operations-tasks.controller.js.map +1 -1
  14. package/dist/controllers/operations-timesheets.controller.d.ts +9 -9
  15. package/dist/dashboard/components/DashboardLayout.d.ts +30 -0
  16. package/dist/dashboard/components/DashboardLayout.d.ts.map +1 -0
  17. package/dist/dashboard/components/DashboardLayout.js +87 -0
  18. package/dist/dashboard/components/DashboardLayout.js.map +1 -0
  19. package/dist/dashboard/components/widget-registry.d.ts +23 -0
  20. package/dist/dashboard/components/widget-registry.d.ts.map +1 -0
  21. package/dist/dashboard/components/widget-registry.js +245 -0
  22. package/dist/dashboard/components/widget-registry.js.map +1 -0
  23. package/dist/dashboard/hooks/useDashboardData.d.ts +20 -0
  24. package/dist/dashboard/hooks/useDashboardData.d.ts.map +1 -0
  25. package/dist/dashboard/hooks/useDashboardData.js +24 -0
  26. package/dist/dashboard/hooks/useDashboardData.js.map +1 -0
  27. package/dist/dashboard/types/widgets.types.d.ts +233 -0
  28. package/dist/dashboard/types/widgets.types.d.ts.map +1 -0
  29. package/dist/dashboard/types/widgets.types.js +6 -0
  30. package/dist/dashboard/types/widgets.types.js.map +1 -0
  31. package/dist/dashboard/widgets/CapacityDistribution.d.ts +23 -0
  32. package/dist/dashboard/widgets/CapacityDistribution.d.ts.map +1 -0
  33. package/dist/dashboard/widgets/CapacityDistribution.js +11 -0
  34. package/dist/dashboard/widgets/CapacityDistribution.js.map +1 -0
  35. package/dist/dashboard/widgets/EffortByProject.d.ts +22 -0
  36. package/dist/dashboard/widgets/EffortByProject.d.ts.map +1 -0
  37. package/dist/dashboard/widgets/EffortByProject.js +11 -0
  38. package/dist/dashboard/widgets/EffortByProject.js.map +1 -0
  39. package/dist/dashboard/widgets/HeadcountByArea.d.ts +24 -0
  40. package/dist/dashboard/widgets/HeadcountByArea.d.ts.map +1 -0
  41. package/dist/dashboard/widgets/HeadcountByArea.js +11 -0
  42. package/dist/dashboard/widgets/HeadcountByArea.js.map +1 -0
  43. package/dist/dashboard/widgets/ManagedProjectsStatus.d.ts +18 -0
  44. package/dist/dashboard/widgets/ManagedProjectsStatus.d.ts.map +1 -0
  45. package/dist/dashboard/widgets/ManagedProjectsStatus.js +12 -0
  46. package/dist/dashboard/widgets/ManagedProjectsStatus.js.map +1 -0
  47. package/dist/dashboard/widgets/MyHoursPeriodKpi.d.ts +22 -0
  48. package/dist/dashboard/widgets/MyHoursPeriodKpi.d.ts.map +1 -0
  49. package/dist/dashboard/widgets/MyHoursPeriodKpi.js +12 -0
  50. package/dist/dashboard/widgets/MyHoursPeriodKpi.js.map +1 -0
  51. package/dist/dashboard/widgets/MyOpenRequestsKpi.d.ts +19 -0
  52. package/dist/dashboard/widgets/MyOpenRequestsKpi.d.ts.map +1 -0
  53. package/dist/dashboard/widgets/MyOpenRequestsKpi.js +17 -0
  54. package/dist/dashboard/widgets/MyOpenRequestsKpi.js.map +1 -0
  55. package/dist/dashboard/widgets/MyPendingRequestsList.d.ts +23 -0
  56. package/dist/dashboard/widgets/MyPendingRequestsList.d.ts.map +1 -0
  57. package/dist/dashboard/widgets/MyPendingRequestsList.js +14 -0
  58. package/dist/dashboard/widgets/MyPendingRequestsList.js.map +1 -0
  59. package/dist/dashboard/widgets/MyProjectAllocationsKpi.d.ts +22 -0
  60. package/dist/dashboard/widgets/MyProjectAllocationsKpi.d.ts.map +1 -0
  61. package/dist/dashboard/widgets/MyProjectAllocationsKpi.js +11 -0
  62. package/dist/dashboard/widgets/MyProjectAllocationsKpi.js.map +1 -0
  63. package/dist/dashboard/widgets/MyQuickActions.d.ts +23 -0
  64. package/dist/dashboard/widgets/MyQuickActions.d.ts.map +1 -0
  65. package/dist/dashboard/widgets/MyQuickActions.js +18 -0
  66. package/dist/dashboard/widgets/MyQuickActions.js.map +1 -0
  67. package/dist/dashboard/widgets/MyRelevantDeadlines.d.ts +23 -0
  68. package/dist/dashboard/widgets/MyRelevantDeadlines.d.ts.map +1 -0
  69. package/dist/dashboard/widgets/MyRelevantDeadlines.js +22 -0
  70. package/dist/dashboard/widgets/MyRelevantDeadlines.js.map +1 -0
  71. package/dist/dashboard/widgets/MyTimesheetStatusKpi.d.ts +17 -0
  72. package/dist/dashboard/widgets/MyTimesheetStatusKpi.d.ts.map +1 -0
  73. package/dist/dashboard/widgets/MyTimesheetStatusKpi.js +11 -0
  74. package/dist/dashboard/widgets/MyTimesheetStatusKpi.js.map +1 -0
  75. package/dist/dashboard/widgets/MyWeeklyJourney.d.ts +21 -0
  76. package/dist/dashboard/widgets/MyWeeklyJourney.d.ts.map +1 -0
  77. package/dist/dashboard/widgets/MyWeeklyJourney.js +19 -0
  78. package/dist/dashboard/widgets/MyWeeklyJourney.js.map +1 -0
  79. package/dist/dashboard/widgets/PortfolioCostsKpi.d.ts +19 -0
  80. package/dist/dashboard/widgets/PortfolioCostsKpi.d.ts.map +1 -0
  81. package/dist/dashboard/widgets/PortfolioCostsKpi.js +12 -0
  82. package/dist/dashboard/widgets/PortfolioCostsKpi.js.map +1 -0
  83. package/dist/dashboard/widgets/PortfolioEffortKpi.d.ts +18 -0
  84. package/dist/dashboard/widgets/PortfolioEffortKpi.d.ts.map +1 -0
  85. package/dist/dashboard/widgets/PortfolioEffortKpi.js +8 -0
  86. package/dist/dashboard/widgets/PortfolioEffortKpi.js.map +1 -0
  87. package/dist/dashboard/widgets/PortfolioProjectsKpi.d.ts +22 -0
  88. package/dist/dashboard/widgets/PortfolioProjectsKpi.d.ts.map +1 -0
  89. package/dist/dashboard/widgets/PortfolioProjectsKpi.js +56 -0
  90. package/dist/dashboard/widgets/PortfolioProjectsKpi.js.map +1 -0
  91. package/dist/dashboard/widgets/PortfolioRiskKpi.d.ts +19 -0
  92. package/dist/dashboard/widgets/PortfolioRiskKpi.d.ts.map +1 -0
  93. package/dist/dashboard/widgets/PortfolioRiskKpi.js +11 -0
  94. package/dist/dashboard/widgets/PortfolioRiskKpi.js.map +1 -0
  95. package/dist/dashboard/widgets/ProjectStatusOverview.d.ts +19 -0
  96. package/dist/dashboard/widgets/ProjectStatusOverview.d.ts.map +1 -0
  97. package/dist/dashboard/widgets/ProjectStatusOverview.js +18 -0
  98. package/dist/dashboard/widgets/ProjectStatusOverview.js.map +1 -0
  99. package/dist/dashboard/widgets/StrategicDeadlines.d.ts +24 -0
  100. package/dist/dashboard/widgets/StrategicDeadlines.d.ts.map +1 -0
  101. package/dist/dashboard/widgets/StrategicDeadlines.js +22 -0
  102. package/dist/dashboard/widgets/StrategicDeadlines.js.map +1 -0
  103. package/dist/dashboard/widgets/TeamApprovalQueue.d.ts +24 -0
  104. package/dist/dashboard/widgets/TeamApprovalQueue.d.ts.map +1 -0
  105. package/dist/dashboard/widgets/TeamApprovalQueue.js +12 -0
  106. package/dist/dashboard/widgets/TeamApprovalQueue.js.map +1 -0
  107. package/dist/dashboard/widgets/TeamCapacityKpi.d.ts +18 -0
  108. package/dist/dashboard/widgets/TeamCapacityKpi.d.ts.map +1 -0
  109. package/dist/dashboard/widgets/TeamCapacityKpi.js +19 -0
  110. package/dist/dashboard/widgets/TeamCapacityKpi.js.map +1 -0
  111. package/dist/dashboard/widgets/TeamHeadcountKpi.d.ts +22 -0
  112. package/dist/dashboard/widgets/TeamHeadcountKpi.d.ts.map +1 -0
  113. package/dist/dashboard/widgets/TeamHeadcountKpi.js +56 -0
  114. package/dist/dashboard/widgets/TeamHeadcountKpi.js.map +1 -0
  115. package/dist/dashboard/widgets/TeamHoursKpi.d.ts +19 -0
  116. package/dist/dashboard/widgets/TeamHoursKpi.d.ts.map +1 -0
  117. package/dist/dashboard/widgets/TeamHoursKpi.js +13 -0
  118. package/dist/dashboard/widgets/TeamHoursKpi.js.map +1 -0
  119. package/dist/dashboard/widgets/TeamPendingApprovalsKpi.d.ts +20 -0
  120. package/dist/dashboard/widgets/TeamPendingApprovalsKpi.d.ts.map +1 -0
  121. package/dist/dashboard/widgets/TeamPendingApprovalsKpi.js +11 -0
  122. package/dist/dashboard/widgets/TeamPendingApprovalsKpi.js.map +1 -0
  123. package/dist/dashboard/widgets/TeamUtilizationOverview.d.ts +18 -0
  124. package/dist/dashboard/widgets/TeamUtilizationOverview.d.ts.map +1 -0
  125. package/dist/dashboard/widgets/TeamUtilizationOverview.js +17 -0
  126. package/dist/dashboard/widgets/TeamUtilizationOverview.js.map +1 -0
  127. package/dist/dashboard/widgets/TeamWorkloadAlerts.d.ts +24 -0
  128. package/dist/dashboard/widgets/TeamWorkloadAlerts.d.ts.map +1 -0
  129. package/dist/dashboard/widgets/TeamWorkloadAlerts.js +19 -0
  130. package/dist/dashboard/widgets/TeamWorkloadAlerts.js.map +1 -0
  131. package/dist/dashboard/widgets/index.d.ts +24 -0
  132. package/dist/dashboard/widgets/index.d.ts.map +1 -0
  133. package/dist/dashboard/widgets/index.js +54 -0
  134. package/dist/dashboard/widgets/index.js.map +1 -0
  135. package/dist/dto/create-collaborator.dto.d.ts +0 -1
  136. package/dist/dto/create-collaborator.dto.d.ts.map +1 -1
  137. package/dist/dto/create-collaborator.dto.js +0 -6
  138. package/dist/dto/create-collaborator.dto.js.map +1 -1
  139. package/dist/index.d.ts +2 -0
  140. package/dist/index.d.ts.map +1 -1
  141. package/dist/index.js +2 -0
  142. package/dist/index.js.map +1 -1
  143. package/dist/operations.controller.d.ts +42 -0
  144. package/dist/operations.controller.d.ts.map +1 -1
  145. package/dist/operations.service.d.ts +182 -268
  146. package/dist/operations.service.d.ts.map +1 -1
  147. package/dist/operations.service.js +2147 -1337
  148. package/dist/operations.service.js.map +1 -1
  149. package/dist/operations.service.spec.js +345 -174
  150. package/dist/operations.service.spec.js.map +1 -1
  151. package/hedhog/data/dashboard_component.yaml +66 -0
  152. package/hedhog/data/dashboard_item.yaml +25 -25
  153. package/hedhog/data/route.yaml +61 -0
  154. package/hedhog/frontend/app/_components/collaborator-form-screen.tsx.ejs +39 -99
  155. package/hedhog/frontend/app/_components/collaborator-picker.tsx.ejs +158 -0
  156. package/hedhog/frontend/app/_components/my-project-summary-screen.tsx.ejs +314 -116
  157. package/hedhog/frontend/app/_components/project-assignments-tab.tsx.ejs +434 -449
  158. package/hedhog/frontend/app/_components/project-details-screen.tsx.ejs +289 -412
  159. package/hedhog/frontend/app/_components/project-file-attachments.tsx.ejs +371 -0
  160. package/hedhog/frontend/app/_components/project-form-screen.tsx.ejs +426 -374
  161. package/hedhog/frontend/app/_components/task-detail-sheet.tsx.ejs +803 -581
  162. package/hedhog/frontend/app/_components/task-file-attachments.tsx.ejs +4 -1
  163. package/hedhog/frontend/app/_components/task-form-fields.tsx.ejs +406 -0
  164. package/hedhog/frontend/app/_components/task-form-sheet.tsx.ejs +629 -784
  165. package/hedhog/frontend/app/_components/task-info-display.tsx.ejs +137 -0
  166. package/hedhog/frontend/app/_components/timesheet-entry-create-sheet.tsx.ejs +306 -0
  167. package/hedhog/frontend/app/_lib/api.ts.ejs +480 -476
  168. package/hedhog/frontend/app/_lib/types.ts.ejs +66 -5
  169. package/hedhog/frontend/app/_lib/utils/format.ts.ejs +0 -2
  170. package/hedhog/frontend/app/_lib/utils/task-ui.ts.ejs +43 -0
  171. package/hedhog/frontend/app/approvals/page.tsx.ejs +6 -1
  172. package/hedhog/frontend/app/collaborator-types/page.tsx.ejs +6 -1
  173. package/hedhog/frontend/app/collaborators/page.tsx.ejs +59 -8
  174. package/hedhog/frontend/app/contracts/page.tsx.ejs +29 -8
  175. package/hedhog/frontend/app/dashboard/widgets/CapacityDistribution.tsx.ejs +84 -0
  176. package/hedhog/frontend/app/dashboard/widgets/EffortByProject.tsx.ejs +85 -0
  177. package/hedhog/frontend/app/dashboard/widgets/HeadcountByArea.tsx.ejs +101 -0
  178. package/hedhog/frontend/app/dashboard/widgets/ManagedProjectsStatus.tsx.ejs +113 -0
  179. package/hedhog/frontend/app/dashboard/widgets/MyHoursPeriodKpi.tsx.ejs +87 -0
  180. package/hedhog/frontend/app/dashboard/widgets/MyOpenRequestsKpi.tsx.ejs +97 -0
  181. package/hedhog/frontend/app/dashboard/widgets/MyPendingRequestsList.tsx.ejs +99 -0
  182. package/hedhog/frontend/app/dashboard/widgets/MyProjectAllocationsKpi.tsx.ejs +78 -0
  183. package/hedhog/frontend/app/dashboard/widgets/MyQuickActions.tsx.ejs +130 -0
  184. package/hedhog/frontend/app/dashboard/widgets/MyRelevantDeadlines.tsx.ejs +144 -0
  185. package/hedhog/frontend/app/dashboard/widgets/MyTimesheetStatusKpi.tsx.ejs +78 -0
  186. package/hedhog/frontend/app/dashboard/widgets/MyWeeklyJourney.tsx.ejs +99 -0
  187. package/hedhog/frontend/app/dashboard/widgets/PortfolioCostsKpi.tsx.ejs +112 -0
  188. package/hedhog/frontend/app/dashboard/widgets/PortfolioEffortKpi.tsx.ejs +93 -0
  189. package/hedhog/frontend/app/dashboard/widgets/PortfolioProjectsKpi.tsx.ejs +96 -0
  190. package/hedhog/frontend/app/dashboard/widgets/PortfolioRiskKpi.tsx.ejs +115 -0
  191. package/hedhog/frontend/app/dashboard/widgets/ProjectStatusOverview.tsx.ejs +120 -0
  192. package/hedhog/frontend/app/dashboard/widgets/StrategicDeadlines.tsx.ejs +146 -0
  193. package/hedhog/frontend/app/dashboard/widgets/TeamApprovalQueue.tsx.ejs +108 -0
  194. package/hedhog/frontend/app/dashboard/widgets/TeamCapacityKpi.tsx.ejs +97 -0
  195. package/hedhog/frontend/app/dashboard/widgets/TeamHeadcountKpi.tsx.ejs +100 -0
  196. package/hedhog/frontend/app/dashboard/widgets/TeamHoursKpi.tsx.ejs +104 -0
  197. package/hedhog/frontend/app/dashboard/widgets/TeamPendingApprovalsKpi.tsx.ejs +110 -0
  198. package/hedhog/frontend/app/dashboard/widgets/TeamUtilizationOverview.tsx.ejs +115 -0
  199. package/hedhog/frontend/app/dashboard/widgets/TeamWorkloadAlerts.tsx.ejs +117 -0
  200. package/hedhog/frontend/app/dashboard/widgets/index.ts.ejs +26 -0
  201. package/hedhog/frontend/app/departments/page.tsx.ejs +6 -1
  202. package/hedhog/frontend/app/my-projects/page.tsx.ejs +14 -10
  203. package/hedhog/frontend/app/my-tasks/page.tsx.ejs +328 -105
  204. package/hedhog/frontend/app/project-cost-categories/page.tsx.ejs +58 -52
  205. package/hedhog/frontend/app/project-cost-types/page.tsx.ejs +58 -51
  206. package/hedhog/frontend/app/projects/page.tsx.ejs +376 -30
  207. package/hedhog/frontend/app/schedule-adjustments/page.tsx.ejs +6 -1
  208. package/hedhog/frontend/app/time-off/page.tsx.ejs +6 -1
  209. package/hedhog/frontend/app/timesheets/page.tsx.ejs +10 -4
  210. package/hedhog/frontend/messages/en.json +238 -46
  211. package/hedhog/frontend/messages/operations/en.json +61 -52
  212. package/hedhog/frontend/messages/operations/pt.json +59 -43
  213. package/hedhog/frontend/messages/pt.json +238 -46
  214. package/hedhog/frontend/widgets/capacity-distribution.tsx.ejs +17 -0
  215. package/hedhog/frontend/widgets/effort-by-project.tsx.ejs +17 -0
  216. package/hedhog/frontend/widgets/headcount-by-area.tsx.ejs +17 -0
  217. package/hedhog/frontend/widgets/index.ts.ejs +25 -0
  218. package/hedhog/frontend/widgets/managed-projects-status.tsx.ejs +17 -0
  219. package/hedhog/frontend/widgets/my-hours-period-kpi.tsx.ejs +17 -0
  220. package/hedhog/frontend/widgets/my-open-requests-kpi.tsx.ejs +17 -0
  221. package/hedhog/frontend/widgets/my-pending-requests-list.tsx.ejs +17 -0
  222. package/hedhog/frontend/widgets/my-project-allocations-kpi.tsx.ejs +17 -0
  223. package/hedhog/frontend/widgets/my-quick-actions.tsx.ejs +17 -0
  224. package/hedhog/frontend/widgets/my-relevant-deadlines.tsx.ejs +17 -0
  225. package/hedhog/frontend/widgets/my-timesheet-status-kpi.tsx.ejs +17 -0
  226. package/hedhog/frontend/widgets/my-weekly-journey.tsx.ejs +17 -0
  227. package/hedhog/frontend/widgets/portfolio-costs-kpi.tsx.ejs +17 -0
  228. package/hedhog/frontend/widgets/portfolio-effort-kpi.tsx.ejs +17 -0
  229. package/hedhog/frontend/widgets/portfolio-projects-kpi.tsx.ejs +17 -0
  230. package/hedhog/frontend/widgets/portfolio-risk-kpi.tsx.ejs +17 -0
  231. package/hedhog/frontend/widgets/project-status-overview.tsx.ejs +17 -0
  232. package/hedhog/frontend/widgets/shared-operations-widget.tsx.ejs +170 -0
  233. package/hedhog/frontend/widgets/strategic-deadlines.tsx.ejs +17 -0
  234. package/hedhog/frontend/widgets/team-approval-queue.tsx.ejs +17 -0
  235. package/hedhog/frontend/widgets/team-capacity-kpi.tsx.ejs +17 -0
  236. package/hedhog/frontend/widgets/team-headcount-kpi.tsx.ejs +17 -0
  237. package/hedhog/frontend/widgets/team-hours-kpi.tsx.ejs +17 -0
  238. package/hedhog/frontend/widgets/team-pending-approvals-kpi.tsx.ejs +17 -0
  239. package/hedhog/frontend/widgets/team-utilization-overview.tsx.ejs +17 -0
  240. package/hedhog/frontend/widgets/team-workload-alerts.tsx.ejs +17 -0
  241. package/hedhog/table/operations_collaborator.yaml +8 -13
  242. package/hedhog/table/operations_project.yaml +1 -1
  243. package/hedhog/table/operations_project_file.yaml +23 -0
  244. package/hedhog/table/operations_task.yaml +76 -69
  245. package/hedhog/table/operations_task_activity.yaml +51 -0
  246. package/package.json +6 -5
  247. package/src/controllers/operations-projects.controller.ts +41 -8
  248. package/src/controllers/operations-tasks.controller.ts +156 -166
  249. package/src/dashboard/README.md +214 -0
  250. package/src/dashboard/components/DashboardLayout.tsx +131 -0
  251. package/src/dashboard/components/widget-registry.ts +255 -0
  252. package/src/dashboard/hooks/useDashboardData.ts +29 -0
  253. package/src/dashboard/types/widgets.types.ts +237 -0
  254. package/src/dashboard/widgets/CapacityDistribution.tsx +56 -0
  255. package/src/dashboard/widgets/EffortByProject.tsx +51 -0
  256. package/src/dashboard/widgets/HeadcountByArea.tsx +57 -0
  257. package/src/dashboard/widgets/ManagedProjectsStatus.tsx +53 -0
  258. package/src/dashboard/widgets/MyHoursPeriodKpi.tsx +87 -0
  259. package/src/dashboard/widgets/MyOpenRequestsKpi.tsx +51 -0
  260. package/src/dashboard/widgets/MyPendingRequestsList.tsx +63 -0
  261. package/src/dashboard/widgets/MyProjectAllocationsKpi.tsx +57 -0
  262. package/src/dashboard/widgets/MyQuickActions.tsx +62 -0
  263. package/src/dashboard/widgets/MyRelevantDeadlines.tsx +84 -0
  264. package/src/dashboard/widgets/MyTimesheetStatusKpi.tsx +65 -0
  265. package/src/dashboard/widgets/MyWeeklyJourney.tsx +57 -0
  266. package/src/dashboard/widgets/PortfolioCostsKpi.tsx +48 -0
  267. package/src/dashboard/widgets/PortfolioEffortKpi.tsx +41 -0
  268. package/src/dashboard/widgets/PortfolioRiskKpi.tsx +50 -0
  269. package/src/dashboard/widgets/ProjectStatusOverview.tsx +52 -0
  270. package/src/dashboard/widgets/StrategicDeadlines.tsx +93 -0
  271. package/src/dashboard/widgets/TeamApprovalQueue.tsx +70 -0
  272. package/src/dashboard/widgets/TeamCapacityKpi.tsx +50 -0
  273. package/src/dashboard/widgets/TeamHoursKpi.tsx +51 -0
  274. package/src/dashboard/widgets/TeamPendingApprovalsKpi.tsx +53 -0
  275. package/src/dashboard/widgets/TeamUtilizationOverview.tsx +62 -0
  276. package/src/dashboard/widgets/TeamWorkloadAlerts.tsx +81 -0
  277. package/src/dashboard/widgets/index.ts +26 -0
  278. package/src/dto/create-collaborator.dto.ts +4 -11
  279. package/src/index.ts +3 -0
  280. package/src/operations.service.spec.ts +988 -764
  281. package/src/operations.service.ts +4277 -2535
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectStatusOverview.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/ProjectStatusOverview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,0BAA0B;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACnG,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAkC/D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const ProjectStatusOverview = ({ title, data = { planning: 0, inProgress: 0, review: 0, completed: 0, onHold: 0 }, style, }) => {
7
+ const total = data.planning + data.inProgress + data.review + data.completed + data.onHold;
8
+ const statuses = [
9
+ { label: 'Planejamento', count: data.planning, emoji: '📋', color: 'blue', width: total > 0 ? (data.planning / total) * 100 : 0 },
10
+ { label: 'Em Progresso', count: data.inProgress, emoji: '🚀', color: 'green', width: total > 0 ? (data.inProgress / total) * 100 : 0 },
11
+ { label: 'Em Revisão', count: data.review, emoji: '👀', color: 'yellow', width: total > 0 ? (data.review / total) * 100 : 0 },
12
+ { label: 'Concluído', count: data.completed, emoji: '✅', color: 'purple', width: total > 0 ? (data.completed / total) * 100 : 0 },
13
+ { label: 'Suspenso', count: data.onHold, emoji: '⏸️', color: 'gray', width: total > 0 ? (data.onHold / total) * 100 : 0 },
14
+ ];
15
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-violet-50 rounded-lg shadow-sm p-4 border border-violet-100", style: style, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-sm font-medium text-gray-700", children: title }), (0, jsx_runtime_1.jsx)(lucide_react_1.CheckCircle2, { className: "w-4 h-4 text-violet-600" })] }), (0, jsx_runtime_1.jsx)("div", { className: "flex gap-1 h-8 rounded-lg overflow-hidden bg-gray-100 border border-gray-200 mb-3", children: statuses.map((status) => status.width > 0 && (0, jsx_runtime_1.jsx)("div", { className: `bg-${status.color}-500 hover:brightness-110 transition-all`, style: { width: `${status.width}%` } }, status.label)) }), (0, jsx_runtime_1.jsx)("div", { className: "grid grid-cols-2 gap-2", children: statuses.map((status) => ((0, jsx_runtime_1.jsxs)("div", { className: `bg-${status.color}-50 rounded-lg p-3 border border-${status.color}-200`, children: [(0, jsx_runtime_1.jsx)("div", { className: "text-lg mb-1", children: status.emoji }), (0, jsx_runtime_1.jsx)("div", { className: `text-2xl font-bold text-${status.color}-600`, children: status.count }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600 truncate", children: status.label })] }, status.label))) }), (0, jsx_runtime_1.jsx)("div", { className: "pt-2 border-t border-violet-100 mt-3", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between text-xs", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-gray-700 font-medium", children: "Total de Projetos" }), (0, jsx_runtime_1.jsx)("span", { className: "text-lg font-bold text-violet-600", children: total })] }) })] }));
16
+ };
17
+ exports.default = ProjectStatusOverview;
18
+ //# sourceMappingURL=ProjectStatusOverview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectStatusOverview.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/ProjectStatusOverview.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ interface StrategicDeadline {
3
+ id: string;
4
+ title: string;
5
+ deadline: string;
6
+ daysLeft: number;
7
+ status: 'on-track' | 'at-risk' | 'critical';
8
+ priority: 'high' | 'critical';
9
+ impact: string;
10
+ }
11
+ interface StrategicDeadlinesProps {
12
+ slug: string;
13
+ title: string;
14
+ roleSlug: string;
15
+ width?: number;
16
+ height?: number;
17
+ data?: {
18
+ deadlines: StrategicDeadline[];
19
+ };
20
+ style?: React.CSSProperties;
21
+ }
22
+ declare const StrategicDeadlines: React.FC<StrategicDeadlinesProps>;
23
+ export default StrategicDeadlines;
24
+ //# sourceMappingURL=StrategicDeadlines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrategicDeadlines.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/StrategicDeadlines.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;IAC5C,QAAQ,EAAE,MAAM,GAAG,UAAU,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,SAAS,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC;IAC1C,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAiEzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const StrategicDeadlines = ({ title, data = { deadlines: [] }, style, }) => {
7
+ const criticalCount = data.deadlines.filter(d => d.status === 'critical').length;
8
+ const atRiskCount = data.deadlines.filter(d => d.status === 'at-risk').length;
9
+ const getStatusColor = (status) => {
10
+ switch (status) {
11
+ case 'critical': return { bg: 'bg-red-50', border: 'border-red-300 border-l-4', dot: 'bg-red-600 animate-pulse' };
12
+ case 'at-risk': return { bg: 'bg-yellow-50', border: 'border-yellow-300 border-l-4', dot: 'bg-yellow-600' };
13
+ default: return { bg: 'bg-green-50', border: 'border-green-300 border-l-4', dot: 'bg-green-600' };
14
+ }
15
+ };
16
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `bg-linear-to-br from-white to-rose-50 rounded-lg shadow-sm p-4 border ${criticalCount > 0 ? 'border-rose-400 border-2' : 'border-rose-100'} transition-all`, style: style, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-sm font-medium text-gray-700", children: title }), (0, jsx_runtime_1.jsx)(lucide_react_1.Flag, { className: "w-4 h-4 text-rose-600" })] }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-3", children: data.deadlines.length === 0 ? ((0, jsx_runtime_1.jsxs)("div", { className: "text-center py-8", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.CheckCircle2, { className: "w-8 h-8 text-green-500 mx-auto mb-2" }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-gray-600", children: "Nenhum prazo cr\u00EDtico" })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(criticalCount > 0 || atRiskCount > 0) && ((0, jsx_runtime_1.jsxs)("div", { className: "flex gap-2 mb-2", children: [criticalCount > 0 && (0, jsx_runtime_1.jsxs)("div", { className: "bg-red-100 rounded-lg px-3 py-1 text-xs font-bold text-red-700 flex items-center gap-1", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.AlertTriangle, { className: "w-3 h-3" }), criticalCount, " cr\u00EDtico", criticalCount !== 1 ? 's' : ''] }), atRiskCount > 0 && (0, jsx_runtime_1.jsxs)("div", { className: "bg-yellow-100 rounded-lg px-3 py-1 text-xs font-bold text-yellow-700", children: [atRiskCount, " em risco"] })] })), (0, jsx_runtime_1.jsx)("div", { className: "space-y-2 max-h-72 overflow-y-auto", children: data.deadlines.map((deadline) => {
17
+ const colors = getStatusColor(deadline.status);
18
+ return ((0, jsx_runtime_1.jsx)("div", { className: `${colors.bg} rounded-lg p-3 border ${colors.border} hover:shadow-md transition-all`, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: `w-3 h-3 rounded-full ${colors.dot} flex-shrink-0 mt-1` }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start justify-between gap-2 mb-1", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-sm font-bold text-gray-900 truncate", children: deadline.title }), (0, jsx_runtime_1.jsx)("span", { className: `text-xs font-bold px-2 py-1 rounded-full flex-shrink-0 ${deadline.priority === 'critical' ? 'bg-red-100 text-red-700' : 'bg-orange-100 text-orange-700'}`, children: deadline.priority === 'critical' ? '🔴' : '🟠' })] }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs text-gray-700 mb-2", children: deadline.impact }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between text-xs", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-gray-600", children: deadline.deadline }), (0, jsx_runtime_1.jsx)("span", { className: `font-bold ${deadline.daysLeft <= 0 ? 'text-red-600' : deadline.daysLeft <= 7 ? 'text-orange-600' : 'text-gray-600'}`, children: deadline.daysLeft <= 0 ? '❌ Vencido' : `⏱️ ${deadline.daysLeft}d` })] })] })] }) }, deadline.id));
19
+ }) })] })) })] }));
20
+ };
21
+ exports.default = StrategicDeadlines;
22
+ //# sourceMappingURL=StrategicDeadlines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StrategicDeadlines.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/StrategicDeadlines.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ interface ApprovalItem {
3
+ id: string;
4
+ type: string;
5
+ submittedBy: string;
6
+ submittedDate: string;
7
+ daysWaiting: number;
8
+ priority: 'high' | 'normal';
9
+ }
10
+ interface TeamApprovalQueueProps {
11
+ slug: string;
12
+ title: string;
13
+ roleSlug: string;
14
+ width?: number;
15
+ height?: number;
16
+ data?: {
17
+ queue: ApprovalItem[];
18
+ totalPending: number;
19
+ };
20
+ style?: React.CSSProperties;
21
+ }
22
+ declare const TeamApprovalQueue: React.FC<TeamApprovalQueueProps>;
23
+ export default TeamApprovalQueue;
24
+ //# sourceMappingURL=TeamApprovalQueue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamApprovalQueue.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamApprovalQueue.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC7B;AAED,UAAU,sBAAsB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,YAAY,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA2CvD,CAAC;AAEF,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const TeamApprovalQueue = ({ title, data = { queue: [], totalPending: 0 }, style, }) => {
7
+ const getTypeIcon = (type) => ({ timesheet: '⏱️', expense: '💰', vacation: '🏖️', schedule: '📅' }[type] || '📋');
8
+ const getTypeLabel = (type) => ({ timesheet: 'Timesheet', expense: 'Despesa', vacation: 'Férias', schedule: 'Ajuste' }[type] || type);
9
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-purple-50 rounded-lg shadow-sm p-4 border border-purple-100", style: style, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-sm font-medium text-gray-700", children: title }), (0, jsx_runtime_1.jsx)("span", { className: "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-bold bg-purple-100 text-purple-800", children: data.totalPending })] }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-2 max-h-80 overflow-y-auto", children: data.queue.length === 0 ? ((0, jsx_runtime_1.jsxs)("div", { className: "text-center py-8", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.CheckCircle2, { className: "w-8 h-8 text-green-500 mx-auto mb-2" }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-gray-600", children: "Fila de aprova\u00E7\u00F5es vazia" })] })) : (data.queue.map((item) => ((0, jsx_runtime_1.jsxs)("div", { className: `rounded-lg p-3 border transition-all ${item.priority === 'high' ? 'bg-red-50 border-red-300 border-l-4' : 'bg-blue-50 border-blue-200'}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-lg", children: getTypeIcon(item.type) }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-sm font-medium text-gray-900 truncate", children: getTypeLabel(item.type) }), item.priority === 'high' && (0, jsx_runtime_1.jsx)("span", { className: "text-xs font-bold bg-red-100 text-red-700 px-2 py-1 rounded", children: "\uD83D\uDD34 Alta" })] }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-1 text-xs", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1 text-gray-700", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.User, { className: "w-3 h-3" }), (0, jsx_runtime_1.jsx)("span", { className: "truncate", children: item.submittedBy })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1 text-gray-700", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Calendar, { className: "w-3 h-3" }), (0, jsx_runtime_1.jsx)("span", { children: item.submittedDate })] }), (0, jsx_runtime_1.jsxs)("div", { className: `font-semibold ${item.daysWaiting > 14 ? 'text-red-600' : item.daysWaiting > 7 ? 'text-yellow-600' : 'text-blue-600'}`, children: [item.daysWaiting, "d"] })] })] })] }, item.id)))) }), (0, jsx_runtime_1.jsx)("div", { className: "mt-3 pt-3 border-t border-purple-100", children: (0, jsx_runtime_1.jsxs)("p", { className: "text-xs text-gray-600", children: ["\uD83D\uDCA1 ", (0, jsx_runtime_1.jsx)("span", { className: "font-semibold", children: "Dica:" }), " Itens com \uD83D\uDD34 Alta prioridade precisam de aten\u00E7\u00E3o imediata"] }) })] }));
10
+ };
11
+ exports.default = TeamApprovalQueue;
12
+ //# sourceMappingURL=TeamApprovalQueue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamApprovalQueue.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamApprovalQueue.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ interface TeamCapacityKpiProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ totalCapacity: number;
10
+ allocatedCapacity: number;
11
+ availableCapacity: number;
12
+ utilizationPercent: number;
13
+ };
14
+ style?: React.CSSProperties;
15
+ }
16
+ declare const TeamCapacityKpi: React.FC<TeamCapacityKpiProps>;
17
+ export default TeamCapacityKpi;
18
+ //# sourceMappingURL=TeamCapacityKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamCapacityKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamCapacityKpi.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,oBAAoB;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,CAAC;IACnH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAgCnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const TeamCapacityKpi = ({ title, data = { totalCapacity: 100, allocatedCapacity: 0, availableCapacity: 100, utilizationPercent: 0 }, style, }) => {
7
+ const getUtilizationColor = () => {
8
+ if (data.utilizationPercent > 95)
9
+ return 'from-red-500 to-red-600';
10
+ if (data.utilizationPercent > 85)
11
+ return 'from-yellow-500 to-yellow-600';
12
+ if (data.utilizationPercent > 70)
13
+ return 'from-green-500 to-green-600';
14
+ return 'from-blue-500 to-blue-600';
15
+ };
16
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-indigo-50 rounded-lg shadow-sm p-4 border border-indigo-100", style: style, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-sm font-medium text-gray-700", children: title }), (0, jsx_runtime_1.jsx)(lucide_react_1.Zap, { className: "w-4 h-4 text-indigo-600" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between items-center", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-xs font-medium text-gray-700", children: "Utiliza\u00E7\u00E3o" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-sm font-bold text-indigo-600", children: [data.utilizationPercent, "%"] })] }), (0, jsx_runtime_1.jsx)("div", { className: "relative w-full h-5 bg-gray-200 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: `h-full bg-linear-to-r ${getUtilizationColor()} transition-all duration-500 rounded-full`, style: { width: `${Math.min(data.utilizationPercent, 100)}%` } }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between text-xs text-gray-600", children: [(0, jsx_runtime_1.jsxs)("span", { children: [data.allocatedCapacity, "h alocado"] }), (0, jsx_runtime_1.jsxs)("span", { children: [data.totalCapacity, "h total"] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "bg-indigo-100 rounded-lg p-3 border border-indigo-300", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-indigo-700 mb-1", children: "Dispon\u00EDvel" }), (0, jsx_runtime_1.jsxs)("div", { className: "text-2xl font-bold text-indigo-600", children: [data.availableCapacity, "h"] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-purple-100 rounded-lg p-3 border border-purple-300", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-purple-700 mb-1", children: "Status" }), (0, jsx_runtime_1.jsx)("div", { className: `text-sm font-bold ${data.utilizationPercent > 95 ? 'text-red-600' : data.utilizationPercent > 85 ? 'text-yellow-600' : 'text-green-600'}`, children: data.utilizationPercent > 95 ? 'Crítica' : data.utilizationPercent > 85 ? 'Alta' : data.utilizationPercent > 70 ? 'Ótima' : 'Normal' })] })] })] })] }));
17
+ };
18
+ exports.default = TeamCapacityKpi;
19
+ //# sourceMappingURL=TeamCapacityKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamCapacityKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamCapacityKpi.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAA0C;AAY1C,MAAM,eAAe,GAAmC,CAAC,EACvD,KAAK,EACL,IAAI,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,iBAAiB,EAAE,GAAG,EAAE,kBAAkB,EAAE,CAAC,EAAE,EAClG,KAAK,GACN,EAAE,EAAE;IACH,MAAM,mBAAmB,GAAG,GAAG,EAAE;QAC/B,IAAI,IAAI,CAAC,kBAAkB,GAAG,EAAE;YAAE,OAAO,yBAAyB,CAAC;QACnE,IAAI,IAAI,CAAC,kBAAkB,GAAG,EAAE;YAAE,OAAO,+BAA+B,CAAC;QACzE,IAAI,IAAI,CAAC,kBAAkB,GAAG,EAAE;YAAE,OAAO,6BAA6B,CAAC;QACvE,OAAO,2BAA2B,CAAC;IACrC,CAAC,CAAC;IAEF,OAAO,CACL,iCAAK,SAAS,EAAC,2FAA2F,EAAC,KAAK,EAAE,KAAK,aACrH,iCAAK,SAAS,EAAC,wCAAwC,aAAC,+BAAI,SAAS,EAAC,mCAAmC,YAAE,KAAK,GAAM,EAAA,uBAAC,kBAAG,IAAC,SAAS,EAAC,yBAAyB,GAAG,IAAM,EACvK,iCAAK,SAAS,EAAC,WAAW,aACxB,iCAAK,SAAS,EAAC,WAAW,aACxB,iCAAK,SAAS,EAAC,mCAAmC,aAAC,iCAAM,SAAS,EAAC,mCAAmC,qCAAkB,EAAA,kCAAM,SAAS,EAAC,mCAAmC,aAAE,IAAI,CAAC,kBAAkB,SAAS,IAAM,EACnN,gCAAK,SAAS,EAAC,8DAA8D,YAC3E,gCAAK,SAAS,EAAE,yBAAyB,mBAAmB,EAAE,2CAA2C,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAI,GACzK,EACN,iCAAK,SAAS,EAAC,4CAA4C,aAAC,6CAAO,IAAI,CAAC,iBAAiB,iBAAiB,EAAA,6CAAO,IAAI,CAAC,aAAa,eAAe,IAAM,IACpJ,EACN,iCAAK,SAAS,EAAC,wBAAwB,aACrC,iCAAK,SAAS,EAAC,uDAAuD,aAAC,gCAAK,SAAS,EAAC,8BAA8B,gCAAiB,EAAA,iCAAK,SAAS,EAAC,oCAAoC,aAAE,IAAI,CAAC,iBAAiB,SAAQ,IAAM,EAC9N,iCAAK,SAAS,EAAC,uDAAuD,aAAC,gCAAK,SAAS,EAAC,8BAA8B,uBAAa,EAAA,gCAAK,SAAS,EAAE,qBAAqB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,EAAE,YACxR,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,GACjI,IAAM,IACR,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Widget KPI: Headcount do Time
3
+ * Mostra colaboradores ativos sob gestão
4
+ * Para: admin-operations-supervisor
5
+ */
6
+ import React from 'react';
7
+ interface TeamHeadcountKpiProps {
8
+ slug: string;
9
+ title: string;
10
+ roleSlug: string;
11
+ width?: number;
12
+ height?: number;
13
+ data?: {
14
+ total: number;
15
+ active: number;
16
+ onLeave: number;
17
+ };
18
+ style?: React.CSSProperties;
19
+ }
20
+ declare const TeamHeadcountKpi: React.FC<TeamHeadcountKpiProps>;
21
+ export default TeamHeadcountKpi;
22
+ //# sourceMappingURL=TeamHeadcountKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamHeadcountKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamHeadcountKpi.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,qBAAqB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAuDrD,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ /**
8
+ * Widget KPI: Headcount do Time
9
+ * Mostra colaboradores ativos sob gestão
10
+ * Para: admin-operations-supervisor
11
+ */
12
+ const react_1 = __importDefault(require("react"));
13
+ const TeamHeadcountKpi = ({ title, data = { total: 0, active: 0, onLeave: 0 }, style, }) => {
14
+ const availabilityPercent = data.total > 0
15
+ ? Math.round((data.active / data.total) * 100)
16
+ : 0;
17
+ return (<div className="bg-white rounded-lg shadow-sm p-4 border border-gray-200" style={style}>
18
+ <h3 className="text-sm font-medium text-gray-700 mb-3">{title}</h3>
19
+
20
+ <div className="space-y-2">
21
+ {/* Métrica principal */}
22
+ <div className="flex items-baseline gap-2">
23
+ <span className="text-3xl font-bold text-indigo-600">
24
+ {data.active}
25
+ </span>
26
+ <span className="text-sm text-gray-600">
27
+ de {data.total} ativos
28
+ </span>
29
+ </div>
30
+
31
+ {/* Breakdown */}
32
+ <div className="pt-2 space-y-1 text-xs">
33
+ <div className="flex justify-between">
34
+ <span className="text-gray-600">Disponíveis:</span>
35
+ <span className="font-medium text-green-600">{data.active}</span>
36
+ </div>
37
+ <div className="flex justify-between">
38
+ <span className="text-gray-600">Em licença:</span>
39
+ <span className="font-medium text-orange-600">{data.onLeave}</span>
40
+ </div>
41
+ </div>
42
+
43
+ {/* Status indicator */}
44
+ <div className="mt-3 flex items-center gap-2">
45
+ <div className={`w-3 h-3 rounded-full ${availabilityPercent >= 80 ? 'bg-green-500' :
46
+ availabilityPercent >= 60 ? 'bg-yellow-500' :
47
+ 'bg-red-500'}`}/>
48
+ <span className="text-xs text-gray-600">
49
+ {availabilityPercent}% disponibilidade
50
+ </span>
51
+ </div>
52
+ </div>
53
+ </div>);
54
+ };
55
+ exports.default = TeamHeadcountKpi;
56
+ //# sourceMappingURL=TeamHeadcountKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamHeadcountKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamHeadcountKpi.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;AAEb;;;;GAIG;AAEH,kDAA0B;AAgB1B,MAAM,gBAAgB,GAAoC,CAAC,EACzD,KAAK,EACL,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAC1C,KAAK,GACN,EAAE,EAAE;IACH,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;QACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;QAC9C,CAAC,CAAC,CAAC,CAAC;IAEN,OAAO,CACL,CAAC,GAAG,CACF,SAAS,CAAC,0DAA0D,CACpE,KAAK,CAAC,CAAC,KAAK,CAAC,CAEb;MAAA,CAAC,EAAE,CAAC,SAAS,CAAC,wCAAwC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAElE;;MAAA,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CACxB;QAAA,CAAC,uBAAuB,CACxB;QAAA,CAAC,GAAG,CAAC,SAAS,CAAC,2BAA2B,CACxC;UAAA,CAAC,IAAI,CAAC,SAAS,CAAC,oCAAoC,CAClD;YAAA,CAAC,IAAI,CAAC,MAAM,CACd;UAAA,EAAE,IAAI,CACN;UAAA,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CACrC;eAAG,CAAC,IAAI,CAAC,KAAK,CAAE;UAClB,EAAE,IAAI,CACR;QAAA,EAAE,GAAG,CAEL;;QAAA,CAAC,eAAe,CAChB;QAAA,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CACrC;UAAA,CAAC,GAAG,CAAC,SAAS,CAAC,sBAAsB,CACnC;YAAA,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,YAAY,EAAE,IAAI,CAClD;YAAA,CAAC,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAClE;UAAA,EAAE,GAAG,CACL;UAAA,CAAC,GAAG,CAAC,SAAS,CAAC,sBAAsB,CACnC;YAAA,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CACjD;YAAA,CAAC,IAAI,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CACpE;UAAA,EAAE,GAAG,CACP;QAAA,EAAE,GAAG,CAEL;;QAAA,CAAC,sBAAsB,CACvB;QAAA,CAAC,GAAG,CAAC,SAAS,CAAC,8BAA8B,CAC3C;UAAA,CAAC,GAAG,CACF,SAAS,CAAC,CAAC,wBACT,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC5C,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBAC7C,YACF,EAAE,CAAC,EAEL;UAAA,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CACrC;YAAA,CAAC,mBAAmB,CAAC;UACvB,EAAE,IAAI,CACR;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ interface TeamHoursKpiProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ totalHours: number;
10
+ targetHours: number;
11
+ teamMembers: number;
12
+ avgHoursPerMember: number;
13
+ variance: number;
14
+ };
15
+ style?: React.CSSProperties;
16
+ }
17
+ declare const TeamHoursKpi: React.FC<TeamHoursKpiProps>;
18
+ export default TeamHoursKpi;
19
+ //# sourceMappingURL=TeamHoursKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamHoursKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamHoursKpi.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACrH,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAiC7C,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const TeamHoursKpi = ({ title, data = { totalHours: 0, targetHours: 0, teamMembers: 0, avgHoursPerMember: 0, variance: 0 }, style, }) => {
7
+ const hoursPercent = Math.round((data.totalHours / data.targetHours) * 100);
8
+ const isAboveTarget = data.totalHours > data.targetHours;
9
+ const varianceSign = data.variance >= 0 ? '+' : '';
10
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-blue-50 rounded-lg shadow-sm p-4 border border-blue-100", style: style, children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-sm font-medium text-gray-700 mb-4", children: title }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between items-center", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-xs font-medium text-gray-700", children: "Horas Registradas" }), (0, jsx_runtime_1.jsxs)("span", { className: `text-sm font-bold px-2 py-1 rounded-full ${isAboveTarget ? 'bg-green-100 text-green-700' : hoursPercent >= 90 ? 'bg-blue-100 text-blue-700' : 'bg-yellow-100 text-yellow-700'}`, children: [hoursPercent, "%"] })] }), (0, jsx_runtime_1.jsx)("div", { className: "relative w-full h-4 bg-gray-200 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: `h-full transition-all duration-500 ease-out rounded-full ${isAboveTarget ? 'bg-linear-to-r from-green-400 to-green-600' : 'bg-linear-to-r from-blue-400 to-blue-600'}`, style: { width: `${Math.min(hoursPercent, 100)}%` } }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between text-xs text-gray-600", children: [(0, jsx_runtime_1.jsxs)("span", { children: [data.totalHours, "h registrado"] }), (0, jsx_runtime_1.jsxs)("span", { children: [data.targetHours, "h meta"] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 gap-2 bg-blue-50 rounded-lg p-3 border border-blue-100", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600 mb-1", children: "Colaboradores" }), (0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-blue-600", children: data.teamMembers })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600 mb-1", children: "M\u00E9dia/Pessoa" }), (0, jsx_runtime_1.jsxs)("div", { className: "text-2xl font-bold text-blue-600", children: [data.avgHoursPerMember, "h"] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 p-3 bg-linear-to-r from-blue-100 to-blue-50 rounded-lg border border-blue-200", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.TrendingUp, { className: `w-5 h-5 ${isAboveTarget ? 'text-green-600' : 'text-blue-600'}` }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600", children: "Varia\u00E7\u00E3o da Meta" }), (0, jsx_runtime_1.jsxs)("div", { className: `text-sm font-bold ${isAboveTarget ? 'text-green-600' : 'text-blue-600'}`, children: [varianceSign, data.variance, "%"] })] })] })] })] }));
11
+ };
12
+ exports.default = TeamHoursKpi;
13
+ //# sourceMappingURL=TeamHoursKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamHoursKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamHoursKpi.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAAiD;AAYjD,MAAM,YAAY,GAAgC,CAAC,EACjD,KAAK,EACL,IAAI,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC3F,KAAK,GACN,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;IACzD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,OAAO,CACL,iCAAK,SAAS,EAAC,uFAAuF,EAAC,KAAK,EAAE,KAAK,aACjH,+BAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,EACnE,iCAAK,SAAS,EAAC,WAAW,aACxB,iCAAK,SAAS,EAAC,WAAW,aACxB,iCAAK,SAAS,EAAC,mCAAmC,aAChD,iCAAM,SAAS,EAAC,mCAAmC,kCAAyB,EAC5E,kCAAM,SAAS,EAAE,4CAA4C,aAAa,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,+BAA+B,EAAE,aAAG,YAAY,SAAS,IACrN,EACN,gCAAK,SAAS,EAAC,8DAA8D,YAC3E,gCAAK,SAAS,EAAE,4DAA4D,aAAa,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,0CAA0C,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,GAAG,EAAE,GAAI,GAC5O,EACN,iCAAK,SAAS,EAAC,4CAA4C,aAAC,6CAAO,IAAI,CAAC,UAAU,oBAAoB,EAAA,6CAAO,IAAI,CAAC,WAAW,cAAc,IAAM,IAC7I,EACN,iCAAK,SAAS,EAAC,yEAAyE,aACtF,4CAAK,gCAAK,SAAS,EAAC,4BAA4B,8BAAoB,EAAA,gCAAK,SAAS,EAAC,kCAAkC,YAAE,IAAI,CAAC,WAAW,GAAO,IAAM,EACpJ,4CAAK,gCAAK,SAAS,EAAC,4BAA4B,kCAAmB,EAAA,iCAAK,SAAS,EAAC,kCAAkC,aAAE,IAAI,CAAC,iBAAiB,SAAQ,IAAM,IACtJ,EACN,iCAAK,SAAS,EAAC,uGAAuG,aACpH,uBAAC,yBAAU,IAAC,SAAS,EAAE,WAAW,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,EAAE,GAAI,EAC1F,4CAAK,gCAAK,SAAS,EAAC,uBAAuB,2CAAuB,EAAA,iCAAK,SAAS,EAAE,qBAAqB,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,EAAE,aAAG,YAAY,EAAE,IAAI,CAAC,QAAQ,SAAQ,IAAM,IACnM,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,YAAY,CAAC"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ interface TeamPendingApprovalsKpiProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ totalPending: number;
10
+ urgent: number;
11
+ timesheets: number;
12
+ expenses: number;
13
+ requests: number;
14
+ avgWaitingDays: number;
15
+ };
16
+ style?: React.CSSProperties;
17
+ }
18
+ declare const TeamPendingApprovalsKpi: React.FC<TeamPendingApprovalsKpiProps>;
19
+ export default TeamPendingApprovalsKpi;
20
+ //# sourceMappingURL=TeamPendingApprovalsKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamPendingApprovalsKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamPendingApprovalsKpi.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,4BAA4B;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAChI,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAmCnE,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const TeamPendingApprovalsKpi = ({ title, data = { totalPending: 0, urgent: 0, timesheets: 0, expenses: 0, requests: 0, avgWaitingDays: 0 }, style, }) => {
7
+ const hasUrgent = data.urgent > 0;
8
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `bg-linear-to-br from-white to-red-50 rounded-lg shadow-sm p-4 border ${hasUrgent ? 'border-red-400 border-2' : 'border-red-100'} transition-all`, style: style, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-sm font-medium text-gray-700", children: title }), hasUrgent && (0, jsx_runtime_1.jsxs)("div", { className: "relative inline-block", children: [(0, jsx_runtime_1.jsx)("div", { className: "absolute inset-0 bg-red-600 rounded-full animate-pulse", style: { opacity: 0.25 } }), (0, jsx_runtime_1.jsx)(lucide_react_1.AlertTriangle, { className: "w-5 h-5 text-red-600 relative" })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-linear-to-r from-red-500 to-red-600 rounded-lg p-4 text-white mb-3", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-sm opacity-90", children: "Aguardando Aprova\u00E7\u00E3o" }), (0, jsx_runtime_1.jsx)("div", { className: "text-4xl font-bold", children: data.totalPending })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.CheckCircle2, { className: "w-12 h-12 opacity-30" })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-3 gap-2 mb-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "bg-blue-50 rounded-lg p-2 border border-blue-200", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-blue-600", children: data.timesheets }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600", children: "Timesheets" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-green-50 rounded-lg p-2 border border-green-200", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-green-600", children: data.expenses }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600", children: "Despesas" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-purple-50 rounded-lg p-2 border border-purple-200", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-purple-600", children: data.requests }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600", children: "Solicita\u00E7\u00F5es" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-2 text-xs border-t border-red-100 pt-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.AlertTriangle, { className: "w-4 h-4 text-red-600" }), (0, jsx_runtime_1.jsx)("span", { className: "text-gray-600", children: "Urgentes:" })] }), (0, jsx_runtime_1.jsx)("span", { className: `font-bold px-2 py-1 rounded ${data.urgent > 5 ? 'bg-red-100 text-red-700' : 'bg-yellow-100 text-yellow-700'}`, children: data.urgent })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Clock, { className: "w-4 h-4 text-gray-400" }), (0, jsx_runtime_1.jsx)("span", { className: "text-gray-600", children: "Tempo m\u00E9dio:" })] }), (0, jsx_runtime_1.jsxs)("span", { className: "font-semibold text-gray-900", children: [data.avgWaitingDays, " dias"] })] })] })] }));
9
+ };
10
+ exports.default = TeamPendingApprovalsKpi;
11
+ //# sourceMappingURL=TeamPendingApprovalsKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamPendingApprovalsKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamPendingApprovalsKpi.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAAkE;AAYlE,MAAM,uBAAuB,GAA2C,CAAC,EACvE,KAAK,EACL,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,EACjG,KAAK,GACN,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,OAAO,CACL,iCAAK,SAAS,EAAE,wEAAwE,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,iBAAiB,EAAE,KAAK,EAAE,KAAK,aAC7K,iCAAK,SAAS,EAAC,wCAAwC,aACrD,+BAAI,SAAS,EAAC,mCAAmC,YAAE,KAAK,GAAM,EAC7D,SAAS,IAAI,iCAAK,SAAS,EAAC,uBAAuB,aAAC,gCAAK,SAAS,EAAC,wDAAwD,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAI,EAAA,uBAAC,4BAAa,IAAC,SAAS,EAAC,+BAA+B,GAAG,IAAM,IACtN,EACN,gCAAK,SAAS,EAAC,uEAAuE,YACpF,iCAAK,SAAS,EAAC,mCAAmC,aAChD,4CAAK,gCAAK,SAAS,EAAC,oBAAoB,+CAA2B,EAAA,gCAAK,SAAS,EAAC,oBAAoB,YAAE,IAAI,CAAC,YAAY,GAAO,IAAM,EACtI,uBAAC,2BAAY,IAAC,SAAS,EAAC,sBAAsB,GAAG,IAC7C,GACF,EACN,iCAAK,SAAS,EAAC,6BAA6B,aAC1C,iCAAK,SAAS,EAAC,kDAAkD,aAAC,gCAAK,SAAS,EAAC,kCAAkC,YAAE,IAAI,CAAC,UAAU,GAAO,EAAA,gCAAK,SAAS,EAAC,uBAAuB,2BAAiB,IAAM,EACxM,iCAAK,SAAS,EAAC,oDAAoD,aAAC,gCAAK,SAAS,EAAC,mCAAmC,YAAE,IAAI,CAAC,QAAQ,GAAO,EAAA,gCAAK,SAAS,EAAC,uBAAuB,yBAAe,IAAM,EACvM,iCAAK,SAAS,EAAC,sDAAsD,aAAC,gCAAK,SAAS,EAAC,oCAAoC,YAAE,IAAI,CAAC,QAAQ,GAAO,EAAA,gCAAK,SAAS,EAAC,uBAAuB,uCAAmB,IAAM,IAC1M,EACN,iCAAK,SAAS,EAAC,gDAAgD,aAC7D,iCAAK,SAAS,EAAC,mCAAmC,aAChD,iCAAK,SAAS,EAAC,yBAAyB,aAAC,uBAAC,4BAAa,IAAC,SAAS,EAAC,sBAAsB,GAAG,EAAA,iCAAM,SAAS,EAAC,eAAe,0BAAiB,IAAM,EACjJ,iCAAM,SAAS,EAAE,+BAA+B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,+BAA+B,EAAE,YAAG,IAAI,CAAC,MAAM,GAAQ,IACjJ,EACN,iCAAK,SAAS,EAAC,mCAAmC,aAChD,iCAAK,SAAS,EAAC,yBAAyB,aAAC,uBAAC,oBAAK,IAAC,SAAS,EAAC,uBAAuB,GAAG,EAAA,iCAAM,SAAS,EAAC,eAAe,kCAAoB,IAAM,EAC7I,kCAAM,SAAS,EAAC,6BAA6B,aAAE,IAAI,CAAC,cAAc,aAAa,IAC3E,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,uBAAuB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ interface TeamUtilizationOverviewProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ overUtilized: number;
10
+ wellUtilized: number;
11
+ underUtilized: number;
12
+ idle: number;
13
+ };
14
+ style?: React.CSSProperties;
15
+ }
16
+ declare const TeamUtilizationOverview: React.FC<TeamUtilizationOverviewProps>;
17
+ export default TeamUtilizationOverview;
18
+ //# sourceMappingURL=TeamUtilizationOverview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamUtilizationOverview.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamUtilizationOverview.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,4BAA4B;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3F,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CA4CnE,CAAC;AAEF,eAAe,uBAAuB,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const TeamUtilizationOverview = ({ title, data = { overUtilized: 0, wellUtilized: 0, underUtilized: 0, idle: 0 }, style, }) => {
7
+ const total = data.overUtilized + data.wellUtilized + data.underUtilized + data.idle;
8
+ const categories = [
9
+ { label: 'Sobre-utilizado', count: data.overUtilized, emoji: '🔴', percent: total > 0 ? Math.round((data.overUtilized / total) * 100) : 0, color: 'bg-red-500' },
10
+ { label: 'Bem utilizado', count: data.wellUtilized, emoji: '🟢', percent: total > 0 ? Math.round((data.wellUtilized / total) * 100) : 0, color: 'bg-green-500' },
11
+ { label: 'Sub-utilizado', count: data.underUtilized, emoji: '🟡', percent: total > 0 ? Math.round((data.underUtilized / total) * 100) : 0, color: 'bg-yellow-500' },
12
+ { label: 'Inativo', count: data.idle, emoji: '⚪', percent: total > 0 ? Math.round((data.idle / total) * 100) : 0, color: 'bg-gray-400' },
13
+ ];
14
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-lime-50 rounded-lg shadow-sm p-4 border border-lime-100", style: style, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-sm font-medium text-gray-700", children: title }), (0, jsx_runtime_1.jsx)(lucide_react_1.BarChart3, { className: "w-4 h-4 text-lime-600" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "space-y-3", children: categories.map((cat) => ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-1", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between", children: [(0, jsx_runtime_1.jsxs)("span", { className: "text-xs font-medium text-gray-700", children: [cat.emoji, " ", cat.label] }), (0, jsx_runtime_1.jsxs)("span", { className: "text-xs font-bold text-gray-900", children: [cat.count, " (", cat.percent, "%)"] })] }), (0, jsx_runtime_1.jsx)("div", { className: "relative w-full h-3 bg-gray-100 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: `h-full ${cat.color} transition-all duration-500 ease-out`, style: { width: `${cat.percent}%` } }) })] }, cat.label))) }), data.overUtilized > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "bg-red-50 border border-red-300 rounded-lg p-3 flex gap-2", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.AlertCircle, { className: "w-4 h-4 text-red-600 flex-shrink-0 mt-0.5" }), (0, jsx_runtime_1.jsxs)("div", { className: "text-xs text-red-700", children: [(0, jsx_runtime_1.jsxs)("p", { className: "font-semibold", children: [data.overUtilized, " colaborador(es) sobre-utilizado(s)"] }), (0, jsx_runtime_1.jsx)("p", { className: "text-red-600 mt-1", children: "Considere rebalanceamento de projetos" })] })] })), (0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-r from-lime-50 to-lime-100 rounded-lg p-3 border border-lime-200 text-center", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-xs text-gray-600 mb-1", children: "Total de Colaboradores" }), (0, jsx_runtime_1.jsx)("p", { className: "text-2xl font-bold text-lime-700", children: total })] })] })] }));
15
+ };
16
+ exports.default = TeamUtilizationOverview;
17
+ //# sourceMappingURL=TeamUtilizationOverview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamUtilizationOverview.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamUtilizationOverview.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAAsD;AAYtD,MAAM,uBAAuB,GAA2C,CAAC,EACvE,KAAK,EACL,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EACtE,KAAK,GACN,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;IACrF,MAAM,UAAU,GAAG;QACjB,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE;QAChK,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE;QAChK,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE;QACnK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;KACzI,CAAC;IAEF,OAAO,CACL,iCAAK,SAAS,EAAC,uFAAuF,EAAC,KAAK,EAAE,KAAK,aACjH,iCAAK,SAAS,EAAC,wCAAwC,aAAC,+BAAI,SAAS,EAAC,mCAAmC,YAAE,KAAK,GAAM,EAAA,uBAAC,wBAAS,IAAC,SAAS,EAAC,uBAAuB,GAAG,IAAM,EAC3K,iCAAK,SAAS,EAAC,WAAW,aACxB,gCAAK,SAAS,EAAC,WAAW,YACvB,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACvB,iCAAqB,SAAS,EAAC,WAAW,aACxC,iCAAK,SAAS,EAAC,mCAAmC,aAChD,kCAAM,SAAS,EAAC,mCAAmC,aAAE,GAAG,CAAC,KAAK,OAAG,GAAG,CAAC,KAAK,IAAQ,EAClF,kCAAM,SAAS,EAAC,iCAAiC,aAAE,GAAG,CAAC,KAAK,QAAI,GAAG,CAAC,OAAO,UAAU,IACjF,EACN,gCAAK,SAAS,EAAC,8DAA8D,YAAC,gCAAK,SAAS,EAAE,UAAU,GAAG,CAAC,KAAK,uCAAuC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,OAAO,GAAG,EAAE,GAAI,GAAM,KAL/L,GAAG,CAAC,KAAK,CAMb,CACP,CAAC,GACE,EACL,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CACxB,iCAAK,SAAS,EAAC,2DAA2D,aACxE,uBAAC,0BAAW,IAAC,SAAS,EAAC,2CAA2C,GAAG,EACrE,iCAAK,SAAS,EAAC,sBAAsB,aACnC,+BAAG,SAAS,EAAC,eAAe,aAAE,IAAI,CAAC,YAAY,2CAAwC,EACvF,8BAAG,SAAS,EAAC,mBAAmB,sDAA0C,IACtE,IACF,CACP,EACD,iCAAK,SAAS,EAAC,2FAA2F,aACxG,8BAAG,SAAS,EAAC,4BAA4B,uCAA2B,EACpE,8BAAG,SAAS,EAAC,kCAAkC,YAAE,KAAK,GAAK,IACvD,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,uBAAuB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ interface Alert {
3
+ id: string;
4
+ type: 'overload' | 'underload' | 'deadline' | 'absence';
5
+ severity: 'critical' | 'warning' | 'info';
6
+ title: string;
7
+ description: string;
8
+ affectedCount: number;
9
+ }
10
+ interface TeamWorkloadAlertsProps {
11
+ slug: string;
12
+ title: string;
13
+ roleSlug: string;
14
+ width?: number;
15
+ height?: number;
16
+ data?: {
17
+ alerts: Alert[];
18
+ criticalCount: number;
19
+ };
20
+ style?: React.CSSProperties;
21
+ }
22
+ declare const TeamWorkloadAlerts: React.FC<TeamWorkloadAlertsProps>;
23
+ export default TeamWorkloadAlerts;
24
+ //# sourceMappingURL=TeamWorkloadAlerts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamWorkloadAlerts.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamWorkloadAlerts.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,KAAK;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IACxD,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAsDzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const lucide_react_1 = require("lucide-react");
6
+ const TeamWorkloadAlerts = ({ title, data = { alerts: [], criticalCount: 0 }, style, }) => {
7
+ const getAlertIcon = (type) => ({ overload: '⚠️', underload: '📉', deadline: '⏰', absence: '👤' }[type] || '📋');
8
+ const getAlertColor = (severity) => {
9
+ switch (severity) {
10
+ case 'critical': return 'bg-red-50 border-red-300 border-l-4';
11
+ case 'warning': return 'bg-yellow-50 border-yellow-300 border-l-4';
12
+ default: return 'bg-blue-50 border-blue-300 border-l-4';
13
+ }
14
+ };
15
+ const getSeverityDot = (severity) => severity === 'critical' ? 'bg-red-500 animate-pulse' : severity === 'warning' ? 'bg-yellow-500' : 'bg-blue-500';
16
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-yellow-50 rounded-lg shadow-sm p-4 border border-yellow-100", style: style, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between mb-4", children: [(0, jsx_runtime_1.jsx)("h3", { className: "text-sm font-medium text-gray-700", children: title }), data.criticalCount > 0 && (0, jsx_runtime_1.jsx)(lucide_react_1.AlertTriangle, { className: "w-5 h-5 text-red-600 animate-pulse" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-3", children: [data.alerts.length === 0 ? ((0, jsx_runtime_1.jsxs)("div", { className: "text-center py-6", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.TrendingDown, { className: "w-8 h-8 text-green-400 mx-auto mb-2" }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-gray-600", children: "Nenhum alerta cr\u00EDtico" })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [data.criticalCount > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "bg-red-100 rounded-lg p-3 border border-red-300 flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.AlertTriangle, { className: "w-4 h-4 text-red-600 flex-shrink-0" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-xs font-bold text-red-700", children: [data.criticalCount, " alerta(s) cr\u00EDtico(s)"] })] })), (0, jsx_runtime_1.jsx)("div", { className: "space-y-2 max-h-64 overflow-y-auto", children: data.alerts.map((alert) => ((0, jsx_runtime_1.jsx)("div", { className: `rounded-lg p-3 border ${getAlertColor(alert.severity)}`, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2", children: [(0, jsx_runtime_1.jsx)("div", { className: `w-2 h-2 rounded-full ${getSeverityDot(alert.severity)} mt-1.5 flex-shrink-0` }), (0, jsx_runtime_1.jsxs)("div", { className: "flex-1", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-sm font-medium text-gray-900", children: alert.title }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs text-gray-700 my-1", children: alert.description }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1 text-xs text-gray-600", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Users, { className: "w-3 h-3" }), (0, jsx_runtime_1.jsxs)("span", { children: [alert.affectedCount, " envolvido(s)"] })] })] })] }) }, alert.id))) })] })), (0, jsx_runtime_1.jsxs)("div", { className: "pt-2 border-t border-yellow-100 text-xs text-gray-600 flex items-center gap-1", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Clock, { className: "w-3 h-3" }), (0, jsx_runtime_1.jsx)("span", { children: "\u00DAltima atualiza\u00E7\u00E3o: h\u00E1 5 min" })] })] })] }));
17
+ };
18
+ exports.default = TeamWorkloadAlerts;
19
+ //# sourceMappingURL=TeamWorkloadAlerts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TeamWorkloadAlerts.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/TeamWorkloadAlerts.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export { default as MyHoursPeriodKpi } from './MyHoursPeriodKpi';
2
+ export { default as MyTimesheetStatusKpi } from './MyTimesheetStatusKpi';
3
+ export { default as MyProjectAllocationsKpi } from './MyProjectAllocationsKpi';
4
+ export { default as MyOpenRequestsKpi } from './MyOpenRequestsKpi';
5
+ export { default as MyWeeklyJourney } from './MyWeeklyJourney';
6
+ export { default as MyRelevantDeadlines } from './MyRelevantDeadlines';
7
+ export { default as MyPendingRequestsList } from './MyPendingRequestsList';
8
+ export { default as MyQuickActions } from './MyQuickActions';
9
+ export { default as TeamPendingApprovalsKpi } from './TeamPendingApprovalsKpi';
10
+ export { default as TeamHoursKpi } from './TeamHoursKpi';
11
+ export { default as TeamCapacityKpi } from './TeamCapacityKpi';
12
+ export { default as TeamUtilizationOverview } from './TeamUtilizationOverview';
13
+ export { default as TeamWorkloadAlerts } from './TeamWorkloadAlerts';
14
+ export { default as ManagedProjectsStatus } from './ManagedProjectsStatus';
15
+ export { default as TeamApprovalQueue } from './TeamApprovalQueue';
16
+ export { default as PortfolioCostsKpi } from './PortfolioCostsKpi';
17
+ export { default as PortfolioEffortKpi } from './PortfolioEffortKpi';
18
+ export { default as PortfolioRiskKpi } from './PortfolioRiskKpi';
19
+ export { default as ProjectStatusOverview } from './ProjectStatusOverview';
20
+ export { default as EffortByProject } from './EffortByProject';
21
+ export { default as CapacityDistribution } from './CapacityDistribution';
22
+ export { default as HeadcountByArea } from './HeadcountByArea';
23
+ export { default as StrategicDeadlines } from './StrategicDeadlines';
24
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}