@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,23 @@
1
+ import React from 'react';
2
+ interface Request {
3
+ id: string;
4
+ type: string;
5
+ description: string;
6
+ submittedDate: string;
7
+ daysWaiting: number;
8
+ assignee?: string;
9
+ }
10
+ interface MyPendingRequestsListProps {
11
+ slug: string;
12
+ title: string;
13
+ roleSlug: string;
14
+ width?: number;
15
+ height?: number;
16
+ data?: {
17
+ requests: Request[];
18
+ };
19
+ style?: React.CSSProperties;
20
+ }
21
+ declare const MyPendingRequestsList: React.FC<MyPendingRequestsListProps>;
22
+ export default MyPendingRequestsList;
23
+ //# sourceMappingURL=MyPendingRequestsList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyPendingRequestsList.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyPendingRequestsList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,OAAO;IACf,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,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,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,OAAO,EAAE,CAAA;KAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAoC/D,CAAC;AAEF,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,14 @@
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 MyPendingRequestsList = ({ title, data = { requests: [] }, style, }) => {
7
+ const getTypeIcon = (type) => {
8
+ const icons = { vacation: '🏖️', schedule: '📅', expense: '💰', adjustment: '🔧' };
9
+ return icons[type] || '📋';
10
+ };
11
+ 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)("span", { className: "inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-violet-100 text-violet-800", children: data.requests.length })] }), (0, jsx_runtime_1.jsx)("div", { className: "space-y-2 max-h-72 overflow-y-auto", children: data.requests.length === 0 ? ((0, jsx_runtime_1.jsxs)("div", { className: "text-center py-8", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.FileText, { className: "w-8 h-8 text-gray-300 mx-auto mb-2" }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-gray-600", children: "Nenhuma solicita\u00E7\u00E3o pendente" })] })) : (data.requests.map((request) => ((0, jsx_runtime_1.jsxs)("div", { className: `rounded-lg p-3 border transition-all ${request.daysWaiting > 14 ? 'bg-red-50 border-red-200' : request.daysWaiting > 7 ? 'bg-yellow-50 border-yellow-200' : '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(request.type) }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1", children: (0, jsx_runtime_1.jsx)("p", { className: "text-sm font-medium text-gray-900", children: request.description }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 gap-2 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.Clock, { className: "w-3 h-3" }), (0, jsx_runtime_1.jsx)("span", { children: request.daysWaiting === 0 ? 'Hoje' : request.daysWaiting === 1 ? 'Ontem' : `${request.daysWaiting}d atrás` })] }), request.assignee && (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: request.assignee })] })] })] }, request.id)))) })] }));
12
+ };
13
+ exports.default = MyPendingRequestsList;
14
+ //# sourceMappingURL=MyPendingRequestsList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyPendingRequestsList.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyPendingRequestsList.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAAqD;AAqBrD,MAAM,qBAAqB,GAAyC,CAAC,EACnE,KAAK,EACL,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,EACvB,KAAK,GACN,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE;QACnC,MAAM,KAAK,GAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC3G,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IAC7B,CAAC,CAAC;IAEF,OAAO,CACL,iCAAK,SAAS,EAAC,2FAA2F,EAAC,KAAK,EAAE,KAAK,aACrH,iCAAK,SAAS,EAAC,wCAAwC,aACrD,+BAAI,SAAS,EAAC,mCAAmC,YAAE,KAAK,GAAM,EAC9D,iCAAM,SAAS,EAAC,uGAAuG,YAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAQ,IACjJ,EACN,gCAAK,SAAS,EAAC,oCAAoC,YAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC5B,iCAAK,SAAS,EAAC,kBAAkB,aAAC,uBAAC,uBAAQ,IAAC,SAAS,EAAC,oCAAoC,GAAG,EAAA,8BAAG,SAAS,EAAC,uBAAuB,uDAAiC,IAAM,CACzK,CAAC,CAAC,CAAC,CACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC7B,iCAAsB,SAAS,EAAE,wCAAwC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,4BAA4B,EAAE,aAC1N,iCAAK,SAAS,EAAC,6BAA6B,aAC1C,iCAAM,SAAS,EAAC,SAAS,YAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,GAAQ,EAC5D,gCAAK,SAAS,EAAC,QAAQ,YAAC,8BAAG,SAAS,EAAC,mCAAmC,YAAE,OAAO,CAAC,WAAW,GAAK,GAAM,IACpG,EACN,iCAAK,SAAS,EAAC,gCAAgC,aAC7C,iCAAK,SAAS,EAAC,uCAAuC,aAAC,uBAAC,oBAAK,IAAC,SAAS,EAAC,SAAS,GAAG,EAAA,2CAAO,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,SAAS,GAAQ,IAAM,EAClN,OAAO,CAAC,QAAQ,IAAI,iCAAK,SAAS,EAAC,uCAAuC,aAAC,uBAAC,mBAAI,IAAC,SAAS,EAAC,SAAS,GAAG,EAAA,iCAAM,SAAS,EAAC,UAAU,YAAE,OAAO,CAAC,QAAQ,GAAQ,IAAM,IAC9J,KARE,OAAO,CAAC,EAAE,CASd,CACP,CAAC,CACH,GACG,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,qBAAqB,CAAC"}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ interface MyProjectAllocationsKpiProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ activeAllocations: number;
10
+ totalCapacity: number;
11
+ usedCapacity: number;
12
+ projects: Array<{
13
+ name: string;
14
+ allocation: number;
15
+ color: string;
16
+ }>;
17
+ };
18
+ style?: React.CSSProperties;
19
+ }
20
+ declare const MyProjectAllocationsKpi: React.FC<MyProjectAllocationsKpiProps>;
21
+ export default MyProjectAllocationsKpi;
22
+ //# sourceMappingURL=MyProjectAllocationsKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyProjectAllocationsKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyProjectAllocationsKpi.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;QACL,iBAAiB,EAAE,MAAM,CAAC;QAC1B,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACtE,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,4BAA4B,CAkCnE,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 MyProjectAllocationsKpi = ({ title, data = { activeAllocations: 0, totalCapacity: 100, usedCapacity: 0, projects: [] }, style, }) => {
7
+ const capacityPercent = Math.round((data.usedCapacity / data.totalCapacity) * 100);
8
+ 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.jsx)("h3", { className: "text-sm font-medium text-gray-700 mb-4", children: title }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3 bg-indigo-50 rounded-lg p-3 mb-3", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Briefcase, { className: "w-5 h-5 text-indigo-600" }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600", children: "Projetos ativos" }), (0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-indigo-600", children: data.activeAllocations })] })] }), (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: "Capacidade" }), (0, jsx_runtime_1.jsxs)("span", { className: `text-xs font-bold px-2 py-1 rounded-full ${capacityPercent > 85 ? 'bg-red-100 text-red-700' : capacityPercent > 70 ? 'bg-yellow-100 text-yellow-700' : 'bg-green-100 text-green-700'}`, children: [capacityPercent, "%"] })] }), (0, jsx_runtime_1.jsx)("div", { className: "relative w-full h-3 bg-gray-200 rounded-full overflow-hidden", children: (0, jsx_runtime_1.jsx)("div", { className: "h-full bg-linear-to-r from-indigo-400 to-indigo-600 transition-all", style: { width: `${Math.min(capacityPercent, 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.usedCapacity, "h usado"] }), (0, jsx_runtime_1.jsxs)("span", { children: [data.totalCapacity, "h total"] })] })] })] }));
9
+ };
10
+ exports.default = MyProjectAllocationsKpi;
11
+ //# sourceMappingURL=MyProjectAllocationsKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyProjectAllocationsKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyProjectAllocationsKpi.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAAqD;AAiBrD,MAAM,uBAAuB,GAA2C,CAAC,EACvE,KAAK,EACL,IAAI,GAAG,EAAE,iBAAiB,EAAE,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,EAClF,KAAK,GACN,EAAE,EAAE;IACH,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC;IAEnF,OAAO,CACL,iCAAK,SAAS,EAAC,2FAA2F,EAAC,KAAK,EAAE,KAAK,aACrH,+BAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,EACnE,iCAAK,SAAS,EAAC,0DAA0D,aACvE,uBAAC,wBAAS,IAAC,SAAS,EAAC,yBAAyB,GAAG,EACjD,4CACE,gCAAK,SAAS,EAAC,uBAAuB,gCAAsB,EAC5D,gCAAK,SAAS,EAAC,oCAAoC,YAAE,IAAI,CAAC,iBAAiB,GAAO,IAC9E,IACF,EACN,iCAAK,SAAS,EAAC,WAAW,aACxB,iCAAK,SAAS,EAAC,mCAAmC,aAChD,iCAAM,SAAS,EAAC,mCAAmC,2BAAkB,EACrE,kCAAM,SAAS,EAAE,4CAA4C,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,eAAe,GAAG,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,6BAA6B,EAAE,aACrM,eAAe,SACX,IACH,EACN,gCAAK,SAAS,EAAC,8DAA8D,YAC3E,gCAAK,SAAS,EAAC,oEAAoE,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,GAAG,EAAE,GAAI,GAC1I,EACN,iCAAK,SAAS,EAAC,4CAA4C,aACzD,6CAAO,IAAI,CAAC,YAAY,eAAe,EACvC,6CAAO,IAAI,CAAC,aAAa,eAAe,IACpC,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,uBAAuB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ interface QuickAction {
3
+ id: string;
4
+ label: string;
5
+ icon: React.ReactNode;
6
+ color: string;
7
+ bgColor: string;
8
+ onClick?: () => void;
9
+ }
10
+ interface MyQuickActionsProps {
11
+ slug: string;
12
+ title: string;
13
+ roleSlug: string;
14
+ width?: number;
15
+ height?: number;
16
+ data?: {
17
+ actions?: QuickAction[];
18
+ };
19
+ style?: React.CSSProperties;
20
+ }
21
+ declare const MyQuickActions: React.FC<MyQuickActionsProps>;
22
+ export default MyQuickActions;
23
+ //# sourceMappingURL=MyQuickActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyQuickActions.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyQuickActions.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,UAAU,mBAAmB;IAC3B,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,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;KAAE,CAAC;IACnC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AASD,QAAA,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA4BjD,CAAC;AAEF,eAAe,cAAc,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 defaultActions = [
7
+ { id: 'timesheet', label: 'Registrar Timesheet', icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Clock, { className: "w-5 h-5" }), color: 'text-blue-600', bgColor: 'bg-blue-50 hover:bg-blue-100 border-blue-200' },
8
+ { id: 'request', label: 'Nova Solicitação', icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Plus, { className: "w-5 h-5" }), color: 'text-green-600', bgColor: 'bg-green-50 hover:bg-green-100 border-green-200' },
9
+ { id: 'vacation', label: 'Solicitar Férias', icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Send, { className: "w-5 h-5" }), color: 'text-purple-600', bgColor: 'bg-purple-50 hover:bg-purple-100 border-purple-200' },
10
+ { id: 'expense', label: 'Lançar Despesa', icon: (0, jsx_runtime_1.jsx)(lucide_react_1.FileText, { className: "w-5 h-5" }), color: 'text-orange-600', bgColor: 'bg-orange-50 hover:bg-orange-100 border-orange-200' },
11
+ ];
12
+ const MyQuickActions = ({ title, data, style, }) => {
13
+ var _a;
14
+ const actions = (_a = data === null || data === void 0 ? void 0 : data.actions) !== null && _a !== void 0 ? _a : defaultActions;
15
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-emerald-50 rounded-lg shadow-sm p-4 border border-emerald-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.jsx)("div", { className: "grid grid-cols-2 gap-2", children: actions.map((action) => ((0, jsx_runtime_1.jsxs)("button", { onClick: action.onClick, className: `${action.bgColor} border rounded-lg p-3 transition-all transform hover:scale-105 hover:shadow-md active:scale-95`, children: [(0, jsx_runtime_1.jsx)("div", { className: `${action.color} mb-2 transition-transform hover:scale-110`, children: action.icon }), (0, jsx_runtime_1.jsx)("p", { className: "text-xs font-medium text-gray-900 text-left", children: action.label })] }, action.id))) }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-4 pt-4 border-t border-emerald-100", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-xs text-gray-600 mb-2", children: "\uD83D\uDCA1 Dicas \u00FAteis:" }), (0, jsx_runtime_1.jsxs)("ul", { className: "text-xs space-y-1 text-gray-700", children: [(0, jsx_runtime_1.jsx)("li", { children: "\u2713 Complete seu timesheet toda semana" }), (0, jsx_runtime_1.jsx)("li", { children: "\u2713 Solicite f\u00E9rias com anteced\u00EAncia" }), (0, jsx_runtime_1.jsx)("li", { children: "\u2713 Registre despesas no prazo" })] })] })] }));
16
+ };
17
+ exports.default = MyQuickActions;
18
+ //# sourceMappingURL=MyQuickActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyQuickActions.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyQuickActions.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAA2D;AAqB3D,MAAM,cAAc,GAAkB;IACpC,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,qBAAqB,EAAE,IAAI,EAAE,uBAAC,oBAAK,IAAC,SAAS,EAAC,SAAS,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,8CAA8C,EAAE;IACvK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAC,mBAAI,IAAC,SAAS,EAAC,SAAS,GAAG,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,iDAAiD,EAAE;IACrK,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,uBAAC,mBAAI,IAAC,SAAS,EAAC,SAAS,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,oDAAoD,EAAE;IAC1K,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,uBAAC,uBAAQ,IAAC,SAAS,EAAC,SAAS,GAAG,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,oDAAoD,EAAE;CAC5K,CAAC;AAEF,MAAM,cAAc,GAAkC,CAAC,EACrD,KAAK,EACL,IAAI,EACJ,KAAK,GACN,EAAE,EAAE;;IACH,MAAM,OAAO,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,mCAAI,cAAc,CAAC;IAEhD,OAAO,CACL,iCAAK,SAAS,EAAC,6FAA6F,EAAC,KAAK,EAAE,KAAK,aACvH,+BAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,EACnE,gCAAK,SAAS,EAAC,wBAAwB,YACpC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CACvB,oCAAwB,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,OAAO,iGAAiG,aAC5K,gCAAK,SAAS,EAAE,GAAG,MAAM,CAAC,KAAK,4CAA4C,YAAG,MAAM,CAAC,IAAI,GAAO,EAChG,8BAAG,SAAS,EAAC,6CAA6C,YAAE,MAAM,CAAC,KAAK,GAAK,KAFlE,MAAM,CAAC,EAAE,CAGb,CACV,CAAC,GACE,EACN,iCAAK,SAAS,EAAC,uCAAuC,aACpD,8BAAG,SAAS,EAAC,4BAA4B,+CAAoB,EAC7D,gCAAI,SAAS,EAAC,iCAAiC,aAC7C,uFAA6C,EAC7C,+FAA2C,EAC3C,+EAAqC,IAClC,IACD,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React from 'react';
2
+ interface Deadline {
3
+ id: string;
4
+ title: string;
5
+ dueDate: string;
6
+ daysLeft: number;
7
+ priority: 'high' | 'medium' | 'low';
8
+ status: 'on-track' | 'at-risk' | 'critical';
9
+ }
10
+ interface MyRelevantDeadlinesProps {
11
+ slug: string;
12
+ title: string;
13
+ roleSlug: string;
14
+ width?: number;
15
+ height?: number;
16
+ data?: {
17
+ deadlines: Deadline[];
18
+ };
19
+ style?: React.CSSProperties;
20
+ }
21
+ declare const MyRelevantDeadlines: React.FC<MyRelevantDeadlinesProps>;
22
+ export default MyRelevantDeadlines;
23
+ //# sourceMappingURL=MyRelevantDeadlines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyRelevantDeadlines.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyRelevantDeadlines.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACpC,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,UAAU,CAAC;CAC7C;AAED,UAAU,wBAAwB;IAChC,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,QAAQ,EAAE,CAAA;KAAE,CAAC;IACjC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAyD3D,CAAC;AAEF,eAAe,mBAAmB,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 MyRelevantDeadlines = ({ 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', dot: 'bg-red-500 animate-pulse', text: 'text-red-700' };
12
+ case 'at-risk': return { bg: 'bg-yellow-50', border: 'border-yellow-300', dot: 'bg-yellow-500', text: 'text-yellow-700' };
13
+ default: return { bg: 'bg-green-50', border: 'border-green-300', dot: 'bg-green-500', text: 'text-green-700' };
14
+ }
15
+ };
16
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-red-50 rounded-lg shadow-sm p-4 border border-red-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 }), (criticalCount > 0 || atRiskCount > 0) && (0, jsx_runtime_1.jsx)(lucide_react_1.AlertCircle, { className: "w-4 h-4 text-red-600 animate-pulse" })] }), (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: "grid grid-cols-2 gap-2 mb-3", children: [criticalCount > 0 && (0, jsx_runtime_1.jsx)("div", { className: "bg-red-100 rounded-lg p-2 border border-red-300", children: (0, jsx_runtime_1.jsxs)("div", { className: "text-xs text-red-700 font-semibold", children: [criticalCount, " cr\u00EDtico", criticalCount !== 1 ? 's' : ''] }) }), atRiskCount > 0 && (0, jsx_runtime_1.jsx)("div", { className: "bg-yellow-100 rounded-lg p-2 border border-yellow-300", children: (0, jsx_runtime_1.jsxs)("div", { className: "text-xs text-yellow-700 font-semibold", children: [atRiskCount, " em risco"] }) })] })), (0, jsx_runtime_1.jsx)("div", { className: "space-y-2 max-h-64 overflow-y-auto", children: data.deadlines.slice(0, 5).map((deadline) => {
17
+ const colors = getStatusColor(deadline.status);
18
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `${colors.bg} rounded-lg p-3 border ${colors.border} hover:shadow-sm transition-all`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)("div", { className: `w-3 h-3 rounded-full ${colors.dot} mt-1` }), (0, jsx_runtime_1.jsx)("div", { className: "flex-1", children: (0, jsx_runtime_1.jsx)("p", { className: "text-sm font-medium text-gray-900 truncate", children: deadline.title }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between 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.Clock, { className: "w-3 h-3" }), (0, jsx_runtime_1.jsx)("span", { children: deadline.dueDate })] }), (0, jsx_runtime_1.jsx)("span", { className: `font-semibold ${deadline.daysLeft <= 0 ? 'text-red-600' : deadline.daysLeft <= 3 ? 'text-orange-600' : 'text-gray-600'}`, children: deadline.daysLeft <= 0 ? 'Vencido' : `${deadline.daysLeft}d` })] })] }, deadline.id));
19
+ }) })] })) })] }));
20
+ };
21
+ exports.default = MyRelevantDeadlines;
22
+ //# sourceMappingURL=MyRelevantDeadlines.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyRelevantDeadlines.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyRelevantDeadlines.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ interface MyTimesheetStatusKpiProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ pendingCount: number;
10
+ approvedCount: number;
11
+ rejectedCount: number;
12
+ };
13
+ style?: React.CSSProperties;
14
+ }
15
+ declare const MyTimesheetStatusKpi: React.FC<MyTimesheetStatusKpiProps>;
16
+ export default MyTimesheetStatusKpi;
17
+ //# sourceMappingURL=MyTimesheetStatusKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyTimesheetStatusKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyTimesheetStatusKpi.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,UAAU,yBAAyB;IACjC,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,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CA+C7D,CAAC;AAEF,eAAe,oBAAoB,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 MyTimesheetStatusKpi = ({ title, data = { pendingCount: 0, approvedCount: 0, rejectedCount: 0 }, style, }) => {
7
+ const total = data.pendingCount + data.approvedCount + data.rejectedCount;
8
+ 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 hover:shadow-md transition-shadow", 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: "grid grid-cols-3 gap-2", children: [(0, jsx_runtime_1.jsxs)("div", { className: "bg-yellow-50 rounded-lg p-3 border border-yellow-200", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Clock, { className: "w-4 h-4 text-yellow-600" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs font-medium text-yellow-700", children: "Pendente" })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-yellow-600", children: data.pendingCount })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-green-50 rounded-lg p-3 border border-green-200", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.CheckCircle2, { className: "w-4 h-4 text-green-600" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs font-medium text-green-700", children: "Aprovado" })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-green-600", children: data.approvedCount })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-red-50 rounded-lg p-3 border border-red-200", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 mb-2", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.AlertCircle, { className: "w-4 h-4 text-red-600" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs font-medium text-red-700", children: "Rejeitado" })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-2xl font-bold text-red-600", children: data.rejectedCount })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "pt-2 border-t border-blue-100 mt-3 space-y-2 text-xs", children: [(0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-gray-600", children: "Total:" }), (0, jsx_runtime_1.jsx)("span", { className: "font-semibold text-gray-900", children: total })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-gray-600", children: "Taxa aprova\u00E7\u00E3o:" }), (0, jsx_runtime_1.jsxs)("span", { className: `font-semibold ${total > 0 && data.approvedCount / total > 0.8 ? 'text-green-600' : 'text-yellow-600'}`, children: [total > 0 ? Math.round((data.approvedCount / total) * 100) : 0, "%"] })] })] })] }));
9
+ };
10
+ exports.default = MyTimesheetStatusKpi;
11
+ //# sourceMappingURL=MyTimesheetStatusKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyTimesheetStatusKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyTimesheetStatusKpi.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAAgE;AAYhE,MAAM,oBAAoB,GAAwC,CAAC,EACjE,KAAK,EACL,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,EAC9D,KAAK,GACN,EAAE,EAAE;IACH,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IAE1E,OAAO,CACL,iCAAK,SAAS,EAAC,yHAAyH,EAAC,KAAK,EAAE,KAAK,aACnJ,+BAAI,SAAS,EAAC,wCAAwC,YAAE,KAAK,GAAM,EACnE,iCAAK,SAAS,EAAC,wBAAwB,aACrC,iCAAK,SAAS,EAAC,sDAAsD,aACnE,iCAAK,SAAS,EAAC,8BAA8B,aAC3C,uBAAC,oBAAK,IAAC,SAAS,EAAC,yBAAyB,GAAG,EAC7C,iCAAM,SAAS,EAAC,qCAAqC,yBAAgB,IACjE,EACN,gCAAK,SAAS,EAAC,oCAAoC,YAAE,IAAI,CAAC,YAAY,GAAO,IACzE,EACN,iCAAK,SAAS,EAAC,oDAAoD,aACjE,iCAAK,SAAS,EAAC,8BAA8B,aAC3C,uBAAC,2BAAY,IAAC,SAAS,EAAC,wBAAwB,GAAG,EACnD,iCAAM,SAAS,EAAC,oCAAoC,yBAAgB,IAChE,EACN,gCAAK,SAAS,EAAC,mCAAmC,YAAE,IAAI,CAAC,aAAa,GAAO,IACzE,EACN,iCAAK,SAAS,EAAC,gDAAgD,aAC7D,iCAAK,SAAS,EAAC,8BAA8B,aAC3C,uBAAC,0BAAW,IAAC,SAAS,EAAC,sBAAsB,GAAG,EAChD,iCAAM,SAAS,EAAC,kCAAkC,0BAAiB,IAC/D,EACN,gCAAK,SAAS,EAAC,iCAAiC,YAAE,IAAI,CAAC,aAAa,GAAO,IACvE,IACF,EACN,iCAAK,SAAS,EAAC,sDAAsD,aACnE,iCAAK,SAAS,EAAC,sBAAsB,aACnC,iCAAM,SAAS,EAAC,eAAe,uBAAc,EAC7C,iCAAM,SAAS,EAAC,6BAA6B,YAAE,KAAK,GAAQ,IACxD,EACN,iCAAK,SAAS,EAAC,sBAAsB,aACnC,iCAAM,SAAS,EAAC,eAAe,0CAAuB,EACtD,kCAAM,SAAS,EAAE,iBAAiB,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,EAAE,aACrH,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAC1D,IACH,IACF,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ interface MyWeeklyJourneyProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ weekDays: Array<{
10
+ day: string;
11
+ hours: number;
12
+ status: 'completed' | 'pending' | 'off';
13
+ }>;
14
+ weekProgress: number;
15
+ targetHours: number;
16
+ };
17
+ style?: React.CSSProperties;
18
+ }
19
+ declare const MyWeeklyJourney: React.FC<MyWeeklyJourneyProps>;
20
+ export default MyWeeklyJourney;
21
+ //# sourceMappingURL=MyWeeklyJourney.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyWeeklyJourney.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyWeeklyJourney.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;QACL,QAAQ,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,KAAK,CAAA;SAAE,CAAC,CAAC;QACzF,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmCnD,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 MyWeeklyJourney = ({ title, data = { weekDays: [], weekProgress: 60, targetHours: 40 }, style, }) => {
7
+ const totalHours = data.weekDays.reduce((sum, day) => sum + day.hours, 0);
8
+ const progressPercent = Math.min(Math.round((totalHours / data.targetHours) * 100), 100);
9
+ const getStatusColor = (status) => {
10
+ switch (status) {
11
+ case 'completed': return 'bg-gradient-to-t from-green-500 to-green-400';
12
+ case 'pending': return 'bg-gradient-to-t from-gray-300 to-gray-200';
13
+ default: return 'bg-gradient-to-t from-gray-100 to-gray-50';
14
+ }
15
+ };
16
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-cyan-50 rounded-lg shadow-sm p-4 border border-cyan-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.Calendar, { className: "w-4 h-4 text-cyan-600" })] }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-2 mb-3", 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: "Progresso da Semana" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-xs font-bold text-cyan-600", children: [progressPercent, "%"] })] }), (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 bg-linear-to-r from-cyan-400 to-cyan-600 rounded-full transition-all", style: { width: `${progressPercent}%` } }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between text-xs text-gray-600", children: [(0, jsx_runtime_1.jsxs)("span", { children: [totalHours, "h registradas"] }), (0, jsx_runtime_1.jsxs)("span", { children: [data.targetHours, "h meta"] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs font-medium text-gray-700 mb-2", children: "Horas por dia" }), (0, jsx_runtime_1.jsx)("div", { className: "flex items-end justify-between gap-1 h-24 bg-gradient-to-b from-cyan-50 to-white rounded-lg p-3 border border-cyan-100", children: data.weekDays.map((day, idx) => ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center flex-1 gap-1", children: [(0, jsx_runtime_1.jsx)("div", { className: `w-full rounded-t transition-all ${getStatusColor(day.status)}`, style: { height: day.status === 'off' ? '8px' : `${Math.max((day.hours / 10) * 100, 8)}%`, minHeight: day.status === 'off' ? '8px' : '12px' } }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs font-semibold text-gray-700", children: day.day })] }, idx))) })] }));
17
+ };
18
+ exports.default = MyWeeklyJourney;
19
+ //# sourceMappingURL=MyWeeklyJourney.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MyWeeklyJourney.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/MyWeeklyJourney.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAAwC;AAgBxC,MAAM,eAAe,GAAmC,CAAC,EACvD,KAAK,EACL,IAAI,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,EAC1D,KAAK,GACN,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAEzF,MAAM,cAAc,GAAG,CAAC,MAAc,EAAE,EAAE;QACxC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,WAAW,CAAC,CAAC,OAAO,8CAA8C,CAAC;YACxE,KAAK,SAAS,CAAC,CAAC,OAAO,4CAA4C,CAAC;YACpE,OAAO,CAAC,CAAC,OAAO,2CAA2C,CAAC;QAC9D,CAAC;IACH,CAAC,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,uBAAQ,IAAC,SAAS,EAAC,uBAAuB,GAAG,IAAM,EAC1K,iCAAK,SAAS,EAAC,gBAAgB,aAC7B,iCAAK,SAAS,EAAC,mCAAmC,aAAC,iCAAM,SAAS,EAAC,mCAAmC,oCAA2B,EAAA,kCAAM,SAAS,EAAC,iCAAiC,aAAE,eAAe,SAAS,IAAM,EAClN,gCAAK,SAAS,EAAC,8DAA8D,YAAC,gCAAK,SAAS,EAAC,6EAA6E,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,eAAe,GAAG,EAAE,GAAI,GAAM,EAC5N,iCAAK,SAAS,EAAC,4CAA4C,aAAC,6CAAO,UAAU,qBAAqB,EAAA,6CAAO,IAAI,CAAC,WAAW,cAAc,IAAM,IACzI,EACN,gCAAK,SAAS,EAAC,wCAAwC,8BAAoB,EAC3E,gCAAK,SAAS,EAAC,wHAAwH,YACpI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAC/B,iCAAe,SAAS,EAAC,yCAAyC,aAChE,gCAAK,SAAS,EAAE,mCAAmC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,GAAI,EAClO,gCAAK,SAAS,EAAC,qCAAqC,YAAE,GAAG,CAAC,GAAG,GAAO,KAF5D,GAAG,CAGP,CACP,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ interface PortfolioCostsKpiProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ totalCosts: number;
10
+ budgetAmount: number;
11
+ costsByCategoryCount: number;
12
+ savingsPercent: number;
13
+ costTrend: 'up' | 'down' | 'stable';
14
+ };
15
+ style?: React.CSSProperties;
16
+ }
17
+ declare const PortfolioCostsKpi: React.FC<PortfolioCostsKpiProps>;
18
+ export default PortfolioCostsKpi;
19
+ //# sourceMappingURL=PortfolioCostsKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioCostsKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/PortfolioCostsKpi.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,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,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,oBAAoB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,QAAQ,CAAA;KAAE,CAAC;IAC/I,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CA8BvD,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 PortfolioCostsKpi = ({ title, data = { totalCosts: 0, budgetAmount: 0, costsByCategoryCount: 0, savingsPercent: 0, costTrend: 'stable' }, style, }) => {
7
+ const budgetUtilization = Math.round((data.totalCosts / data.budgetAmount) * 100);
8
+ const isBudgetHealth = budgetUtilization <= 85;
9
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-green-50 rounded-lg shadow-sm p-4 border border-green-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.DollarSign, { className: "w-4 h-4 text-green-600" })] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-linear-to-r from-green-500 to-emerald-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-xs opacity-90", children: "Custos Totais" }), (0, jsx_runtime_1.jsxs)("div", { className: "text-3xl font-bold", children: [(data.totalCosts / 1000).toFixed(1), "k"] })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.DollarSign, { className: "w-12 h-12 opacity-30" })] }) }), (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 do Or\u00E7amento" }), (0, jsx_runtime_1.jsxs)("span", { className: `text-sm font-bold px-2 py-1 rounded-full ${isBudgetHealth ? 'bg-green-100 text-green-700' : 'bg-yellow-100 text-yellow-700'}`, children: [budgetUtilization, "%"] })] }), (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 ${isBudgetHealth ? 'bg-linear-to-r from-green-400 to-green-600' : 'bg-linear-to-r from-yellow-400 to-yellow-600'}`, style: { width: `${Math.min(budgetUtilization, 100)}%` } }) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex justify-between text-xs text-gray-600", children: [(0, jsx_runtime_1.jsxs)("span", { children: ["R$ ", (data.totalCosts / 1000).toFixed(1), "k gasto"] }), (0, jsx_runtime_1.jsxs)("span", { children: ["R$ ", (data.budgetAmount / 1000).toFixed(1), "k or\u00E7ado"] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 gap-2 bg-green-50 rounded-lg p-3 border border-green-200 mt-3", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600 mb-1", children: "Economias" }), (0, jsx_runtime_1.jsxs)("div", { className: "text-2xl font-bold text-green-600", children: [data.savingsPercent, "%"] })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-gray-600 mb-1", children: "Tend\u00EAncia" }), (0, jsx_runtime_1.jsxs)("div", { className: `text-sm font-bold flex items-center gap-1 ${data.costTrend === 'down' ? 'text-green-600' : data.costTrend === 'up' ? 'text-red-600' : 'text-gray-600'}`, children: [data.costTrend === 'down' && '📉', data.costTrend === 'up' && '📈', data.costTrend === 'stable' && '➡️', data.costTrend === 'down' ? 'Reduzindo' : data.costTrend === 'up' ? 'Aumentando' : 'Estável'] })] })] })] }));
10
+ };
11
+ exports.default = PortfolioCostsKpi;
12
+ //# sourceMappingURL=PortfolioCostsKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioCostsKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/PortfolioCostsKpi.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ interface PortfolioEffortKpiProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ totalEffortHours: number;
10
+ allocatedHours: number;
11
+ availableHours: number;
12
+ effortUtilization: number;
13
+ };
14
+ style?: React.CSSProperties;
15
+ }
16
+ declare const PortfolioEffortKpi: React.FC<PortfolioEffortKpiProps>;
17
+ export default PortfolioEffortKpi;
18
+ //# sourceMappingURL=PortfolioEffortKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioEffortKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/PortfolioEffortKpi.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,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,gBAAgB,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/G,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAuBzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
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 PortfolioEffortKpi = ({ title, data = { totalEffortHours: 0, allocatedHours: 0, availableHours: 0, effortUtilization: 0 }, style, }) => ((0, jsx_runtime_1.jsxs)("div", { className: "bg-linear-to-br from-white to-orange-50 rounded-lg shadow-sm p-4 border border-orange-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.Activity, { className: "w-4 h-4 text-orange-600" })] }), (0, jsx_runtime_1.jsx)("div", { className: "bg-linear-to-r from-orange-500 to-amber-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-xs opacity-90", children: "Esfor\u00E7o Total" }), (0, jsx_runtime_1.jsx)("div", { className: "text-3xl font-bold", children: data.totalEffortHours }), (0, jsx_runtime_1.jsx)("div", { className: "text-xs opacity-90", children: "horas" })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.Clock, { className: "w-12 h-12 opacity-30" })] }) }), (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: "Taxa de Utiliza\u00E7\u00E3o" }), (0, jsx_runtime_1.jsxs)("span", { className: "text-sm font-bold text-orange-600", children: [data.effortUtilization, "%"] })] }), (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 bg-linear-to-r from-orange-400 to-orange-600 transition-all", style: { width: `${Math.min(data.effortUtilization, 100)}%` } }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 gap-2 mt-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "bg-orange-100 rounded-lg p-3 border border-orange-200", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-orange-700 mb-1", children: "Alocado" }), (0, jsx_runtime_1.jsxs)("div", { className: "text-2xl font-bold text-orange-600", children: [data.allocatedHours, "h"] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "bg-amber-100 rounded-lg p-3 border border-amber-200", children: [(0, jsx_runtime_1.jsx)("div", { className: "text-xs text-amber-700 mb-1", children: "Dispon\u00EDvel" }), (0, jsx_runtime_1.jsxs)("div", { className: "text-2xl font-bold text-amber-600", children: [data.availableHours, "h"] })] })] }), (0, jsx_runtime_1.jsx)("div", { className: "text-center text-xs text-gray-600 pt-2 border-t border-orange-100 mt-3", children: data.effortUtilization > 90 ? '⚠️ Portfólio com alta demanda' : data.effortUtilization > 70 ? '✓ Utilização equilibrada' : '📊 Capacidade disponível' })] }));
7
+ exports.default = PortfolioEffortKpi;
8
+ //# sourceMappingURL=PortfolioEffortKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioEffortKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/PortfolioEffortKpi.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAA+C;AAY/C,MAAM,kBAAkB,GAAsC,CAAC,EAC7D,KAAK,EACL,IAAI,GAAG,EAAE,gBAAgB,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAC1F,KAAK,GACN,EAAE,EAAE,CAAC,CACJ,iCAAK,SAAS,EAAC,2FAA2F,EAAC,KAAK,EAAE,KAAK,aACrH,iCAAK,SAAS,EAAC,wCAAwC,aAAC,+BAAI,SAAS,EAAC,mCAAmC,YAAE,KAAK,GAAM,EAAA,uBAAC,uBAAQ,IAAC,SAAS,EAAC,yBAAyB,GAAG,IAAM,EAC5K,gCAAK,SAAS,EAAC,4EAA4E,YACzF,iCAAK,SAAS,EAAC,mCAAmC,aAChD,4CAAK,gCAAK,SAAS,EAAC,oBAAoB,mCAAoB,EAAA,gCAAK,SAAS,EAAC,oBAAoB,YAAE,IAAI,CAAC,gBAAgB,GAAO,EAAA,gCAAK,SAAS,EAAC,oBAAoB,sBAAY,IAAM,EAClL,uBAAC,oBAAK,IAAC,SAAS,EAAC,sBAAsB,GAAG,IACtC,GACF,EACN,iCAAK,SAAS,EAAC,WAAW,aACxB,iCAAK,SAAS,EAAC,mCAAmC,aAAC,iCAAM,SAAS,EAAC,mCAAmC,6CAA0B,EAAA,kCAAM,SAAS,EAAC,mCAAmC,aAAE,IAAI,CAAC,iBAAiB,SAAS,IAAM,EAC1N,gCAAK,SAAS,EAAC,8DAA8D,YAAC,gCAAK,SAAS,EAAC,oEAAoE,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,GAAG,EAAE,GAAI,GAAM,IACrO,EACN,iCAAK,SAAS,EAAC,6BAA6B,aAC1C,iCAAK,SAAS,EAAC,uDAAuD,aAAC,gCAAK,SAAS,EAAC,8BAA8B,wBAAc,EAAA,iCAAK,SAAS,EAAC,oCAAoC,aAAE,IAAI,CAAC,cAAc,SAAQ,IAAM,EACxN,iCAAK,SAAS,EAAC,qDAAqD,aAAC,gCAAK,SAAS,EAAC,6BAA6B,gCAAiB,EAAA,iCAAK,SAAS,EAAC,mCAAmC,aAAE,IAAI,CAAC,cAAc,SAAQ,IAAM,IACnN,EACN,gCAAK,SAAS,EAAC,wEAAwE,YAAE,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,0BAA0B,GAAO,IACjP,CACP,CAAC;AAEF,kBAAe,kBAAkB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Widget KPI: Projetos do Portfólio
3
+ * Mostra quantidade de projetos ativos no portfólio
4
+ * Para: admin-operations-director
5
+ */
6
+ import React from 'react';
7
+ interface PortfolioProjectsKpiProps {
8
+ slug: string;
9
+ title: string;
10
+ roleSlug: string;
11
+ width?: number;
12
+ height?: number;
13
+ data?: {
14
+ total: number;
15
+ active: number;
16
+ completed: number;
17
+ };
18
+ style?: React.CSSProperties;
19
+ }
20
+ declare const PortfolioProjectsKpi: React.FC<PortfolioProjectsKpiProps>;
21
+ export default PortfolioProjectsKpi;
22
+ //# sourceMappingURL=PortfolioProjectsKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioProjectsKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/PortfolioProjectsKpi.tsx"],"names":[],"mappings":"AAEA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,UAAU,yBAAyB;IACjC,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,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAuD7D,CAAC;AAEF,eAAe,oBAAoB,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: Projetos do Portfólio
9
+ * Mostra quantidade de projetos ativos no portfólio
10
+ * Para: admin-operations-director
11
+ */
12
+ const react_1 = __importDefault(require("react"));
13
+ const PortfolioProjectsKpi = ({ title, data = { total: 0, active: 0, completed: 0 }, style, }) => {
14
+ const activePercent = 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-purple-600">
24
+ {data.active}
25
+ </span>
26
+ <span className="text-sm text-gray-600">
27
+ de {data.total} projetos
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">Em andamento:</span>
35
+ <span className="font-medium text-blue-600">{data.active}</span>
36
+ </div>
37
+ <div className="flex justify-between">
38
+ <span className="text-gray-600">Completados:</span>
39
+ <span className="font-medium text-green-600">{data.completed}</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 ${activePercent >= 70 ? 'bg-blue-500' :
46
+ activePercent >= 40 ? 'bg-yellow-500' :
47
+ 'bg-green-500'}`}/>
48
+ <span className="text-xs text-gray-600">
49
+ {activePercent}% em execução
50
+ </span>
51
+ </div>
52
+ </div>
53
+ </div>);
54
+ };
55
+ exports.default = PortfolioProjectsKpi;
56
+ //# sourceMappingURL=PortfolioProjectsKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioProjectsKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/PortfolioProjectsKpi.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;;;AAEb;;;;GAIG;AAEH,kDAA0B;AAgB1B,MAAM,oBAAoB,GAAwC,CAAC,EACjE,KAAK,EACL,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAC5C,KAAK,GACN,EAAE,EAAE;IACH,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;QAClC,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,aAAa,EAAE,IAAI,CACnD;YAAA,CAAC,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CACjE;UAAA,EAAE,GAAG,CACL;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,SAAS,CAAC,EAAE,IAAI,CACrE;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,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;YACrC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;gBACvC,cACF,EAAE,CAAC,EAEL;UAAA,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAuB,CACrC;YAAA,CAAC,aAAa,CAAC;UACjB,EAAE,IAAI,CACR;QAAA,EAAE,GAAG,CACP;MAAA,EAAE,GAAG,CACP;IAAA,EAAE,GAAG,CAAC,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ interface PortfolioRiskKpiProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ totalRisks: number;
10
+ criticalRisks: number;
11
+ highRisks: number;
12
+ mediumRisks: number;
13
+ riskTrend: 'increasing' | 'stable' | 'decreasing';
14
+ };
15
+ style?: React.CSSProperties;
16
+ }
17
+ declare const PortfolioRiskKpi: React.FC<PortfolioRiskKpiProps>;
18
+ export default PortfolioRiskKpi;
19
+ //# sourceMappingURL=PortfolioRiskKpi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioRiskKpi.d.ts","sourceRoot":"","sources":["../../../src/dashboard/widgets/PortfolioRiskKpi.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,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;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,YAAY,GAAG,QAAQ,GAAG,YAAY,CAAA;KAAE,CAAC;IAChJ,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B;AAED,QAAA,MAAM,gBAAgB,EAAE,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAgCrD,CAAC;AAEF,eAAe,gBAAgB,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 PortfolioRiskKpi = ({ title, data = { totalRisks: 0, criticalRisks: 0, highRisks: 0, mediumRisks: 0, riskTrend: 'stable' }, style, }) => {
7
+ const hasHighRisk = data.criticalRisks > 0 || data.highRisks > 3;
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 ${hasHighRisk ? '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 }), hasHighRisk && (0, jsx_runtime_1.jsxs)("div", { className: "relative", 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: `rounded-lg p-4 ${data.totalRisks > 10 ? 'bg-red-500 text-white' : data.totalRisks > 5 ? 'bg-yellow-500 text-white' : 'bg-green-500 text-white'}`, 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-xs opacity-90", children: "Riscos Identificados" }), (0, jsx_runtime_1.jsx)("div", { className: "text-3xl font-bold", children: data.totalRisks })] }), (0, jsx_runtime_1.jsx)(lucide_react_1.AlertTriangle, { className: "w-12 h-12 opacity-30" })] }) }), (0, jsx_runtime_1.jsxs)("div", { className: "space-y-2 mt-3", children: [data.criticalRisks > 0 && (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between bg-red-50 p-2 rounded-lg border border-red-200", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-xs font-medium text-red-700", children: "\uD83D\uDD34 Cr\u00EDtico" }), (0, jsx_runtime_1.jsx)("span", { className: "text-sm font-bold text-red-600", children: data.criticalRisks })] }), data.highRisks > 0 && (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between bg-yellow-50 p-2 rounded-lg border border-yellow-200", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-xs font-medium text-yellow-700", children: "\uD83D\uDFE0 Alto" }), (0, jsx_runtime_1.jsx)("span", { className: "text-sm font-bold text-yellow-600", children: data.highRisks })] }), data.mediumRisks > 0 && (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-between bg-blue-50 p-2 rounded-lg border border-blue-200", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-xs font-medium text-blue-700", children: "\uD83D\uDFE1 M\u00E9dio" }), (0, jsx_runtime_1.jsx)("span", { className: "text-sm font-bold text-blue-600", children: data.mediumRisks })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-2 pt-2 border-t border-red-100 mt-3", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.TrendingUp, { className: `w-4 h-4 ${data.riskTrend === 'increasing' ? 'text-red-600' : data.riskTrend === 'decreasing' ? 'text-green-600' : 'text-gray-600'}` }), (0, jsx_runtime_1.jsxs)("span", { className: "text-xs font-medium text-gray-700", children: ["Tend\u00EAncia: ", data.riskTrend === 'increasing' && '📈 Aumentando', data.riskTrend === 'decreasing' && '📉 Reduzindo', data.riskTrend === 'stable' && '➡️ Estável'] })] }), hasHighRisk && (0, jsx_runtime_1.jsx)("div", { className: "bg-red-100 rounded-lg p-2 border border-red-300 text-xs text-red-700 font-semibold text-center mt-3", children: "\u26A0\uFE0F Requer aten\u00E7\u00E3o imediata" })] }));
9
+ };
10
+ exports.default = PortfolioRiskKpi;
11
+ //# sourceMappingURL=PortfolioRiskKpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PortfolioRiskKpi.js","sourceRoot":"","sources":["../../../src/dashboard/widgets/PortfolioRiskKpi.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AAGb,+CAAyD;AAYzD,MAAM,gBAAgB,GAAoC,CAAC,EACzD,KAAK,EACL,IAAI,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAC7F,KAAK,GACN,EAAE,EAAE;IACH,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACjE,OAAO,CACL,iCAAK,SAAS,EAAE,wEAAwE,WAAW,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,gBAAgB,iBAAiB,EAAE,KAAK,EAAE,KAAK,aAC/K,iCAAK,SAAS,EAAC,wCAAwC,aACrD,+BAAI,SAAS,EAAC,mCAAmC,YAAE,KAAK,GAAM,EAC7D,WAAW,IAAI,iCAAK,SAAS,EAAC,UAAU,aAAC,gCAAK,SAAS,EAAC,wDAAwD,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAI,EAAA,uBAAC,4BAAa,IAAC,SAAS,EAAC,+BAA+B,GAAG,IAAM,IAC3M,EACN,gCAAK,SAAS,EAAE,kBAAkB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,yBAAyB,EAAE,YAC/J,iCAAK,SAAS,EAAC,mCAAmC,aAChD,4CAAK,gCAAK,SAAS,EAAC,oBAAoB,qCAA2B,EAAA,gCAAK,SAAS,EAAC,oBAAoB,YAAE,IAAI,CAAC,UAAU,GAAO,IAAM,EACpI,uBAAC,4BAAa,IAAC,SAAS,EAAC,sBAAsB,GAAG,IAC9C,GACF,EACN,iCAAK,SAAS,EAAC,gBAAgB,aAC5B,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,iCAAK,SAAS,EAAC,kFAAkF,aAAC,iCAAM,SAAS,EAAC,kCAAkC,0CAAkB,EAAA,iCAAM,SAAS,EAAC,gCAAgC,YAAE,IAAI,CAAC,aAAa,GAAQ,IAAM,EAClR,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,iCAAK,SAAS,EAAC,wFAAwF,aAAC,iCAAM,SAAS,EAAC,qCAAqC,kCAAe,EAAA,iCAAM,SAAS,EAAC,mCAAmC,YAAE,IAAI,CAAC,SAAS,GAAQ,IAAM,EACnR,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,iCAAK,SAAS,EAAC,oFAAoF,aAAC,iCAAM,SAAS,EAAC,mCAAmC,wCAAgB,EAAA,iCAAM,SAAS,EAAC,iCAAiC,YAAE,IAAI,CAAC,WAAW,GAAQ,IAAM,IAC7Q,EACN,iCAAK,SAAS,EAAC,2DAA2D,aACxE,uBAAC,yBAAU,IAAC,SAAS,EAAE,WAAW,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,YAAY,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,eAAe,EAAE,GAAI,EAC/J,kCAAM,SAAS,EAAC,mCAAmC,iCACrC,IAAI,CAAC,SAAS,KAAK,YAAY,IAAI,eAAe,EAAE,IAAI,CAAC,SAAS,KAAK,YAAY,IAAI,cAAc,EAAE,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,YAAY,IACzJ,IACH,EACL,WAAW,IAAI,gCAAK,SAAS,EAAC,qGAAqG,+DAAiC,IACjK,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ interface ProjectStatusOverviewProps {
3
+ slug: string;
4
+ title: string;
5
+ roleSlug: string;
6
+ width?: number;
7
+ height?: number;
8
+ data?: {
9
+ planning: number;
10
+ inProgress: number;
11
+ review: number;
12
+ completed: number;
13
+ onHold: number;
14
+ };
15
+ style?: React.CSSProperties;
16
+ }
17
+ declare const ProjectStatusOverview: React.FC<ProjectStatusOverviewProps>;
18
+ export default ProjectStatusOverview;
19
+ //# sourceMappingURL=ProjectStatusOverview.d.ts.map