@burdenoff/microfe-timecampus 2026.719.2 → 2026.719.4

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 (69) hide show
  1. package/dist/generated/wspace-operations.d.ts +193 -76
  2. package/dist/generated/wspace-operations.d.ts.map +1 -1
  3. package/dist/generated/wspace-operations.js +859 -788
  4. package/dist/generated/wspace-operations.js.map +1 -1
  5. package/dist/generated/wspace-types.d.ts +56 -38
  6. package/dist/generated/wspace-types.d.ts.map +1 -1
  7. package/dist/generated/wspace-types.js.map +1 -1
  8. package/dist/index.js +5 -5
  9. package/dist/timecampus/pages/HomePage.js +1 -1
  10. package/dist/timecampus/pages/HomePage.js.map +1 -1
  11. package/dist/timecampus/pages/application-usage/ApplicationUsagePage.js +6 -3
  12. package/dist/timecampus/pages/application-usage/ApplicationUsagePage.js.map +1 -1
  13. package/dist/timecampus/pages/client-portal/ClientPortalPage.js +4 -4
  14. package/dist/timecampus/pages/client-portal/ClientPortalPage.js.map +1 -1
  15. package/dist/timecampus/pages/email-tracking/EmailTrackingPage.d.ts.map +1 -1
  16. package/dist/timecampus/pages/email-tracking/EmailTrackingPage.js +8 -3
  17. package/dist/timecampus/pages/email-tracking/EmailTrackingPage.js.map +1 -1
  18. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.d.ts.map +1 -1
  19. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js +19 -13
  20. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js.map +1 -1
  21. package/dist/timecampus/pages/focus-score/FocusScorePage.js +1 -1
  22. package/dist/timecampus/pages/focus-score/FocusScorePage.js.map +1 -1
  23. package/dist/timecampus/pages/geofencing/GeofencingPage.d.ts.map +1 -1
  24. package/dist/timecampus/pages/geofencing/GeofencingPage.js +4 -4
  25. package/dist/timecampus/pages/geofencing/GeofencingPage.js.map +1 -1
  26. package/dist/timecampus/pages/location-tracking/LocationTrackingPage.d.ts.map +1 -1
  27. package/dist/timecampus/pages/location-tracking/LocationTrackingPage.js +4 -4
  28. package/dist/timecampus/pages/location-tracking/LocationTrackingPage.js.map +1 -1
  29. package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.d.ts.map +1 -1
  30. package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js +4 -2
  31. package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js.map +1 -1
  32. package/dist/timecampus/pages/meetings/MeetingsPage.d.ts.map +1 -1
  33. package/dist/timecampus/pages/meetings/MeetingsPage.js +6 -4
  34. package/dist/timecampus/pages/meetings/MeetingsPage.js.map +1 -1
  35. package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.js +1 -1
  36. package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.js.map +1 -1
  37. package/dist/timecampus/pages/projects/ProjectsPage.js +2 -2
  38. package/dist/timecampus/pages/projects/ProjectsPage.js.map +1 -1
  39. package/dist/timecampus/pages/projects/TasksPage.js +4 -2
  40. package/dist/timecampus/pages/projects/TasksPage.js.map +1 -1
  41. package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.d.ts.map +1 -1
  42. package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.js +4 -4
  43. package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.js.map +1 -1
  44. package/dist/timecampus/pages/team/TeamAnalyticsPage.d.ts.map +1 -1
  45. package/dist/timecampus/pages/team/TeamAnalyticsPage.js +2 -2
  46. package/dist/timecampus/pages/team/TeamAnalyticsPage.js.map +1 -1
  47. package/dist/timecampus/pages/team/TeamMembersPage.js +1 -1
  48. package/dist/timecampus/pages/team/TeamMembersPage.js.map +1 -1
  49. package/dist/timecampus/pages/team-activity/TeamActivityPage.d.ts.map +1 -1
  50. package/dist/timecampus/pages/team-activity/TeamActivityPage.js +49 -45
  51. package/dist/timecampus/pages/team-activity/TeamActivityPage.js.map +1 -1
  52. package/dist/timecampus/pages/time/TimeEntriesPage.d.ts.map +1 -1
  53. package/dist/timecampus/pages/time/TimeEntriesPage.js +137 -132
  54. package/dist/timecampus/pages/time/TimeEntriesPage.js.map +1 -1
  55. package/dist/timecampus/pages/time/TimeTrackingPage.d.ts.map +1 -1
  56. package/dist/timecampus/pages/time/TimeTrackingPage.js +2 -2
  57. package/dist/timecampus/pages/time/TimeTrackingPage.js.map +1 -1
  58. package/dist/timecampus/pages/time/TimerPage.d.ts.map +1 -1
  59. package/dist/timecampus/pages/time/TimerPage.js +2 -2
  60. package/dist/timecampus/pages/time/TimerPage.js.map +1 -1
  61. package/dist/timecampus/pages/time-approval/TimeApprovalPage.d.ts.map +1 -1
  62. package/dist/timecampus/pages/time-approval/TimeApprovalPage.js +4 -4
  63. package/dist/timecampus/pages/time-approval/TimeApprovalPage.js.map +1 -1
  64. package/dist/timecampus/pages/timeline/TimelinePage.d.ts.map +1 -1
  65. package/dist/timecampus/pages/timeline/TimelinePage.js +224 -162
  66. package/dist/timecampus/pages/timeline/TimelinePage.js.map +1 -1
  67. package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js +1 -1
  68. package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js.map +1 -1
  69. package/package.json +2 -1
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { useTimeCampus as e, useTimeCampusNavigate as t } from "./timecampus/providers/TimeCampusProvider.js";
2
- import { AcceptRecommendationDocument as n, ActivateResourcePlanDocument as r, AddParticipantDocument as i, ApplicationUsageFieldsFragmentDoc as a, ApprovalRequestFieldsFragmentDoc as o, ApproveExpenseDocument as s, ApproveRequestDocument as c, ArchiveProjectDocument as l, BalanceTargetFieldsFragmentDoc as u, BulkCreateAllocationsDocument as d, BulkCreateEmailTimeEntriesDocument as f, BulkDeleteTimeEntriesDocument as p, CalculateFocusScoreDocument as m, CaptureEventFieldsFragmentDoc as h, CategorizeApplicationDocument as g, ClientPortalFieldsFragmentDoc as _, CompleteActionItemDocument as v, CompletePomodoroSessionDocument as y, ContextSharingPolicyFieldsFragmentDoc as b, CreateActionItemDocument as x, CreateAllocationDocument as S, CreateClientPortalConfigDocument as C, CreateEmailTimeEntryDocument as w, CreateExpenseDocument as T, CreateGeofenceDocument as E, CreateLifeGoalDocument as D, CreateLocationEntryDocument as O, CreateMeetingDocument as k, CreatePomodoroGoalDocument as A, CreateProjectDocument as j, CreateResourcePlanDocument as M, CreateTaskDocument as N, CreateTimeEntryDocument as P, DeclareLifeValueDocument as F, DeleteActionItemDocument as I, DeleteAllocationDocument as L, DeleteApplicationUsageDocument as R, DeleteClientPortalConfigDocument as z, DeleteEmailTimeEntryDocument as B, DeleteExpenseDocument as V, DeleteFocusScoreDocument as H, DeleteGeofenceDocument as U, DeleteLifeGoalDocument as W, DeleteLifeValueDocument as G, DeleteLocationEntryDocument as K, DeleteMeetingDocument as q, DeletePomodoroGoalDocument as J, DeleteProjectDocument as Y, DeleteResourcePlanDocument as X, DeleteTaskDocument as Z, DeleteTimeCampusCaptureEventDocument as Q, DeleteTimeEntryDocument as $, DeleteWorkPatternDocument as ee, DismissRecommendationDocument as te, DuplicateTimeEntryDocument as ne, EmailTimeEntryFieldsFragmentDoc as re, ExpenseFieldsFragmentDoc as ie, FocusScoreFieldsFragmentDoc as ae, GenerateMyRecommendationsDocument as oe, GeofenceEventFieldsFragmentDoc as se, GeofenceFieldsFragmentDoc as ce, GetActiveLocationEntryDocument as le, GetActivePomodoroSessionDocument as ue, GetAppUsageSummaryDocument as de, GetApplicationUsageDocument as fe, GetApprovalRequestDocument as pe, GetApprovalStatsDocument as me, GetCapacityOverviewDocument as he, GetClientPortalConfigDocument as ge, GetClientPortalStatsDocument as _e, GetEmailTimeEntryDocument as ve, GetEmailTrackingStatsDocument as ye, GetExpenseDocument as be, GetExpenseStatsDocument as xe, GetFocusScoreDocument as Se, GetFocusScoreSummaryDocument as Ce, GetFocusScoreTrendDocument as we, GetGeofenceDocument as Te, GetLocationEntryDocument as Ee, GetLocationStatsDocument as De, GetMeetingDocument as Oe, GetMeetingStatsDocument as ke, GetPomodoroSessionDocument as Ae, GetPomodoroSettingsDocument as je, GetPomodoroStatsDocument as Me, GetProjectDocument as Ne, GetProjectStatsDocument as Pe, GetResourcePlanDocument as Fe, GetTaskDocument as Ie, GetTimeCampusTimelineDocument as Le, GetTimeEntryCountDocument as Re, GetTimeEntryDocument as ze, GetTimeEntryStatsDocument as Be, GetTodayFocusScoreDocument as Ve, GetTodayWorkPatternDocument as He, GetWorkPatternDocument as Ue, GetWorkPatternSummaryDocument as We, GrantSourceConsentDocument as Ge, IngestTimeCampusCaptureEventsDocument as Ke, InterruptPomodoroSessionDocument as qe, LifeGoalFieldsFragmentDoc as Je, LifeProfileFieldsFragmentDoc as Ye, LifeTimelineDocument as Xe, LifeValueFieldsFragmentDoc as Ze, ListApplicationUsagesDocument as Qe, ListApprovalRequestsDocument as $e, ListClientPortalConfigsDocument as et, ListEmailTimeEntriesDocument as tt, ListExpenseCategoriesDocument as nt, ListExpensesDocument as rt, ListFocusScoresDocument as it, ListGeofenceEventsDocument as at, ListGeofencesDocument as ot, ListLocationEntriesDocument as st, ListMeetingsDocument as ct, ListMyApprovalRequestsDocument as lt, ListPendingApprovalsDocument as ut, ListPomodoroGoalsDocument as dt, ListPomodoroSessionsDocument as ft, ListProjectsDocument as pt, ListResourceAllocationsDocument as mt, ListResourcePlansDocument as ht, ListRunningTimersDocument as gt, ListTasksDocument as _t, ListTimeCampusCaptureEventsDocument as vt, ListTimeEntriesByDateDocument as yt, ListTimeEntriesDocument as bt, ListTopApplicationsDocument as xt, ListUpcomingMeetingsDocument as St, ListUserAllocationsDocument as Ct, ListWorkPatternsDocument as wt, LocationEntryFieldsFragmentDoc as Tt, LogLifeTimeEntryDocument as Et, MeetingActionItemFieldsFragmentDoc as Dt, MeetingFieldsFragmentDoc as Ot, MeetingParticipantFieldsFragmentDoc as kt, MyBalanceTargetsDocument as At, MyContextSharingPolicyDocument as jt, MyDeadTimeRadarDocument as Mt, MyLifeBalanceDocument as Nt, MyLifeGoalsDocument as Pt, MyLifeInWeeksDocument as Ft, MyLifeProfileDocument as It, MyLifeValuesDocument as Lt, MyPersonalDataSummaryDocument as Rt, MyRecommendationPreferencesDocument as zt, MyRecommendationsDocument as Bt, MySourceConsentsDocument as Vt, MyTimeWellSpentDocument as Ht, PomodoroGoalFieldsFragmentDoc as Ut, PomodoroSessionFieldsFragmentDoc as Wt, PomodoroSettingsFieldsFragmentDoc as Gt, ProjectFieldsFragmentDoc as Kt, RateMeetingDocument as qt, RecategorizeTimeCampusCaptureEventDocument as Jt, RecommendationFieldsFragmentDoc as Yt, RecommendationPreferenceFieldsFragmentDoc as Xt, RecordApplicationUsageDocument as Zt, RecordFocusScoreDocument as Qt, RecordGeofenceEventDocument as $t, RecordWorkPatternDocument as en, RegenerateClientPortalShareTokenDocument as tn, RejectExpenseDocument as nn, RejectRequestDocument as rn, RemoveParticipantDocument as an, ReorderTasksDocument as on, RequestRevisionDocument as sn, ResourceAllocationFieldsFragmentDoc as cn, ResourcePlanFieldsFragmentDoc as ln, RevokeSourceConsentDocument as un, SetBalanceTargetDocument as dn, SnoozeRecommendationDocument as fn, SourceConsentFieldsFragmentDoc as pn, StartPomodoroSessionDocument as mn, StartTimerDocument as hn, StopTimerDocument as gn, SubmitApprovalRequestDocument as _n, SubmitExpenseForApprovalDocument as vn, TaskFieldsFragmentDoc as yn, TimeEntryFieldsFragmentDoc as bn, TimelineSegmentFieldsFragmentDoc as xn, TimelineSummaryFieldsFragmentDoc as Sn, ToggleClientPortalDocument as Cn, ToggleGeofenceDocument as wn, UpdateActionItemDocument as Tn, UpdateAllocationDocument as En, UpdateApplicationUsageDocument as Dn, UpdateClientPortalConfigDocument as On, UpdateContextSharingPolicyDocument as kn, UpdateEmailTimeEntryDocument as An, UpdateExpenseDocument as jn, UpdateFocusScoreDocument as Mn, UpdateGeofenceDocument as Nn, UpdateLifeGoalDocument as Pn, UpdateLifeValueDocument as Fn, UpdateLocationEntryDocument as In, UpdateMeetingDocument as Ln, UpdateMyLifeProfileDocument as Rn, UpdateMyRecommendationPreferencesDocument as zn, UpdateParticipantStatusDocument as Bn, UpdatePomodoroGoalDocument as Vn, UpdatePomodoroSettingsDocument as Hn, UpdateProjectDocument as Un, UpdateResourcePlanDocument as Wn, UpdateTaskDocument as Gn, UpdateTaskStatusDocument as Kn, UpdateTimeEntryDocument as qn, UpdateWorkPatternDocument as Jn, WithdrawRequestDocument as Yn, WorkPatternFieldsFragmentDoc as Xn, useAcceptRecommendationMutation as Zn, useActivateResourcePlanMutation as Qn, useAddParticipantMutation as $n, useApproveExpenseMutation as er, useApproveRequestMutation as tr, useArchiveProjectMutation as nr, useBulkCreateAllocationsMutation as rr, useBulkCreateEmailTimeEntriesMutation as ir, useBulkDeleteTimeEntriesMutation as ar, useCalculateFocusScoreMutation as or, useCategorizeApplicationMutation as sr, useCompleteActionItemMutation as cr, useCompletePomodoroSessionMutation as lr, useCreateActionItemMutation as ur, useCreateAllocationMutation as dr, useCreateClientPortalConfigMutation as fr, useCreateEmailTimeEntryMutation as pr, useCreateExpenseMutation as mr, useCreateGeofenceMutation as hr, useCreateLifeGoalMutation as gr, useCreateLocationEntryMutation as _r, useCreateMeetingMutation as vr, useCreatePomodoroGoalMutation as yr, useCreateProjectMutation as br, useCreateResourcePlanMutation as xr, useCreateTaskMutation as Sr, useCreateTimeEntryMutation as Cr, useDeclareLifeValueMutation as wr, useDeleteActionItemMutation as Tr, useDeleteAllocationMutation as Er, useDeleteApplicationUsageMutation as Dr, useDeleteClientPortalConfigMutation as Or, useDeleteEmailTimeEntryMutation as kr, useDeleteExpenseMutation as Ar, useDeleteFocusScoreMutation as jr, useDeleteGeofenceMutation as Mr, useDeleteLifeGoalMutation as Nr, useDeleteLifeValueMutation as Pr, useDeleteLocationEntryMutation as Fr, useDeleteMeetingMutation as Ir, useDeletePomodoroGoalMutation as Lr, useDeleteProjectMutation as Rr, useDeleteResourcePlanMutation as zr, useDeleteTaskMutation as Br, useDeleteTimeCampusCaptureEventMutation as Vr, useDeleteTimeEntryMutation as Hr, useDeleteWorkPatternMutation as Ur, useDismissRecommendationMutation as Wr, useDuplicateTimeEntryMutation as Gr, useGenerateMyRecommendationsMutation as Kr, useGetActiveLocationEntryLazyQuery as qr, useGetActiveLocationEntryQuery as Jr, useGetActiveLocationEntrySuspenseQuery as Yr, useGetActivePomodoroSessionLazyQuery as Xr, useGetActivePomodoroSessionQuery as Zr, useGetActivePomodoroSessionSuspenseQuery as Qr, useGetAppUsageSummaryLazyQuery as $r, useGetAppUsageSummaryQuery as ei, useGetAppUsageSummarySuspenseQuery as ti, useGetApplicationUsageLazyQuery as ni, useGetApplicationUsageQuery as ri, useGetApplicationUsageSuspenseQuery as ii, useGetApprovalRequestLazyQuery as ai, useGetApprovalRequestQuery as oi, useGetApprovalRequestSuspenseQuery as si, useGetApprovalStatsLazyQuery as ci, useGetApprovalStatsQuery as li, useGetApprovalStatsSuspenseQuery as ui, useGetCapacityOverviewLazyQuery as di, useGetCapacityOverviewQuery as fi, useGetCapacityOverviewSuspenseQuery as pi, useGetClientPortalConfigLazyQuery as mi, useGetClientPortalConfigQuery as hi, useGetClientPortalConfigSuspenseQuery as gi, useGetClientPortalStatsLazyQuery as _i, useGetClientPortalStatsQuery as vi, useGetClientPortalStatsSuspenseQuery as yi, useGetEmailTimeEntryLazyQuery as bi, useGetEmailTimeEntryQuery as xi, useGetEmailTimeEntrySuspenseQuery as Si, useGetEmailTrackingStatsLazyQuery as Ci, useGetEmailTrackingStatsQuery as wi, useGetEmailTrackingStatsSuspenseQuery as Ti, useGetExpenseLazyQuery as Ei, useGetExpenseQuery as Di, useGetExpenseStatsLazyQuery as Oi, useGetExpenseStatsQuery as ki, useGetExpenseStatsSuspenseQuery as Ai, useGetExpenseSuspenseQuery as ji, useGetFocusScoreLazyQuery as Mi, useGetFocusScoreQuery as Ni, useGetFocusScoreSummaryLazyQuery as Pi, useGetFocusScoreSummaryQuery as Fi, useGetFocusScoreSummarySuspenseQuery as Ii, useGetFocusScoreSuspenseQuery as Li, useGetFocusScoreTrendLazyQuery as Ri, useGetFocusScoreTrendQuery as zi, useGetFocusScoreTrendSuspenseQuery as Bi, useGetGeofenceLazyQuery as Vi, useGetGeofenceQuery as Hi, useGetGeofenceSuspenseQuery as Ui, useGetLocationEntryLazyQuery as Wi, useGetLocationEntryQuery as Gi, useGetLocationEntrySuspenseQuery as Ki, useGetLocationStatsLazyQuery as qi, useGetLocationStatsQuery as Ji, useGetLocationStatsSuspenseQuery as Yi, useGetMeetingLazyQuery as Xi, useGetMeetingQuery as Zi, useGetMeetingStatsLazyQuery as Qi, useGetMeetingStatsQuery as $i, useGetMeetingStatsSuspenseQuery as ea, useGetMeetingSuspenseQuery as ta, useGetPomodoroSessionLazyQuery as na, useGetPomodoroSessionQuery as ra, useGetPomodoroSessionSuspenseQuery as ia, useGetPomodoroSettingsLazyQuery as aa, useGetPomodoroSettingsQuery as oa, useGetPomodoroSettingsSuspenseQuery as sa, useGetPomodoroStatsLazyQuery as ca, useGetPomodoroStatsQuery as la, useGetPomodoroStatsSuspenseQuery as ua, useGetProjectLazyQuery as da, useGetProjectQuery as fa, useGetProjectStatsLazyQuery as pa, useGetProjectStatsQuery as ma, useGetProjectStatsSuspenseQuery as ha, useGetProjectSuspenseQuery as ga, useGetResourcePlanLazyQuery as _a, useGetResourcePlanQuery as va, useGetResourcePlanSuspenseQuery as ya, useGetTaskLazyQuery as ba, useGetTaskQuery as xa, useGetTaskSuspenseQuery as Sa, useGetTimeCampusTimelineLazyQuery as Ca, useGetTimeCampusTimelineQuery as wa, useGetTimeCampusTimelineSuspenseQuery as Ta, useGetTimeEntryCountLazyQuery as Ea, useGetTimeEntryCountQuery as Da, useGetTimeEntryCountSuspenseQuery as Oa, useGetTimeEntryLazyQuery as ka, useGetTimeEntryQuery as Aa, useGetTimeEntryStatsLazyQuery as ja, useGetTimeEntryStatsQuery as Ma, useGetTimeEntryStatsSuspenseQuery as Na, useGetTimeEntrySuspenseQuery as Pa, useGetTodayFocusScoreLazyQuery as Fa, useGetTodayFocusScoreQuery as Ia, useGetTodayFocusScoreSuspenseQuery as La, useGetTodayWorkPatternLazyQuery as Ra, useGetTodayWorkPatternQuery as za, useGetTodayWorkPatternSuspenseQuery as Ba, useGetWorkPatternLazyQuery as Va, useGetWorkPatternQuery as Ha, useGetWorkPatternSummaryLazyQuery as Ua, useGetWorkPatternSummaryQuery as Wa, useGetWorkPatternSummarySuspenseQuery as Ga, useGetWorkPatternSuspenseQuery as Ka, useGrantSourceConsentMutation as qa, useIngestTimeCampusCaptureEventsMutation as Ja, useInterruptPomodoroSessionMutation as Ya, useLifeTimelineLazyQuery as Xa, useLifeTimelineQuery as Za, useLifeTimelineSuspenseQuery as Qa, useListApplicationUsagesLazyQuery as $a, useListApplicationUsagesQuery as eo, useListApplicationUsagesSuspenseQuery as to, useListApprovalRequestsLazyQuery as no, useListApprovalRequestsQuery as ro, useListApprovalRequestsSuspenseQuery as io, useListClientPortalConfigsLazyQuery as ao, useListClientPortalConfigsQuery as oo, useListClientPortalConfigsSuspenseQuery as so, useListEmailTimeEntriesLazyQuery as co, useListEmailTimeEntriesQuery as lo, useListEmailTimeEntriesSuspenseQuery as uo, useListExpenseCategoriesLazyQuery as fo, useListExpenseCategoriesQuery as po, useListExpenseCategoriesSuspenseQuery as mo, useListExpensesLazyQuery as ho, useListExpensesQuery as go, useListExpensesSuspenseQuery as _o, useListFocusScoresLazyQuery as vo, useListFocusScoresQuery as yo, useListFocusScoresSuspenseQuery as bo, useListGeofenceEventsLazyQuery as xo, useListGeofenceEventsQuery as So, useListGeofenceEventsSuspenseQuery as Co, useListGeofencesLazyQuery as wo, useListGeofencesQuery as To, useListGeofencesSuspenseQuery as Eo, useListLocationEntriesLazyQuery as Do, useListLocationEntriesQuery as Oo, useListLocationEntriesSuspenseQuery as ko, useListMeetingsLazyQuery as Ao, useListMeetingsQuery as jo, useListMeetingsSuspenseQuery as Mo, useListMyApprovalRequestsLazyQuery as No, useListMyApprovalRequestsQuery as Po, useListMyApprovalRequestsSuspenseQuery as Fo, useListPendingApprovalsLazyQuery as Io, useListPendingApprovalsQuery as Lo, useListPendingApprovalsSuspenseQuery as Ro, useListPomodoroGoalsLazyQuery as zo, useListPomodoroGoalsQuery as Bo, useListPomodoroGoalsSuspenseQuery as Vo, useListPomodoroSessionsLazyQuery as Ho, useListPomodoroSessionsQuery as Uo, useListPomodoroSessionsSuspenseQuery as Wo, useListProjectsLazyQuery as Go, useListProjectsQuery as Ko, useListProjectsSuspenseQuery as qo, useListResourceAllocationsLazyQuery as Jo, useListResourceAllocationsQuery as Yo, useListResourceAllocationsSuspenseQuery as Xo, useListResourcePlansLazyQuery as Zo, useListResourcePlansQuery as Qo, useListResourcePlansSuspenseQuery as $o, useListRunningTimersLazyQuery as es, useListRunningTimersQuery as ts, useListRunningTimersSuspenseQuery as ns, useListTasksLazyQuery as rs, useListTasksQuery as is, useListTasksSuspenseQuery as as, useListTimeCampusCaptureEventsLazyQuery as os, useListTimeCampusCaptureEventsQuery as ss, useListTimeCampusCaptureEventsSuspenseQuery as cs, useListTimeEntriesByDateLazyQuery as ls, useListTimeEntriesByDateQuery as us, useListTimeEntriesByDateSuspenseQuery as ds, useListTimeEntriesLazyQuery as fs, useListTimeEntriesQuery as ps, useListTimeEntriesSuspenseQuery as ms, useListTopApplicationsLazyQuery as hs, useListTopApplicationsQuery as gs, useListTopApplicationsSuspenseQuery as _s, useListUpcomingMeetingsLazyQuery as vs, useListUpcomingMeetingsQuery as ys, useListUpcomingMeetingsSuspenseQuery as bs, useListUserAllocationsLazyQuery as xs, useListUserAllocationsQuery as Ss, useListUserAllocationsSuspenseQuery as Cs, useListWorkPatternsLazyQuery as ws, useListWorkPatternsQuery as Ts, useListWorkPatternsSuspenseQuery as Es, useLogLifeTimeEntryMutation as Ds, useMyBalanceTargetsLazyQuery as Os, useMyBalanceTargetsQuery as ks, useMyBalanceTargetsSuspenseQuery as As, useMyContextSharingPolicyLazyQuery as js, useMyContextSharingPolicyQuery as Ms, useMyContextSharingPolicySuspenseQuery as Ns, useMyDeadTimeRadarLazyQuery as Ps, useMyDeadTimeRadarQuery as Fs, useMyDeadTimeRadarSuspenseQuery as Is, useMyLifeBalanceLazyQuery as Ls, useMyLifeBalanceQuery as Rs, useMyLifeBalanceSuspenseQuery as zs, useMyLifeGoalsLazyQuery as Bs, useMyLifeGoalsQuery as Vs, useMyLifeGoalsSuspenseQuery as Hs, useMyLifeInWeeksLazyQuery as Us, useMyLifeInWeeksQuery as Ws, useMyLifeInWeeksSuspenseQuery as Gs, useMyLifeProfileLazyQuery as Ks, useMyLifeProfileQuery as qs, useMyLifeProfileSuspenseQuery as Js, useMyLifeValuesLazyQuery as Ys, useMyLifeValuesQuery as Xs, useMyLifeValuesSuspenseQuery as Zs, useMyPersonalDataSummaryLazyQuery as Qs, useMyPersonalDataSummaryQuery as $s, useMyPersonalDataSummarySuspenseQuery as ec, useMyRecommendationPreferencesLazyQuery as tc, useMyRecommendationPreferencesQuery as nc, useMyRecommendationPreferencesSuspenseQuery as rc, useMyRecommendationsLazyQuery as ic, useMyRecommendationsQuery as ac, useMyRecommendationsSuspenseQuery as oc, useMySourceConsentsLazyQuery as sc, useMySourceConsentsQuery as cc, useMySourceConsentsSuspenseQuery as lc, useMyTimeWellSpentLazyQuery as uc, useMyTimeWellSpentQuery as dc, useMyTimeWellSpentSuspenseQuery as fc, useRateMeetingMutation as pc, useRecategorizeTimeCampusCaptureEventMutation as mc, useRecordApplicationUsageMutation as hc, useRecordFocusScoreMutation as gc, useRecordGeofenceEventMutation as _c, useRecordWorkPatternMutation as vc, useRegenerateClientPortalShareTokenMutation as yc, useRejectExpenseMutation as bc, useRejectRequestMutation as xc, useRemoveParticipantMutation as Sc, useReorderTasksMutation as Cc, useRequestRevisionMutation as wc, useRevokeSourceConsentMutation as Tc, useSetBalanceTargetMutation as Ec, useSnoozeRecommendationMutation as Dc, useStartPomodoroSessionMutation as Oc, useStartTimerMutation as kc, useStopTimerMutation as Ac, useSubmitApprovalRequestMutation as jc, useSubmitExpenseForApprovalMutation as Mc, useToggleClientPortalMutation as Nc, useToggleGeofenceMutation as Pc, useUpdateActionItemMutation as Fc, useUpdateAllocationMutation as Ic, useUpdateApplicationUsageMutation as Lc, useUpdateClientPortalConfigMutation as Rc, useUpdateContextSharingPolicyMutation as zc, useUpdateEmailTimeEntryMutation as Bc, useUpdateExpenseMutation as Vc, useUpdateFocusScoreMutation as Hc, useUpdateGeofenceMutation as Uc, useUpdateLifeGoalMutation as Wc, useUpdateLifeValueMutation as Gc, useUpdateLocationEntryMutation as Kc, useUpdateMeetingMutation as qc, useUpdateMyLifeProfileMutation as Jc, useUpdateMyRecommendationPreferencesMutation as Yc, useUpdateParticipantStatusMutation as Xc, useUpdatePomodoroGoalMutation as Zc, useUpdatePomodoroSettingsMutation as Qc, useUpdateProjectMutation as $c, useUpdateResourcePlanMutation as el, useUpdateTaskMutation as tl, useUpdateTaskStatusMutation as nl, useUpdateTimeEntryMutation as rl, useUpdateWorkPatternMutation as il, useWithdrawRequestMutation as al } from "./generated/wspace-operations.js";
3
- import { TimeCampusRoot as ol } from "./timecampus/TimeCampusRoot.js";
4
- import { useTimeCampusStore as sl } from "./timecampus/store/timecampusStore.js";
5
- import { useSandboxAssistantTransport as cl } from "./services/createSandboxAssistantTransport.js";
2
+ import { AcceptRecommendationDocument as n, ActivateResourcePlanDocument as r, AddParticipantDocument as i, ApplicationUsageFieldsFragmentDoc as a, ApprovalRequestFieldsFragmentDoc as o, ApproveExpenseDocument as s, ApproveRequestDocument as c, ArchiveProjectDocument as l, BalanceTargetFieldsFragmentDoc as u, BulkCreateAllocationsDocument as d, BulkCreateEmailTimeEntriesDocument as f, BulkDeleteTimeEntriesDocument as p, CalculateFocusScoreDocument as m, CaptureEventFieldsFragmentDoc as h, CategorizeApplicationDocument as g, ClientPortalFieldsFragmentDoc as _, CompleteActionItemDocument as v, CompletePomodoroSessionDocument as y, ContextSharingPolicyFieldsFragmentDoc as b, CreateActionItemDocument as x, CreateAllocationDocument as S, CreateClientPortalConfigDocument as C, CreateEmailTimeEntryDocument as w, CreateExpenseDocument as T, CreateGeofenceDocument as E, CreateLifeGoalDocument as D, CreateLocationEntryDocument as O, CreateMeetingDocument as k, CreatePomodoroGoalDocument as A, CreateProjectDocument as j, CreateResourcePlanDocument as M, CreateTaskDocument as N, CreateTimeEntryDocument as P, DeclareLifeValueDocument as F, DeleteActionItemDocument as I, DeleteAllocationDocument as L, DeleteApplicationUsageDocument as R, DeleteClientPortalConfigDocument as z, DeleteEmailTimeEntryDocument as B, DeleteExpenseDocument as V, DeleteFocusScoreDocument as H, DeleteGeofenceDocument as U, DeleteLifeGoalDocument as W, DeleteLifeValueDocument as G, DeleteLocationEntryDocument as K, DeleteMeetingDocument as q, DeletePomodoroGoalDocument as J, DeleteProjectDocument as Y, DeleteResourcePlanDocument as X, DeleteTaskDocument as Z, DeleteTimeCampusCaptureEventDocument as Q, DeleteTimeEntryDocument as $, DeleteWorkPatternDocument as ee, DismissRecommendationDocument as te, DuplicateTimeEntryDocument as ne, EmailTimeEntryFieldsFragmentDoc as re, ExpenseFieldsFragmentDoc as ie, FocusScoreFieldsFragmentDoc as ae, GenerateMyRecommendationsDocument as oe, GeofenceEventFieldsFragmentDoc as se, GeofenceFieldsFragmentDoc as ce, GetActiveLocationEntryDocument as le, GetActivePomodoroSessionDocument as ue, GetAppUsageSummaryDocument as de, GetApplicationUsageDocument as fe, GetApprovalRequestDocument as pe, GetApprovalStatsDocument as me, GetCapacityOverviewDocument as he, GetClientPortalConfigDocument as ge, GetClientPortalStatsDocument as _e, GetEmailTimeEntryDocument as ve, GetEmailTrackingStatsDocument as ye, GetExpenseDocument as be, GetExpenseStatsDocument as xe, GetFocusScoreDocument as Se, GetFocusScoreSummaryDocument as Ce, GetFocusScoreTrendDocument as we, GetGeofenceDocument as Te, GetLocationEntryDocument as Ee, GetLocationStatsDocument as De, GetMeetingDocument as Oe, GetMeetingStatsDocument as ke, GetPomodoroSessionDocument as Ae, GetPomodoroSettingsDocument as je, GetPomodoroStatsDocument as Me, GetProjectDocument as Ne, GetProjectStatsDocument as Pe, GetResourcePlanDocument as Fe, GetTaskDocument as Ie, GetTeamWorkPatternSummaryDocument as Le, GetTimeCampusTimelineDocument as Re, GetTimeEntryCountDocument as ze, GetTimeEntryDocument as Be, GetTimeEntryStatsDocument as Ve, GetTodayFocusScoreDocument as He, GetTodayWorkPatternDocument as Ue, GetWorkPatternDocument as We, GetWorkPatternSummaryDocument as Ge, GrantSourceConsentDocument as Ke, IngestTimeCampusCaptureEventsDocument as qe, InterruptPomodoroSessionDocument as Je, LifeGoalFieldsFragmentDoc as Ye, LifeProfileFieldsFragmentDoc as Xe, LifeTimelineDocument as Ze, LifeValueFieldsFragmentDoc as Qe, ListApplicationUsagesDocument as $e, ListApprovalRequestsDocument as et, ListClientPortalConfigsDocument as tt, ListEmailTimeEntriesDocument as nt, ListExpenseCategoriesDocument as rt, ListExpensesDocument as it, ListFocusScoresDocument as at, ListGeofenceEventsDocument as ot, ListGeofencesDocument as st, ListLocationEntriesDocument as ct, ListMeetingsDocument as lt, ListMyApprovalRequestsDocument as ut, ListPendingApprovalsDocument as dt, ListPomodoroGoalsDocument as ft, ListPomodoroSessionsDocument as pt, ListProjectsDocument as mt, ListResourceAllocationsDocument as ht, ListResourcePlansDocument as gt, ListRunningTimersDocument as _t, ListTasksDocument as vt, ListTeamWorkPatternsDocument as yt, ListTimeCampusCaptureEventsDocument as bt, ListTimeEntriesByDateDocument as xt, ListTimeEntriesDocument as St, ListTopApplicationsDocument as Ct, ListUpcomingMeetingsDocument as wt, ListUserAllocationsDocument as Tt, ListWorkPatternsDocument as Et, LocationEntryFieldsFragmentDoc as Dt, LogLifeTimeEntryDocument as Ot, MeetingActionItemFieldsFragmentDoc as kt, MeetingFieldsFragmentDoc as At, MeetingParticipantFieldsFragmentDoc as jt, MyBalanceTargetsDocument as Mt, MyContextSharingPolicyDocument as Nt, MyDeadTimeRadarDocument as Pt, MyLifeBalanceDocument as Ft, MyLifeGoalsDocument as It, MyLifeInWeeksDocument as Lt, MyLifeProfileDocument as Rt, MyLifeValuesDocument as zt, MyPersonalDataSummaryDocument as Bt, MyRecommendationPreferencesDocument as Vt, MyRecommendationsDocument as Ht, MySourceConsentsDocument as Ut, MyTimeWellSpentDocument as Wt, PomodoroGoalFieldsFragmentDoc as Gt, PomodoroSessionFieldsFragmentDoc as Kt, PomodoroSettingsFieldsFragmentDoc as qt, ProjectFieldsFragmentDoc as Jt, RateMeetingDocument as Yt, RecategorizeTimeCampusCaptureEventDocument as Xt, RecommendationFieldsFragmentDoc as Zt, RecommendationPreferenceFieldsFragmentDoc as Qt, RecordApplicationUsageDocument as $t, RecordFocusScoreDocument as en, RecordGeofenceEventDocument as tn, RecordWorkPatternDocument as nn, RegenerateClientPortalShareTokenDocument as rn, RejectExpenseDocument as an, RejectRequestDocument as on, RemoveParticipantDocument as sn, ReorderTasksDocument as cn, RequestRevisionDocument as ln, ResourceAllocationFieldsFragmentDoc as un, ResourcePlanFieldsFragmentDoc as dn, RevokeSourceConsentDocument as fn, SetBalanceTargetDocument as pn, SnoozeRecommendationDocument as mn, SourceConsentFieldsFragmentDoc as hn, StartPomodoroSessionDocument as gn, StartTimerDocument as _n, StopTimerDocument as vn, SubmitApprovalRequestDocument as yn, SubmitExpenseForApprovalDocument as bn, TaskFieldsFragmentDoc as xn, TeamWorkPatternEntryFieldsFragmentDoc as Sn, TimeEntryFieldsFragmentDoc as Cn, TimelineSegmentFieldsFragmentDoc as wn, TimelineSummaryFieldsFragmentDoc as Tn, ToggleClientPortalDocument as En, ToggleGeofenceDocument as Dn, UpdateActionItemDocument as On, UpdateAllocationDocument as kn, UpdateApplicationUsageDocument as An, UpdateClientPortalConfigDocument as jn, UpdateContextSharingPolicyDocument as Mn, UpdateEmailTimeEntryDocument as Nn, UpdateExpenseDocument as Pn, UpdateFocusScoreDocument as Fn, UpdateGeofenceDocument as In, UpdateLifeGoalDocument as Ln, UpdateLifeValueDocument as Rn, UpdateLocationEntryDocument as zn, UpdateMeetingDocument as Bn, UpdateMyLifeProfileDocument as Vn, UpdateMyRecommendationPreferencesDocument as Hn, UpdateParticipantStatusDocument as Un, UpdatePomodoroGoalDocument as Wn, UpdatePomodoroSettingsDocument as Gn, UpdateProjectDocument as Kn, UpdateResourcePlanDocument as qn, UpdateTaskDocument as Jn, UpdateTaskStatusDocument as Yn, UpdateTimeEntryDocument as Xn, UpdateWorkPatternDocument as Zn, WithdrawRequestDocument as Qn, WorkPatternFieldsFragmentDoc as $n, useAcceptRecommendationMutation as er, useActivateResourcePlanMutation as tr, useAddParticipantMutation as nr, useApproveExpenseMutation as rr, useApproveRequestMutation as ir, useArchiveProjectMutation as ar, useBulkCreateAllocationsMutation as or, useBulkCreateEmailTimeEntriesMutation as sr, useBulkDeleteTimeEntriesMutation as cr, useCalculateFocusScoreMutation as lr, useCategorizeApplicationMutation as ur, useCompleteActionItemMutation as dr, useCompletePomodoroSessionMutation as fr, useCreateActionItemMutation as pr, useCreateAllocationMutation as mr, useCreateClientPortalConfigMutation as hr, useCreateEmailTimeEntryMutation as gr, useCreateExpenseMutation as _r, useCreateGeofenceMutation as vr, useCreateLifeGoalMutation as yr, useCreateLocationEntryMutation as br, useCreateMeetingMutation as xr, useCreatePomodoroGoalMutation as Sr, useCreateProjectMutation as Cr, useCreateResourcePlanMutation as wr, useCreateTaskMutation as Tr, useCreateTimeEntryMutation as Er, useDeclareLifeValueMutation as Dr, useDeleteActionItemMutation as Or, useDeleteAllocationMutation as kr, useDeleteApplicationUsageMutation as Ar, useDeleteClientPortalConfigMutation as jr, useDeleteEmailTimeEntryMutation as Mr, useDeleteExpenseMutation as Nr, useDeleteFocusScoreMutation as Pr, useDeleteGeofenceMutation as Fr, useDeleteLifeGoalMutation as Ir, useDeleteLifeValueMutation as Lr, useDeleteLocationEntryMutation as Rr, useDeleteMeetingMutation as zr, useDeletePomodoroGoalMutation as Br, useDeleteProjectMutation as Vr, useDeleteResourcePlanMutation as Hr, useDeleteTaskMutation as Ur, useDeleteTimeCampusCaptureEventMutation as Wr, useDeleteTimeEntryMutation as Gr, useDeleteWorkPatternMutation as Kr, useDismissRecommendationMutation as qr, useDuplicateTimeEntryMutation as Jr, useGenerateMyRecommendationsMutation as Yr, useGetActiveLocationEntryLazyQuery as Xr, useGetActiveLocationEntryQuery as Zr, useGetActiveLocationEntrySuspenseQuery as Qr, useGetActivePomodoroSessionLazyQuery as $r, useGetActivePomodoroSessionQuery as ei, useGetActivePomodoroSessionSuspenseQuery as ti, useGetAppUsageSummaryLazyQuery as ni, useGetAppUsageSummaryQuery as ri, useGetAppUsageSummarySuspenseQuery as ii, useGetApplicationUsageLazyQuery as ai, useGetApplicationUsageQuery as oi, useGetApplicationUsageSuspenseQuery as si, useGetApprovalRequestLazyQuery as ci, useGetApprovalRequestQuery as li, useGetApprovalRequestSuspenseQuery as ui, useGetApprovalStatsLazyQuery as di, useGetApprovalStatsQuery as fi, useGetApprovalStatsSuspenseQuery as pi, useGetCapacityOverviewLazyQuery as mi, useGetCapacityOverviewQuery as hi, useGetCapacityOverviewSuspenseQuery as gi, useGetClientPortalConfigLazyQuery as _i, useGetClientPortalConfigQuery as vi, useGetClientPortalConfigSuspenseQuery as yi, useGetClientPortalStatsLazyQuery as bi, useGetClientPortalStatsQuery as xi, useGetClientPortalStatsSuspenseQuery as Si, useGetEmailTimeEntryLazyQuery as Ci, useGetEmailTimeEntryQuery as wi, useGetEmailTimeEntrySuspenseQuery as Ti, useGetEmailTrackingStatsLazyQuery as Ei, useGetEmailTrackingStatsQuery as Di, useGetEmailTrackingStatsSuspenseQuery as Oi, useGetExpenseLazyQuery as ki, useGetExpenseQuery as Ai, useGetExpenseStatsLazyQuery as ji, useGetExpenseStatsQuery as Mi, useGetExpenseStatsSuspenseQuery as Ni, useGetExpenseSuspenseQuery as Pi, useGetFocusScoreLazyQuery as Fi, useGetFocusScoreQuery as Ii, useGetFocusScoreSummaryLazyQuery as Li, useGetFocusScoreSummaryQuery as Ri, useGetFocusScoreSummarySuspenseQuery as zi, useGetFocusScoreSuspenseQuery as Bi, useGetFocusScoreTrendLazyQuery as Vi, useGetFocusScoreTrendQuery as Hi, useGetFocusScoreTrendSuspenseQuery as Ui, useGetGeofenceLazyQuery as Wi, useGetGeofenceQuery as Gi, useGetGeofenceSuspenseQuery as Ki, useGetLocationEntryLazyQuery as qi, useGetLocationEntryQuery as Ji, useGetLocationEntrySuspenseQuery as Yi, useGetLocationStatsLazyQuery as Xi, useGetLocationStatsQuery as Zi, useGetLocationStatsSuspenseQuery as Qi, useGetMeetingLazyQuery as $i, useGetMeetingQuery as ea, useGetMeetingStatsLazyQuery as ta, useGetMeetingStatsQuery as na, useGetMeetingStatsSuspenseQuery as ra, useGetMeetingSuspenseQuery as ia, useGetPomodoroSessionLazyQuery as aa, useGetPomodoroSessionQuery as oa, useGetPomodoroSessionSuspenseQuery as sa, useGetPomodoroSettingsLazyQuery as ca, useGetPomodoroSettingsQuery as la, useGetPomodoroSettingsSuspenseQuery as ua, useGetPomodoroStatsLazyQuery as da, useGetPomodoroStatsQuery as fa, useGetPomodoroStatsSuspenseQuery as pa, useGetProjectLazyQuery as ma, useGetProjectQuery as ha, useGetProjectStatsLazyQuery as ga, useGetProjectStatsQuery as _a, useGetProjectStatsSuspenseQuery as va, useGetProjectSuspenseQuery as ya, useGetResourcePlanLazyQuery as ba, useGetResourcePlanQuery as xa, useGetResourcePlanSuspenseQuery as Sa, useGetTaskLazyQuery as Ca, useGetTaskQuery as wa, useGetTaskSuspenseQuery as Ta, useGetTeamWorkPatternSummaryLazyQuery as Ea, useGetTeamWorkPatternSummaryQuery as Da, useGetTeamWorkPatternSummarySuspenseQuery as Oa, useGetTimeCampusTimelineLazyQuery as ka, useGetTimeCampusTimelineQuery as Aa, useGetTimeCampusTimelineSuspenseQuery as ja, useGetTimeEntryCountLazyQuery as Ma, useGetTimeEntryCountQuery as Na, useGetTimeEntryCountSuspenseQuery as Pa, useGetTimeEntryLazyQuery as Fa, useGetTimeEntryQuery as Ia, useGetTimeEntryStatsLazyQuery as La, useGetTimeEntryStatsQuery as Ra, useGetTimeEntryStatsSuspenseQuery as za, useGetTimeEntrySuspenseQuery as Ba, useGetTodayFocusScoreLazyQuery as Va, useGetTodayFocusScoreQuery as Ha, useGetTodayFocusScoreSuspenseQuery as Ua, useGetTodayWorkPatternLazyQuery as Wa, useGetTodayWorkPatternQuery as Ga, useGetTodayWorkPatternSuspenseQuery as Ka, useGetWorkPatternLazyQuery as qa, useGetWorkPatternQuery as Ja, useGetWorkPatternSummaryLazyQuery as Ya, useGetWorkPatternSummaryQuery as Xa, useGetWorkPatternSummarySuspenseQuery as Za, useGetWorkPatternSuspenseQuery as Qa, useGrantSourceConsentMutation as $a, useIngestTimeCampusCaptureEventsMutation as eo, useInterruptPomodoroSessionMutation as to, useLifeTimelineLazyQuery as no, useLifeTimelineQuery as ro, useLifeTimelineSuspenseQuery as io, useListApplicationUsagesLazyQuery as ao, useListApplicationUsagesQuery as oo, useListApplicationUsagesSuspenseQuery as so, useListApprovalRequestsLazyQuery as co, useListApprovalRequestsQuery as lo, useListApprovalRequestsSuspenseQuery as uo, useListClientPortalConfigsLazyQuery as fo, useListClientPortalConfigsQuery as po, useListClientPortalConfigsSuspenseQuery as mo, useListEmailTimeEntriesLazyQuery as ho, useListEmailTimeEntriesQuery as go, useListEmailTimeEntriesSuspenseQuery as _o, useListExpenseCategoriesLazyQuery as vo, useListExpenseCategoriesQuery as yo, useListExpenseCategoriesSuspenseQuery as bo, useListExpensesLazyQuery as xo, useListExpensesQuery as So, useListExpensesSuspenseQuery as Co, useListFocusScoresLazyQuery as wo, useListFocusScoresQuery as To, useListFocusScoresSuspenseQuery as Eo, useListGeofenceEventsLazyQuery as Do, useListGeofenceEventsQuery as Oo, useListGeofenceEventsSuspenseQuery as ko, useListGeofencesLazyQuery as Ao, useListGeofencesQuery as jo, useListGeofencesSuspenseQuery as Mo, useListLocationEntriesLazyQuery as No, useListLocationEntriesQuery as Po, useListLocationEntriesSuspenseQuery as Fo, useListMeetingsLazyQuery as Io, useListMeetingsQuery as Lo, useListMeetingsSuspenseQuery as Ro, useListMyApprovalRequestsLazyQuery as zo, useListMyApprovalRequestsQuery as Bo, useListMyApprovalRequestsSuspenseQuery as Vo, useListPendingApprovalsLazyQuery as Ho, useListPendingApprovalsQuery as Uo, useListPendingApprovalsSuspenseQuery as Wo, useListPomodoroGoalsLazyQuery as Go, useListPomodoroGoalsQuery as Ko, useListPomodoroGoalsSuspenseQuery as qo, useListPomodoroSessionsLazyQuery as Jo, useListPomodoroSessionsQuery as Yo, useListPomodoroSessionsSuspenseQuery as Xo, useListProjectsLazyQuery as Zo, useListProjectsQuery as Qo, useListProjectsSuspenseQuery as $o, useListResourceAllocationsLazyQuery as es, useListResourceAllocationsQuery as ts, useListResourceAllocationsSuspenseQuery as ns, useListResourcePlansLazyQuery as rs, useListResourcePlansQuery as is, useListResourcePlansSuspenseQuery as as, useListRunningTimersLazyQuery as os, useListRunningTimersQuery as ss, useListRunningTimersSuspenseQuery as cs, useListTasksLazyQuery as ls, useListTasksQuery as us, useListTasksSuspenseQuery as ds, useListTeamWorkPatternsLazyQuery as fs, useListTeamWorkPatternsQuery as ps, useListTeamWorkPatternsSuspenseQuery as ms, useListTimeCampusCaptureEventsLazyQuery as hs, useListTimeCampusCaptureEventsQuery as gs, useListTimeCampusCaptureEventsSuspenseQuery as _s, useListTimeEntriesByDateLazyQuery as vs, useListTimeEntriesByDateQuery as ys, useListTimeEntriesByDateSuspenseQuery as bs, useListTimeEntriesLazyQuery as xs, useListTimeEntriesQuery as Ss, useListTimeEntriesSuspenseQuery as Cs, useListTopApplicationsLazyQuery as ws, useListTopApplicationsQuery as Ts, useListTopApplicationsSuspenseQuery as Es, useListUpcomingMeetingsLazyQuery as Ds, useListUpcomingMeetingsQuery as Os, useListUpcomingMeetingsSuspenseQuery as ks, useListUserAllocationsLazyQuery as As, useListUserAllocationsQuery as js, useListUserAllocationsSuspenseQuery as Ms, useListWorkPatternsLazyQuery as Ns, useListWorkPatternsQuery as Ps, useListWorkPatternsSuspenseQuery as Fs, useLogLifeTimeEntryMutation as Is, useMyBalanceTargetsLazyQuery as Ls, useMyBalanceTargetsQuery as Rs, useMyBalanceTargetsSuspenseQuery as zs, useMyContextSharingPolicyLazyQuery as Bs, useMyContextSharingPolicyQuery as Vs, useMyContextSharingPolicySuspenseQuery as Hs, useMyDeadTimeRadarLazyQuery as Us, useMyDeadTimeRadarQuery as Ws, useMyDeadTimeRadarSuspenseQuery as Gs, useMyLifeBalanceLazyQuery as Ks, useMyLifeBalanceQuery as qs, useMyLifeBalanceSuspenseQuery as Js, useMyLifeGoalsLazyQuery as Ys, useMyLifeGoalsQuery as Xs, useMyLifeGoalsSuspenseQuery as Zs, useMyLifeInWeeksLazyQuery as Qs, useMyLifeInWeeksQuery as $s, useMyLifeInWeeksSuspenseQuery as ec, useMyLifeProfileLazyQuery as tc, useMyLifeProfileQuery as nc, useMyLifeProfileSuspenseQuery as rc, useMyLifeValuesLazyQuery as ic, useMyLifeValuesQuery as ac, useMyLifeValuesSuspenseQuery as oc, useMyPersonalDataSummaryLazyQuery as sc, useMyPersonalDataSummaryQuery as cc, useMyPersonalDataSummarySuspenseQuery as lc, useMyRecommendationPreferencesLazyQuery as uc, useMyRecommendationPreferencesQuery as dc, useMyRecommendationPreferencesSuspenseQuery as fc, useMyRecommendationsLazyQuery as pc, useMyRecommendationsQuery as mc, useMyRecommendationsSuspenseQuery as hc, useMySourceConsentsLazyQuery as gc, useMySourceConsentsQuery as _c, useMySourceConsentsSuspenseQuery as vc, useMyTimeWellSpentLazyQuery as yc, useMyTimeWellSpentQuery as bc, useMyTimeWellSpentSuspenseQuery as xc, useRateMeetingMutation as Sc, useRecategorizeTimeCampusCaptureEventMutation as Cc, useRecordApplicationUsageMutation as wc, useRecordFocusScoreMutation as Tc, useRecordGeofenceEventMutation as Ec, useRecordWorkPatternMutation as Dc, useRegenerateClientPortalShareTokenMutation as Oc, useRejectExpenseMutation as kc, useRejectRequestMutation as Ac, useRemoveParticipantMutation as jc, useReorderTasksMutation as Mc, useRequestRevisionMutation as Nc, useRevokeSourceConsentMutation as Pc, useSetBalanceTargetMutation as Fc, useSnoozeRecommendationMutation as Ic, useStartPomodoroSessionMutation as Lc, useStartTimerMutation as Rc, useStopTimerMutation as zc, useSubmitApprovalRequestMutation as Bc, useSubmitExpenseForApprovalMutation as Vc, useToggleClientPortalMutation as Hc, useToggleGeofenceMutation as Uc, useUpdateActionItemMutation as Wc, useUpdateAllocationMutation as Gc, useUpdateApplicationUsageMutation as Kc, useUpdateClientPortalConfigMutation as qc, useUpdateContextSharingPolicyMutation as Jc, useUpdateEmailTimeEntryMutation as Yc, useUpdateExpenseMutation as Xc, useUpdateFocusScoreMutation as Zc, useUpdateGeofenceMutation as Qc, useUpdateLifeGoalMutation as $c, useUpdateLifeValueMutation as el, useUpdateLocationEntryMutation as tl, useUpdateMeetingMutation as nl, useUpdateMyLifeProfileMutation as rl, useUpdateMyRecommendationPreferencesMutation as il, useUpdateParticipantStatusMutation as al, useUpdatePomodoroGoalMutation as ol, useUpdatePomodoroSettingsMutation as sl, useUpdateProjectMutation as cl, useUpdateResourcePlanMutation as ll, useUpdateTaskMutation as ul, useUpdateTaskStatusMutation as dl, useUpdateTimeEntryMutation as fl, useUpdateWorkPatternMutation as pl, useWithdrawRequestMutation as ml } from "./generated/wspace-operations.js";
3
+ import { TimeCampusRoot as hl } from "./timecampus/TimeCampusRoot.js";
4
+ import { useTimeCampusStore as gl } from "./timecampus/store/timecampusStore.js";
5
+ import { useSandboxAssistantTransport as _l } from "./services/createSandboxAssistantTransport.js";
6
6
  import "./timecampus/index.js";
7
- export { n as AcceptRecommendationDocument, r as ActivateResourcePlanDocument, i as AddParticipantDocument, a as ApplicationUsageFieldsFragmentDoc, o as ApprovalRequestFieldsFragmentDoc, s as ApproveExpenseDocument, c as ApproveRequestDocument, l as ArchiveProjectDocument, u as BalanceTargetFieldsFragmentDoc, d as BulkCreateAllocationsDocument, f as BulkCreateEmailTimeEntriesDocument, p as BulkDeleteTimeEntriesDocument, m as CalculateFocusScoreDocument, h as CaptureEventFieldsFragmentDoc, g as CategorizeApplicationDocument, _ as ClientPortalFieldsFragmentDoc, v as CompleteActionItemDocument, y as CompletePomodoroSessionDocument, b as ContextSharingPolicyFieldsFragmentDoc, x as CreateActionItemDocument, S as CreateAllocationDocument, C as CreateClientPortalConfigDocument, w as CreateEmailTimeEntryDocument, T as CreateExpenseDocument, E as CreateGeofenceDocument, D as CreateLifeGoalDocument, O as CreateLocationEntryDocument, k as CreateMeetingDocument, A as CreatePomodoroGoalDocument, j as CreateProjectDocument, M as CreateResourcePlanDocument, N as CreateTaskDocument, P as CreateTimeEntryDocument, F as DeclareLifeValueDocument, I as DeleteActionItemDocument, L as DeleteAllocationDocument, R as DeleteApplicationUsageDocument, z as DeleteClientPortalConfigDocument, B as DeleteEmailTimeEntryDocument, V as DeleteExpenseDocument, H as DeleteFocusScoreDocument, U as DeleteGeofenceDocument, W as DeleteLifeGoalDocument, G as DeleteLifeValueDocument, K as DeleteLocationEntryDocument, q as DeleteMeetingDocument, J as DeletePomodoroGoalDocument, Y as DeleteProjectDocument, X as DeleteResourcePlanDocument, Z as DeleteTaskDocument, Q as DeleteTimeCampusCaptureEventDocument, $ as DeleteTimeEntryDocument, ee as DeleteWorkPatternDocument, te as DismissRecommendationDocument, ne as DuplicateTimeEntryDocument, re as EmailTimeEntryFieldsFragmentDoc, ie as ExpenseFieldsFragmentDoc, ae as FocusScoreFieldsFragmentDoc, oe as GenerateMyRecommendationsDocument, se as GeofenceEventFieldsFragmentDoc, ce as GeofenceFieldsFragmentDoc, le as GetActiveLocationEntryDocument, ue as GetActivePomodoroSessionDocument, de as GetAppUsageSummaryDocument, fe as GetApplicationUsageDocument, pe as GetApprovalRequestDocument, me as GetApprovalStatsDocument, he as GetCapacityOverviewDocument, ge as GetClientPortalConfigDocument, _e as GetClientPortalStatsDocument, ve as GetEmailTimeEntryDocument, ye as GetEmailTrackingStatsDocument, be as GetExpenseDocument, xe as GetExpenseStatsDocument, Se as GetFocusScoreDocument, Ce as GetFocusScoreSummaryDocument, we as GetFocusScoreTrendDocument, Te as GetGeofenceDocument, Ee as GetLocationEntryDocument, De as GetLocationStatsDocument, Oe as GetMeetingDocument, ke as GetMeetingStatsDocument, Ae as GetPomodoroSessionDocument, je as GetPomodoroSettingsDocument, Me as GetPomodoroStatsDocument, Ne as GetProjectDocument, Pe as GetProjectStatsDocument, Fe as GetResourcePlanDocument, Ie as GetTaskDocument, Le as GetTimeCampusTimelineDocument, Re as GetTimeEntryCountDocument, ze as GetTimeEntryDocument, Be as GetTimeEntryStatsDocument, Ve as GetTodayFocusScoreDocument, He as GetTodayWorkPatternDocument, Ue as GetWorkPatternDocument, We as GetWorkPatternSummaryDocument, Ge as GrantSourceConsentDocument, Ke as IngestTimeCampusCaptureEventsDocument, qe as InterruptPomodoroSessionDocument, Je as LifeGoalFieldsFragmentDoc, Ye as LifeProfileFieldsFragmentDoc, Xe as LifeTimelineDocument, Ze as LifeValueFieldsFragmentDoc, Qe as ListApplicationUsagesDocument, $e as ListApprovalRequestsDocument, et as ListClientPortalConfigsDocument, tt as ListEmailTimeEntriesDocument, nt as ListExpenseCategoriesDocument, rt as ListExpensesDocument, it as ListFocusScoresDocument, at as ListGeofenceEventsDocument, ot as ListGeofencesDocument, st as ListLocationEntriesDocument, ct as ListMeetingsDocument, lt as ListMyApprovalRequestsDocument, ut as ListPendingApprovalsDocument, dt as ListPomodoroGoalsDocument, ft as ListPomodoroSessionsDocument, pt as ListProjectsDocument, mt as ListResourceAllocationsDocument, ht as ListResourcePlansDocument, gt as ListRunningTimersDocument, _t as ListTasksDocument, vt as ListTimeCampusCaptureEventsDocument, yt as ListTimeEntriesByDateDocument, bt as ListTimeEntriesDocument, xt as ListTopApplicationsDocument, St as ListUpcomingMeetingsDocument, Ct as ListUserAllocationsDocument, wt as ListWorkPatternsDocument, Tt as LocationEntryFieldsFragmentDoc, Et as LogLifeTimeEntryDocument, Dt as MeetingActionItemFieldsFragmentDoc, Ot as MeetingFieldsFragmentDoc, kt as MeetingParticipantFieldsFragmentDoc, At as MyBalanceTargetsDocument, jt as MyContextSharingPolicyDocument, Mt as MyDeadTimeRadarDocument, Nt as MyLifeBalanceDocument, Pt as MyLifeGoalsDocument, Ft as MyLifeInWeeksDocument, It as MyLifeProfileDocument, Lt as MyLifeValuesDocument, Rt as MyPersonalDataSummaryDocument, zt as MyRecommendationPreferencesDocument, Bt as MyRecommendationsDocument, Vt as MySourceConsentsDocument, Ht as MyTimeWellSpentDocument, Ut as PomodoroGoalFieldsFragmentDoc, Wt as PomodoroSessionFieldsFragmentDoc, Gt as PomodoroSettingsFieldsFragmentDoc, Kt as ProjectFieldsFragmentDoc, qt as RateMeetingDocument, Jt as RecategorizeTimeCampusCaptureEventDocument, Yt as RecommendationFieldsFragmentDoc, Xt as RecommendationPreferenceFieldsFragmentDoc, Zt as RecordApplicationUsageDocument, Qt as RecordFocusScoreDocument, $t as RecordGeofenceEventDocument, en as RecordWorkPatternDocument, tn as RegenerateClientPortalShareTokenDocument, nn as RejectExpenseDocument, rn as RejectRequestDocument, an as RemoveParticipantDocument, on as ReorderTasksDocument, sn as RequestRevisionDocument, cn as ResourceAllocationFieldsFragmentDoc, ln as ResourcePlanFieldsFragmentDoc, un as RevokeSourceConsentDocument, dn as SetBalanceTargetDocument, fn as SnoozeRecommendationDocument, pn as SourceConsentFieldsFragmentDoc, mn as StartPomodoroSessionDocument, hn as StartTimerDocument, gn as StopTimerDocument, _n as SubmitApprovalRequestDocument, vn as SubmitExpenseForApprovalDocument, yn as TaskFieldsFragmentDoc, ol as TimeCampusRoot, bn as TimeEntryFieldsFragmentDoc, xn as TimelineSegmentFieldsFragmentDoc, Sn as TimelineSummaryFieldsFragmentDoc, Cn as ToggleClientPortalDocument, wn as ToggleGeofenceDocument, Tn as UpdateActionItemDocument, En as UpdateAllocationDocument, Dn as UpdateApplicationUsageDocument, On as UpdateClientPortalConfigDocument, kn as UpdateContextSharingPolicyDocument, An as UpdateEmailTimeEntryDocument, jn as UpdateExpenseDocument, Mn as UpdateFocusScoreDocument, Nn as UpdateGeofenceDocument, Pn as UpdateLifeGoalDocument, Fn as UpdateLifeValueDocument, In as UpdateLocationEntryDocument, Ln as UpdateMeetingDocument, Rn as UpdateMyLifeProfileDocument, zn as UpdateMyRecommendationPreferencesDocument, Bn as UpdateParticipantStatusDocument, Vn as UpdatePomodoroGoalDocument, Hn as UpdatePomodoroSettingsDocument, Un as UpdateProjectDocument, Wn as UpdateResourcePlanDocument, Gn as UpdateTaskDocument, Kn as UpdateTaskStatusDocument, qn as UpdateTimeEntryDocument, Jn as UpdateWorkPatternDocument, Yn as WithdrawRequestDocument, Xn as WorkPatternFieldsFragmentDoc, Zn as useAcceptRecommendationMutation, Qn as useActivateResourcePlanMutation, $n as useAddParticipantMutation, er as useApproveExpenseMutation, tr as useApproveRequestMutation, nr as useArchiveProjectMutation, rr as useBulkCreateAllocationsMutation, ir as useBulkCreateEmailTimeEntriesMutation, ar as useBulkDeleteTimeEntriesMutation, or as useCalculateFocusScoreMutation, sr as useCategorizeApplicationMutation, cr as useCompleteActionItemMutation, lr as useCompletePomodoroSessionMutation, ur as useCreateActionItemMutation, dr as useCreateAllocationMutation, fr as useCreateClientPortalConfigMutation, pr as useCreateEmailTimeEntryMutation, mr as useCreateExpenseMutation, hr as useCreateGeofenceMutation, gr as useCreateLifeGoalMutation, _r as useCreateLocationEntryMutation, vr as useCreateMeetingMutation, yr as useCreatePomodoroGoalMutation, br as useCreateProjectMutation, xr as useCreateResourcePlanMutation, Sr as useCreateTaskMutation, Cr as useCreateTimeEntryMutation, wr as useDeclareLifeValueMutation, Tr as useDeleteActionItemMutation, Er as useDeleteAllocationMutation, Dr as useDeleteApplicationUsageMutation, Or as useDeleteClientPortalConfigMutation, kr as useDeleteEmailTimeEntryMutation, Ar as useDeleteExpenseMutation, jr as useDeleteFocusScoreMutation, Mr as useDeleteGeofenceMutation, Nr as useDeleteLifeGoalMutation, Pr as useDeleteLifeValueMutation, Fr as useDeleteLocationEntryMutation, Ir as useDeleteMeetingMutation, Lr as useDeletePomodoroGoalMutation, Rr as useDeleteProjectMutation, zr as useDeleteResourcePlanMutation, Br as useDeleteTaskMutation, Vr as useDeleteTimeCampusCaptureEventMutation, Hr as useDeleteTimeEntryMutation, Ur as useDeleteWorkPatternMutation, Wr as useDismissRecommendationMutation, Gr as useDuplicateTimeEntryMutation, Kr as useGenerateMyRecommendationsMutation, qr as useGetActiveLocationEntryLazyQuery, Jr as useGetActiveLocationEntryQuery, Yr as useGetActiveLocationEntrySuspenseQuery, Xr as useGetActivePomodoroSessionLazyQuery, Zr as useGetActivePomodoroSessionQuery, Qr as useGetActivePomodoroSessionSuspenseQuery, $r as useGetAppUsageSummaryLazyQuery, ei as useGetAppUsageSummaryQuery, ti as useGetAppUsageSummarySuspenseQuery, ni as useGetApplicationUsageLazyQuery, ri as useGetApplicationUsageQuery, ii as useGetApplicationUsageSuspenseQuery, ai as useGetApprovalRequestLazyQuery, oi as useGetApprovalRequestQuery, si as useGetApprovalRequestSuspenseQuery, ci as useGetApprovalStatsLazyQuery, li as useGetApprovalStatsQuery, ui as useGetApprovalStatsSuspenseQuery, di as useGetCapacityOverviewLazyQuery, fi as useGetCapacityOverviewQuery, pi as useGetCapacityOverviewSuspenseQuery, mi as useGetClientPortalConfigLazyQuery, hi as useGetClientPortalConfigQuery, gi as useGetClientPortalConfigSuspenseQuery, _i as useGetClientPortalStatsLazyQuery, vi as useGetClientPortalStatsQuery, yi as useGetClientPortalStatsSuspenseQuery, bi as useGetEmailTimeEntryLazyQuery, xi as useGetEmailTimeEntryQuery, Si as useGetEmailTimeEntrySuspenseQuery, Ci as useGetEmailTrackingStatsLazyQuery, wi as useGetEmailTrackingStatsQuery, Ti as useGetEmailTrackingStatsSuspenseQuery, Ei as useGetExpenseLazyQuery, Di as useGetExpenseQuery, Oi as useGetExpenseStatsLazyQuery, ki as useGetExpenseStatsQuery, Ai as useGetExpenseStatsSuspenseQuery, ji as useGetExpenseSuspenseQuery, Mi as useGetFocusScoreLazyQuery, Ni as useGetFocusScoreQuery, Pi as useGetFocusScoreSummaryLazyQuery, Fi as useGetFocusScoreSummaryQuery, Ii as useGetFocusScoreSummarySuspenseQuery, Li as useGetFocusScoreSuspenseQuery, Ri as useGetFocusScoreTrendLazyQuery, zi as useGetFocusScoreTrendQuery, Bi as useGetFocusScoreTrendSuspenseQuery, Vi as useGetGeofenceLazyQuery, Hi as useGetGeofenceQuery, Ui as useGetGeofenceSuspenseQuery, Wi as useGetLocationEntryLazyQuery, Gi as useGetLocationEntryQuery, Ki as useGetLocationEntrySuspenseQuery, qi as useGetLocationStatsLazyQuery, Ji as useGetLocationStatsQuery, Yi as useGetLocationStatsSuspenseQuery, Xi as useGetMeetingLazyQuery, Zi as useGetMeetingQuery, Qi as useGetMeetingStatsLazyQuery, $i as useGetMeetingStatsQuery, ea as useGetMeetingStatsSuspenseQuery, ta as useGetMeetingSuspenseQuery, na as useGetPomodoroSessionLazyQuery, ra as useGetPomodoroSessionQuery, ia as useGetPomodoroSessionSuspenseQuery, aa as useGetPomodoroSettingsLazyQuery, oa as useGetPomodoroSettingsQuery, sa as useGetPomodoroSettingsSuspenseQuery, ca as useGetPomodoroStatsLazyQuery, la as useGetPomodoroStatsQuery, ua as useGetPomodoroStatsSuspenseQuery, da as useGetProjectLazyQuery, fa as useGetProjectQuery, pa as useGetProjectStatsLazyQuery, ma as useGetProjectStatsQuery, ha as useGetProjectStatsSuspenseQuery, ga as useGetProjectSuspenseQuery, _a as useGetResourcePlanLazyQuery, va as useGetResourcePlanQuery, ya as useGetResourcePlanSuspenseQuery, ba as useGetTaskLazyQuery, xa as useGetTaskQuery, Sa as useGetTaskSuspenseQuery, Ca as useGetTimeCampusTimelineLazyQuery, wa as useGetTimeCampusTimelineQuery, Ta as useGetTimeCampusTimelineSuspenseQuery, Ea as useGetTimeEntryCountLazyQuery, Da as useGetTimeEntryCountQuery, Oa as useGetTimeEntryCountSuspenseQuery, ka as useGetTimeEntryLazyQuery, Aa as useGetTimeEntryQuery, ja as useGetTimeEntryStatsLazyQuery, Ma as useGetTimeEntryStatsQuery, Na as useGetTimeEntryStatsSuspenseQuery, Pa as useGetTimeEntrySuspenseQuery, Fa as useGetTodayFocusScoreLazyQuery, Ia as useGetTodayFocusScoreQuery, La as useGetTodayFocusScoreSuspenseQuery, Ra as useGetTodayWorkPatternLazyQuery, za as useGetTodayWorkPatternQuery, Ba as useGetTodayWorkPatternSuspenseQuery, Va as useGetWorkPatternLazyQuery, Ha as useGetWorkPatternQuery, Ua as useGetWorkPatternSummaryLazyQuery, Wa as useGetWorkPatternSummaryQuery, Ga as useGetWorkPatternSummarySuspenseQuery, Ka as useGetWorkPatternSuspenseQuery, qa as useGrantSourceConsentMutation, Ja as useIngestTimeCampusCaptureEventsMutation, Ya as useInterruptPomodoroSessionMutation, Xa as useLifeTimelineLazyQuery, Za as useLifeTimelineQuery, Qa as useLifeTimelineSuspenseQuery, $a as useListApplicationUsagesLazyQuery, eo as useListApplicationUsagesQuery, to as useListApplicationUsagesSuspenseQuery, no as useListApprovalRequestsLazyQuery, ro as useListApprovalRequestsQuery, io as useListApprovalRequestsSuspenseQuery, ao as useListClientPortalConfigsLazyQuery, oo as useListClientPortalConfigsQuery, so as useListClientPortalConfigsSuspenseQuery, co as useListEmailTimeEntriesLazyQuery, lo as useListEmailTimeEntriesQuery, uo as useListEmailTimeEntriesSuspenseQuery, fo as useListExpenseCategoriesLazyQuery, po as useListExpenseCategoriesQuery, mo as useListExpenseCategoriesSuspenseQuery, ho as useListExpensesLazyQuery, go as useListExpensesQuery, _o as useListExpensesSuspenseQuery, vo as useListFocusScoresLazyQuery, yo as useListFocusScoresQuery, bo as useListFocusScoresSuspenseQuery, xo as useListGeofenceEventsLazyQuery, So as useListGeofenceEventsQuery, Co as useListGeofenceEventsSuspenseQuery, wo as useListGeofencesLazyQuery, To as useListGeofencesQuery, Eo as useListGeofencesSuspenseQuery, Do as useListLocationEntriesLazyQuery, Oo as useListLocationEntriesQuery, ko as useListLocationEntriesSuspenseQuery, Ao as useListMeetingsLazyQuery, jo as useListMeetingsQuery, Mo as useListMeetingsSuspenseQuery, No as useListMyApprovalRequestsLazyQuery, Po as useListMyApprovalRequestsQuery, Fo as useListMyApprovalRequestsSuspenseQuery, Io as useListPendingApprovalsLazyQuery, Lo as useListPendingApprovalsQuery, Ro as useListPendingApprovalsSuspenseQuery, zo as useListPomodoroGoalsLazyQuery, Bo as useListPomodoroGoalsQuery, Vo as useListPomodoroGoalsSuspenseQuery, Ho as useListPomodoroSessionsLazyQuery, Uo as useListPomodoroSessionsQuery, Wo as useListPomodoroSessionsSuspenseQuery, Go as useListProjectsLazyQuery, Ko as useListProjectsQuery, qo as useListProjectsSuspenseQuery, Jo as useListResourceAllocationsLazyQuery, Yo as useListResourceAllocationsQuery, Xo as useListResourceAllocationsSuspenseQuery, Zo as useListResourcePlansLazyQuery, Qo as useListResourcePlansQuery, $o as useListResourcePlansSuspenseQuery, es as useListRunningTimersLazyQuery, ts as useListRunningTimersQuery, ns as useListRunningTimersSuspenseQuery, rs as useListTasksLazyQuery, is as useListTasksQuery, as as useListTasksSuspenseQuery, os as useListTimeCampusCaptureEventsLazyQuery, ss as useListTimeCampusCaptureEventsQuery, cs as useListTimeCampusCaptureEventsSuspenseQuery, ls as useListTimeEntriesByDateLazyQuery, us as useListTimeEntriesByDateQuery, ds as useListTimeEntriesByDateSuspenseQuery, fs as useListTimeEntriesLazyQuery, ps as useListTimeEntriesQuery, ms as useListTimeEntriesSuspenseQuery, hs as useListTopApplicationsLazyQuery, gs as useListTopApplicationsQuery, _s as useListTopApplicationsSuspenseQuery, vs as useListUpcomingMeetingsLazyQuery, ys as useListUpcomingMeetingsQuery, bs as useListUpcomingMeetingsSuspenseQuery, xs as useListUserAllocationsLazyQuery, Ss as useListUserAllocationsQuery, Cs as useListUserAllocationsSuspenseQuery, ws as useListWorkPatternsLazyQuery, Ts as useListWorkPatternsQuery, Es as useListWorkPatternsSuspenseQuery, Ds as useLogLifeTimeEntryMutation, Os as useMyBalanceTargetsLazyQuery, ks as useMyBalanceTargetsQuery, As as useMyBalanceTargetsSuspenseQuery, js as useMyContextSharingPolicyLazyQuery, Ms as useMyContextSharingPolicyQuery, Ns as useMyContextSharingPolicySuspenseQuery, Ps as useMyDeadTimeRadarLazyQuery, Fs as useMyDeadTimeRadarQuery, Is as useMyDeadTimeRadarSuspenseQuery, Ls as useMyLifeBalanceLazyQuery, Rs as useMyLifeBalanceQuery, zs as useMyLifeBalanceSuspenseQuery, Bs as useMyLifeGoalsLazyQuery, Vs as useMyLifeGoalsQuery, Hs as useMyLifeGoalsSuspenseQuery, Us as useMyLifeInWeeksLazyQuery, Ws as useMyLifeInWeeksQuery, Gs as useMyLifeInWeeksSuspenseQuery, Ks as useMyLifeProfileLazyQuery, qs as useMyLifeProfileQuery, Js as useMyLifeProfileSuspenseQuery, Ys as useMyLifeValuesLazyQuery, Xs as useMyLifeValuesQuery, Zs as useMyLifeValuesSuspenseQuery, Qs as useMyPersonalDataSummaryLazyQuery, $s as useMyPersonalDataSummaryQuery, ec as useMyPersonalDataSummarySuspenseQuery, tc as useMyRecommendationPreferencesLazyQuery, nc as useMyRecommendationPreferencesQuery, rc as useMyRecommendationPreferencesSuspenseQuery, ic as useMyRecommendationsLazyQuery, ac as useMyRecommendationsQuery, oc as useMyRecommendationsSuspenseQuery, sc as useMySourceConsentsLazyQuery, cc as useMySourceConsentsQuery, lc as useMySourceConsentsSuspenseQuery, uc as useMyTimeWellSpentLazyQuery, dc as useMyTimeWellSpentQuery, fc as useMyTimeWellSpentSuspenseQuery, pc as useRateMeetingMutation, mc as useRecategorizeTimeCampusCaptureEventMutation, hc as useRecordApplicationUsageMutation, gc as useRecordFocusScoreMutation, _c as useRecordGeofenceEventMutation, vc as useRecordWorkPatternMutation, yc as useRegenerateClientPortalShareTokenMutation, bc as useRejectExpenseMutation, xc as useRejectRequestMutation, Sc as useRemoveParticipantMutation, Cc as useReorderTasksMutation, wc as useRequestRevisionMutation, Tc as useRevokeSourceConsentMutation, cl as useSandboxAssistantTransport, Ec as useSetBalanceTargetMutation, Dc as useSnoozeRecommendationMutation, Oc as useStartPomodoroSessionMutation, kc as useStartTimerMutation, Ac as useStopTimerMutation, jc as useSubmitApprovalRequestMutation, Mc as useSubmitExpenseForApprovalMutation, e as useTimeCampus, t as useTimeCampusNavigate, sl as useTimeCampusStore, Nc as useToggleClientPortalMutation, Pc as useToggleGeofenceMutation, Fc as useUpdateActionItemMutation, Ic as useUpdateAllocationMutation, Lc as useUpdateApplicationUsageMutation, Rc as useUpdateClientPortalConfigMutation, zc as useUpdateContextSharingPolicyMutation, Bc as useUpdateEmailTimeEntryMutation, Vc as useUpdateExpenseMutation, Hc as useUpdateFocusScoreMutation, Uc as useUpdateGeofenceMutation, Wc as useUpdateLifeGoalMutation, Gc as useUpdateLifeValueMutation, Kc as useUpdateLocationEntryMutation, qc as useUpdateMeetingMutation, Jc as useUpdateMyLifeProfileMutation, Yc as useUpdateMyRecommendationPreferencesMutation, Xc as useUpdateParticipantStatusMutation, Zc as useUpdatePomodoroGoalMutation, Qc as useUpdatePomodoroSettingsMutation, $c as useUpdateProjectMutation, el as useUpdateResourcePlanMutation, tl as useUpdateTaskMutation, nl as useUpdateTaskStatusMutation, rl as useUpdateTimeEntryMutation, il as useUpdateWorkPatternMutation, al as useWithdrawRequestMutation };
7
+ export { n as AcceptRecommendationDocument, r as ActivateResourcePlanDocument, i as AddParticipantDocument, a as ApplicationUsageFieldsFragmentDoc, o as ApprovalRequestFieldsFragmentDoc, s as ApproveExpenseDocument, c as ApproveRequestDocument, l as ArchiveProjectDocument, u as BalanceTargetFieldsFragmentDoc, d as BulkCreateAllocationsDocument, f as BulkCreateEmailTimeEntriesDocument, p as BulkDeleteTimeEntriesDocument, m as CalculateFocusScoreDocument, h as CaptureEventFieldsFragmentDoc, g as CategorizeApplicationDocument, _ as ClientPortalFieldsFragmentDoc, v as CompleteActionItemDocument, y as CompletePomodoroSessionDocument, b as ContextSharingPolicyFieldsFragmentDoc, x as CreateActionItemDocument, S as CreateAllocationDocument, C as CreateClientPortalConfigDocument, w as CreateEmailTimeEntryDocument, T as CreateExpenseDocument, E as CreateGeofenceDocument, D as CreateLifeGoalDocument, O as CreateLocationEntryDocument, k as CreateMeetingDocument, A as CreatePomodoroGoalDocument, j as CreateProjectDocument, M as CreateResourcePlanDocument, N as CreateTaskDocument, P as CreateTimeEntryDocument, F as DeclareLifeValueDocument, I as DeleteActionItemDocument, L as DeleteAllocationDocument, R as DeleteApplicationUsageDocument, z as DeleteClientPortalConfigDocument, B as DeleteEmailTimeEntryDocument, V as DeleteExpenseDocument, H as DeleteFocusScoreDocument, U as DeleteGeofenceDocument, W as DeleteLifeGoalDocument, G as DeleteLifeValueDocument, K as DeleteLocationEntryDocument, q as DeleteMeetingDocument, J as DeletePomodoroGoalDocument, Y as DeleteProjectDocument, X as DeleteResourcePlanDocument, Z as DeleteTaskDocument, Q as DeleteTimeCampusCaptureEventDocument, $ as DeleteTimeEntryDocument, ee as DeleteWorkPatternDocument, te as DismissRecommendationDocument, ne as DuplicateTimeEntryDocument, re as EmailTimeEntryFieldsFragmentDoc, ie as ExpenseFieldsFragmentDoc, ae as FocusScoreFieldsFragmentDoc, oe as GenerateMyRecommendationsDocument, se as GeofenceEventFieldsFragmentDoc, ce as GeofenceFieldsFragmentDoc, le as GetActiveLocationEntryDocument, ue as GetActivePomodoroSessionDocument, de as GetAppUsageSummaryDocument, fe as GetApplicationUsageDocument, pe as GetApprovalRequestDocument, me as GetApprovalStatsDocument, he as GetCapacityOverviewDocument, ge as GetClientPortalConfigDocument, _e as GetClientPortalStatsDocument, ve as GetEmailTimeEntryDocument, ye as GetEmailTrackingStatsDocument, be as GetExpenseDocument, xe as GetExpenseStatsDocument, Se as GetFocusScoreDocument, Ce as GetFocusScoreSummaryDocument, we as GetFocusScoreTrendDocument, Te as GetGeofenceDocument, Ee as GetLocationEntryDocument, De as GetLocationStatsDocument, Oe as GetMeetingDocument, ke as GetMeetingStatsDocument, Ae as GetPomodoroSessionDocument, je as GetPomodoroSettingsDocument, Me as GetPomodoroStatsDocument, Ne as GetProjectDocument, Pe as GetProjectStatsDocument, Fe as GetResourcePlanDocument, Ie as GetTaskDocument, Le as GetTeamWorkPatternSummaryDocument, Re as GetTimeCampusTimelineDocument, ze as GetTimeEntryCountDocument, Be as GetTimeEntryDocument, Ve as GetTimeEntryStatsDocument, He as GetTodayFocusScoreDocument, Ue as GetTodayWorkPatternDocument, We as GetWorkPatternDocument, Ge as GetWorkPatternSummaryDocument, Ke as GrantSourceConsentDocument, qe as IngestTimeCampusCaptureEventsDocument, Je as InterruptPomodoroSessionDocument, Ye as LifeGoalFieldsFragmentDoc, Xe as LifeProfileFieldsFragmentDoc, Ze as LifeTimelineDocument, Qe as LifeValueFieldsFragmentDoc, $e as ListApplicationUsagesDocument, et as ListApprovalRequestsDocument, tt as ListClientPortalConfigsDocument, nt as ListEmailTimeEntriesDocument, rt as ListExpenseCategoriesDocument, it as ListExpensesDocument, at as ListFocusScoresDocument, ot as ListGeofenceEventsDocument, st as ListGeofencesDocument, ct as ListLocationEntriesDocument, lt as ListMeetingsDocument, ut as ListMyApprovalRequestsDocument, dt as ListPendingApprovalsDocument, ft as ListPomodoroGoalsDocument, pt as ListPomodoroSessionsDocument, mt as ListProjectsDocument, ht as ListResourceAllocationsDocument, gt as ListResourcePlansDocument, _t as ListRunningTimersDocument, vt as ListTasksDocument, yt as ListTeamWorkPatternsDocument, bt as ListTimeCampusCaptureEventsDocument, xt as ListTimeEntriesByDateDocument, St as ListTimeEntriesDocument, Ct as ListTopApplicationsDocument, wt as ListUpcomingMeetingsDocument, Tt as ListUserAllocationsDocument, Et as ListWorkPatternsDocument, Dt as LocationEntryFieldsFragmentDoc, Ot as LogLifeTimeEntryDocument, kt as MeetingActionItemFieldsFragmentDoc, At as MeetingFieldsFragmentDoc, jt as MeetingParticipantFieldsFragmentDoc, Mt as MyBalanceTargetsDocument, Nt as MyContextSharingPolicyDocument, Pt as MyDeadTimeRadarDocument, Ft as MyLifeBalanceDocument, It as MyLifeGoalsDocument, Lt as MyLifeInWeeksDocument, Rt as MyLifeProfileDocument, zt as MyLifeValuesDocument, Bt as MyPersonalDataSummaryDocument, Vt as MyRecommendationPreferencesDocument, Ht as MyRecommendationsDocument, Ut as MySourceConsentsDocument, Wt as MyTimeWellSpentDocument, Gt as PomodoroGoalFieldsFragmentDoc, Kt as PomodoroSessionFieldsFragmentDoc, qt as PomodoroSettingsFieldsFragmentDoc, Jt as ProjectFieldsFragmentDoc, Yt as RateMeetingDocument, Xt as RecategorizeTimeCampusCaptureEventDocument, Zt as RecommendationFieldsFragmentDoc, Qt as RecommendationPreferenceFieldsFragmentDoc, $t as RecordApplicationUsageDocument, en as RecordFocusScoreDocument, tn as RecordGeofenceEventDocument, nn as RecordWorkPatternDocument, rn as RegenerateClientPortalShareTokenDocument, an as RejectExpenseDocument, on as RejectRequestDocument, sn as RemoveParticipantDocument, cn as ReorderTasksDocument, ln as RequestRevisionDocument, un as ResourceAllocationFieldsFragmentDoc, dn as ResourcePlanFieldsFragmentDoc, fn as RevokeSourceConsentDocument, pn as SetBalanceTargetDocument, mn as SnoozeRecommendationDocument, hn as SourceConsentFieldsFragmentDoc, gn as StartPomodoroSessionDocument, _n as StartTimerDocument, vn as StopTimerDocument, yn as SubmitApprovalRequestDocument, bn as SubmitExpenseForApprovalDocument, xn as TaskFieldsFragmentDoc, Sn as TeamWorkPatternEntryFieldsFragmentDoc, hl as TimeCampusRoot, Cn as TimeEntryFieldsFragmentDoc, wn as TimelineSegmentFieldsFragmentDoc, Tn as TimelineSummaryFieldsFragmentDoc, En as ToggleClientPortalDocument, Dn as ToggleGeofenceDocument, On as UpdateActionItemDocument, kn as UpdateAllocationDocument, An as UpdateApplicationUsageDocument, jn as UpdateClientPortalConfigDocument, Mn as UpdateContextSharingPolicyDocument, Nn as UpdateEmailTimeEntryDocument, Pn as UpdateExpenseDocument, Fn as UpdateFocusScoreDocument, In as UpdateGeofenceDocument, Ln as UpdateLifeGoalDocument, Rn as UpdateLifeValueDocument, zn as UpdateLocationEntryDocument, Bn as UpdateMeetingDocument, Vn as UpdateMyLifeProfileDocument, Hn as UpdateMyRecommendationPreferencesDocument, Un as UpdateParticipantStatusDocument, Wn as UpdatePomodoroGoalDocument, Gn as UpdatePomodoroSettingsDocument, Kn as UpdateProjectDocument, qn as UpdateResourcePlanDocument, Jn as UpdateTaskDocument, Yn as UpdateTaskStatusDocument, Xn as UpdateTimeEntryDocument, Zn as UpdateWorkPatternDocument, Qn as WithdrawRequestDocument, $n as WorkPatternFieldsFragmentDoc, er as useAcceptRecommendationMutation, tr as useActivateResourcePlanMutation, nr as useAddParticipantMutation, rr as useApproveExpenseMutation, ir as useApproveRequestMutation, ar as useArchiveProjectMutation, or as useBulkCreateAllocationsMutation, sr as useBulkCreateEmailTimeEntriesMutation, cr as useBulkDeleteTimeEntriesMutation, lr as useCalculateFocusScoreMutation, ur as useCategorizeApplicationMutation, dr as useCompleteActionItemMutation, fr as useCompletePomodoroSessionMutation, pr as useCreateActionItemMutation, mr as useCreateAllocationMutation, hr as useCreateClientPortalConfigMutation, gr as useCreateEmailTimeEntryMutation, _r as useCreateExpenseMutation, vr as useCreateGeofenceMutation, yr as useCreateLifeGoalMutation, br as useCreateLocationEntryMutation, xr as useCreateMeetingMutation, Sr as useCreatePomodoroGoalMutation, Cr as useCreateProjectMutation, wr as useCreateResourcePlanMutation, Tr as useCreateTaskMutation, Er as useCreateTimeEntryMutation, Dr as useDeclareLifeValueMutation, Or as useDeleteActionItemMutation, kr as useDeleteAllocationMutation, Ar as useDeleteApplicationUsageMutation, jr as useDeleteClientPortalConfigMutation, Mr as useDeleteEmailTimeEntryMutation, Nr as useDeleteExpenseMutation, Pr as useDeleteFocusScoreMutation, Fr as useDeleteGeofenceMutation, Ir as useDeleteLifeGoalMutation, Lr as useDeleteLifeValueMutation, Rr as useDeleteLocationEntryMutation, zr as useDeleteMeetingMutation, Br as useDeletePomodoroGoalMutation, Vr as useDeleteProjectMutation, Hr as useDeleteResourcePlanMutation, Ur as useDeleteTaskMutation, Wr as useDeleteTimeCampusCaptureEventMutation, Gr as useDeleteTimeEntryMutation, Kr as useDeleteWorkPatternMutation, qr as useDismissRecommendationMutation, Jr as useDuplicateTimeEntryMutation, Yr as useGenerateMyRecommendationsMutation, Xr as useGetActiveLocationEntryLazyQuery, Zr as useGetActiveLocationEntryQuery, Qr as useGetActiveLocationEntrySuspenseQuery, $r as useGetActivePomodoroSessionLazyQuery, ei as useGetActivePomodoroSessionQuery, ti as useGetActivePomodoroSessionSuspenseQuery, ni as useGetAppUsageSummaryLazyQuery, ri as useGetAppUsageSummaryQuery, ii as useGetAppUsageSummarySuspenseQuery, ai as useGetApplicationUsageLazyQuery, oi as useGetApplicationUsageQuery, si as useGetApplicationUsageSuspenseQuery, ci as useGetApprovalRequestLazyQuery, li as useGetApprovalRequestQuery, ui as useGetApprovalRequestSuspenseQuery, di as useGetApprovalStatsLazyQuery, fi as useGetApprovalStatsQuery, pi as useGetApprovalStatsSuspenseQuery, mi as useGetCapacityOverviewLazyQuery, hi as useGetCapacityOverviewQuery, gi as useGetCapacityOverviewSuspenseQuery, _i as useGetClientPortalConfigLazyQuery, vi as useGetClientPortalConfigQuery, yi as useGetClientPortalConfigSuspenseQuery, bi as useGetClientPortalStatsLazyQuery, xi as useGetClientPortalStatsQuery, Si as useGetClientPortalStatsSuspenseQuery, Ci as useGetEmailTimeEntryLazyQuery, wi as useGetEmailTimeEntryQuery, Ti as useGetEmailTimeEntrySuspenseQuery, Ei as useGetEmailTrackingStatsLazyQuery, Di as useGetEmailTrackingStatsQuery, Oi as useGetEmailTrackingStatsSuspenseQuery, ki as useGetExpenseLazyQuery, Ai as useGetExpenseQuery, ji as useGetExpenseStatsLazyQuery, Mi as useGetExpenseStatsQuery, Ni as useGetExpenseStatsSuspenseQuery, Pi as useGetExpenseSuspenseQuery, Fi as useGetFocusScoreLazyQuery, Ii as useGetFocusScoreQuery, Li as useGetFocusScoreSummaryLazyQuery, Ri as useGetFocusScoreSummaryQuery, zi as useGetFocusScoreSummarySuspenseQuery, Bi as useGetFocusScoreSuspenseQuery, Vi as useGetFocusScoreTrendLazyQuery, Hi as useGetFocusScoreTrendQuery, Ui as useGetFocusScoreTrendSuspenseQuery, Wi as useGetGeofenceLazyQuery, Gi as useGetGeofenceQuery, Ki as useGetGeofenceSuspenseQuery, qi as useGetLocationEntryLazyQuery, Ji as useGetLocationEntryQuery, Yi as useGetLocationEntrySuspenseQuery, Xi as useGetLocationStatsLazyQuery, Zi as useGetLocationStatsQuery, Qi as useGetLocationStatsSuspenseQuery, $i as useGetMeetingLazyQuery, ea as useGetMeetingQuery, ta as useGetMeetingStatsLazyQuery, na as useGetMeetingStatsQuery, ra as useGetMeetingStatsSuspenseQuery, ia as useGetMeetingSuspenseQuery, aa as useGetPomodoroSessionLazyQuery, oa as useGetPomodoroSessionQuery, sa as useGetPomodoroSessionSuspenseQuery, ca as useGetPomodoroSettingsLazyQuery, la as useGetPomodoroSettingsQuery, ua as useGetPomodoroSettingsSuspenseQuery, da as useGetPomodoroStatsLazyQuery, fa as useGetPomodoroStatsQuery, pa as useGetPomodoroStatsSuspenseQuery, ma as useGetProjectLazyQuery, ha as useGetProjectQuery, ga as useGetProjectStatsLazyQuery, _a as useGetProjectStatsQuery, va as useGetProjectStatsSuspenseQuery, ya as useGetProjectSuspenseQuery, ba as useGetResourcePlanLazyQuery, xa as useGetResourcePlanQuery, Sa as useGetResourcePlanSuspenseQuery, Ca as useGetTaskLazyQuery, wa as useGetTaskQuery, Ta as useGetTaskSuspenseQuery, Ea as useGetTeamWorkPatternSummaryLazyQuery, Da as useGetTeamWorkPatternSummaryQuery, Oa as useGetTeamWorkPatternSummarySuspenseQuery, ka as useGetTimeCampusTimelineLazyQuery, Aa as useGetTimeCampusTimelineQuery, ja as useGetTimeCampusTimelineSuspenseQuery, Ma as useGetTimeEntryCountLazyQuery, Na as useGetTimeEntryCountQuery, Pa as useGetTimeEntryCountSuspenseQuery, Fa as useGetTimeEntryLazyQuery, Ia as useGetTimeEntryQuery, La as useGetTimeEntryStatsLazyQuery, Ra as useGetTimeEntryStatsQuery, za as useGetTimeEntryStatsSuspenseQuery, Ba as useGetTimeEntrySuspenseQuery, Va as useGetTodayFocusScoreLazyQuery, Ha as useGetTodayFocusScoreQuery, Ua as useGetTodayFocusScoreSuspenseQuery, Wa as useGetTodayWorkPatternLazyQuery, Ga as useGetTodayWorkPatternQuery, Ka as useGetTodayWorkPatternSuspenseQuery, qa as useGetWorkPatternLazyQuery, Ja as useGetWorkPatternQuery, Ya as useGetWorkPatternSummaryLazyQuery, Xa as useGetWorkPatternSummaryQuery, Za as useGetWorkPatternSummarySuspenseQuery, Qa as useGetWorkPatternSuspenseQuery, $a as useGrantSourceConsentMutation, eo as useIngestTimeCampusCaptureEventsMutation, to as useInterruptPomodoroSessionMutation, no as useLifeTimelineLazyQuery, ro as useLifeTimelineQuery, io as useLifeTimelineSuspenseQuery, ao as useListApplicationUsagesLazyQuery, oo as useListApplicationUsagesQuery, so as useListApplicationUsagesSuspenseQuery, co as useListApprovalRequestsLazyQuery, lo as useListApprovalRequestsQuery, uo as useListApprovalRequestsSuspenseQuery, fo as useListClientPortalConfigsLazyQuery, po as useListClientPortalConfigsQuery, mo as useListClientPortalConfigsSuspenseQuery, ho as useListEmailTimeEntriesLazyQuery, go as useListEmailTimeEntriesQuery, _o as useListEmailTimeEntriesSuspenseQuery, vo as useListExpenseCategoriesLazyQuery, yo as useListExpenseCategoriesQuery, bo as useListExpenseCategoriesSuspenseQuery, xo as useListExpensesLazyQuery, So as useListExpensesQuery, Co as useListExpensesSuspenseQuery, wo as useListFocusScoresLazyQuery, To as useListFocusScoresQuery, Eo as useListFocusScoresSuspenseQuery, Do as useListGeofenceEventsLazyQuery, Oo as useListGeofenceEventsQuery, ko as useListGeofenceEventsSuspenseQuery, Ao as useListGeofencesLazyQuery, jo as useListGeofencesQuery, Mo as useListGeofencesSuspenseQuery, No as useListLocationEntriesLazyQuery, Po as useListLocationEntriesQuery, Fo as useListLocationEntriesSuspenseQuery, Io as useListMeetingsLazyQuery, Lo as useListMeetingsQuery, Ro as useListMeetingsSuspenseQuery, zo as useListMyApprovalRequestsLazyQuery, Bo as useListMyApprovalRequestsQuery, Vo as useListMyApprovalRequestsSuspenseQuery, Ho as useListPendingApprovalsLazyQuery, Uo as useListPendingApprovalsQuery, Wo as useListPendingApprovalsSuspenseQuery, Go as useListPomodoroGoalsLazyQuery, Ko as useListPomodoroGoalsQuery, qo as useListPomodoroGoalsSuspenseQuery, Jo as useListPomodoroSessionsLazyQuery, Yo as useListPomodoroSessionsQuery, Xo as useListPomodoroSessionsSuspenseQuery, Zo as useListProjectsLazyQuery, Qo as useListProjectsQuery, $o as useListProjectsSuspenseQuery, es as useListResourceAllocationsLazyQuery, ts as useListResourceAllocationsQuery, ns as useListResourceAllocationsSuspenseQuery, rs as useListResourcePlansLazyQuery, is as useListResourcePlansQuery, as as useListResourcePlansSuspenseQuery, os as useListRunningTimersLazyQuery, ss as useListRunningTimersQuery, cs as useListRunningTimersSuspenseQuery, ls as useListTasksLazyQuery, us as useListTasksQuery, ds as useListTasksSuspenseQuery, fs as useListTeamWorkPatternsLazyQuery, ps as useListTeamWorkPatternsQuery, ms as useListTeamWorkPatternsSuspenseQuery, hs as useListTimeCampusCaptureEventsLazyQuery, gs as useListTimeCampusCaptureEventsQuery, _s as useListTimeCampusCaptureEventsSuspenseQuery, vs as useListTimeEntriesByDateLazyQuery, ys as useListTimeEntriesByDateQuery, bs as useListTimeEntriesByDateSuspenseQuery, xs as useListTimeEntriesLazyQuery, Ss as useListTimeEntriesQuery, Cs as useListTimeEntriesSuspenseQuery, ws as useListTopApplicationsLazyQuery, Ts as useListTopApplicationsQuery, Es as useListTopApplicationsSuspenseQuery, Ds as useListUpcomingMeetingsLazyQuery, Os as useListUpcomingMeetingsQuery, ks as useListUpcomingMeetingsSuspenseQuery, As as useListUserAllocationsLazyQuery, js as useListUserAllocationsQuery, Ms as useListUserAllocationsSuspenseQuery, Ns as useListWorkPatternsLazyQuery, Ps as useListWorkPatternsQuery, Fs as useListWorkPatternsSuspenseQuery, Is as useLogLifeTimeEntryMutation, Ls as useMyBalanceTargetsLazyQuery, Rs as useMyBalanceTargetsQuery, zs as useMyBalanceTargetsSuspenseQuery, Bs as useMyContextSharingPolicyLazyQuery, Vs as useMyContextSharingPolicyQuery, Hs as useMyContextSharingPolicySuspenseQuery, Us as useMyDeadTimeRadarLazyQuery, Ws as useMyDeadTimeRadarQuery, Gs as useMyDeadTimeRadarSuspenseQuery, Ks as useMyLifeBalanceLazyQuery, qs as useMyLifeBalanceQuery, Js as useMyLifeBalanceSuspenseQuery, Ys as useMyLifeGoalsLazyQuery, Xs as useMyLifeGoalsQuery, Zs as useMyLifeGoalsSuspenseQuery, Qs as useMyLifeInWeeksLazyQuery, $s as useMyLifeInWeeksQuery, ec as useMyLifeInWeeksSuspenseQuery, tc as useMyLifeProfileLazyQuery, nc as useMyLifeProfileQuery, rc as useMyLifeProfileSuspenseQuery, ic as useMyLifeValuesLazyQuery, ac as useMyLifeValuesQuery, oc as useMyLifeValuesSuspenseQuery, sc as useMyPersonalDataSummaryLazyQuery, cc as useMyPersonalDataSummaryQuery, lc as useMyPersonalDataSummarySuspenseQuery, uc as useMyRecommendationPreferencesLazyQuery, dc as useMyRecommendationPreferencesQuery, fc as useMyRecommendationPreferencesSuspenseQuery, pc as useMyRecommendationsLazyQuery, mc as useMyRecommendationsQuery, hc as useMyRecommendationsSuspenseQuery, gc as useMySourceConsentsLazyQuery, _c as useMySourceConsentsQuery, vc as useMySourceConsentsSuspenseQuery, yc as useMyTimeWellSpentLazyQuery, bc as useMyTimeWellSpentQuery, xc as useMyTimeWellSpentSuspenseQuery, Sc as useRateMeetingMutation, Cc as useRecategorizeTimeCampusCaptureEventMutation, wc as useRecordApplicationUsageMutation, Tc as useRecordFocusScoreMutation, Ec as useRecordGeofenceEventMutation, Dc as useRecordWorkPatternMutation, Oc as useRegenerateClientPortalShareTokenMutation, kc as useRejectExpenseMutation, Ac as useRejectRequestMutation, jc as useRemoveParticipantMutation, Mc as useReorderTasksMutation, Nc as useRequestRevisionMutation, Pc as useRevokeSourceConsentMutation, _l as useSandboxAssistantTransport, Fc as useSetBalanceTargetMutation, Ic as useSnoozeRecommendationMutation, Lc as useStartPomodoroSessionMutation, Rc as useStartTimerMutation, zc as useStopTimerMutation, Bc as useSubmitApprovalRequestMutation, Vc as useSubmitExpenseForApprovalMutation, e as useTimeCampus, t as useTimeCampusNavigate, gl as useTimeCampusStore, Hc as useToggleClientPortalMutation, Uc as useToggleGeofenceMutation, Wc as useUpdateActionItemMutation, Gc as useUpdateAllocationMutation, Kc as useUpdateApplicationUsageMutation, qc as useUpdateClientPortalConfigMutation, Jc as useUpdateContextSharingPolicyMutation, Yc as useUpdateEmailTimeEntryMutation, Xc as useUpdateExpenseMutation, Zc as useUpdateFocusScoreMutation, Qc as useUpdateGeofenceMutation, $c as useUpdateLifeGoalMutation, el as useUpdateLifeValueMutation, tl as useUpdateLocationEntryMutation, nl as useUpdateMeetingMutation, rl as useUpdateMyLifeProfileMutation, il as useUpdateMyRecommendationPreferencesMutation, al as useUpdateParticipantStatusMutation, ol as useUpdatePomodoroGoalMutation, sl as useUpdatePomodoroSettingsMutation, cl as useUpdateProjectMutation, ll as useUpdateResourcePlanMutation, ul as useUpdateTaskMutation, dl as useUpdateTaskStatusMutation, fl as useUpdateTimeEntryMutation, pl as useUpdateWorkPatternMutation, ml as useWithdrawRequestMutation };
@@ -12,7 +12,7 @@ var C = () => {
12
12
  let { t: C } = S(), w = (e, t) => {
13
13
  let n = C(e);
14
14
  return n === e ? t : n;
15
- }, T = e(), { data: E, loading: D } = a(), { data: O, loading: k } = o({ variables: { limit: 4 } }), A = E?.timeEntryStats, j = O?.timeEntries?.items ?? [], M = /* @__PURE__ */ h(v, {
15
+ }, T = e(), { data: E, loading: D } = a(), { data: O, loading: k } = o({ variables: { pagination: { limit: 4 } } }), A = E?.timeEntryStats, j = O?.timeEntries?.items ?? [], M = /* @__PURE__ */ h(v, {
16
16
  primary: {
17
17
  label: w("timecampus.home.actions.startTimer", "Start Timer"),
18
18
  onSelect: () => T("/time/timer"),
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage.js","names":[],"sources":["../../../src/timecampus/pages/HomePage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport {\n Clock,\n FolderOpen,\n Users,\n TrendingUp,\n CheckCircle,\n BarChart3,\n Play,\n ArrowRight,\n} from \"lucide-react\";\nimport {\n GlassCard,\n EmphasisPanel,\n AuroraBackground,\n GradientText,\n CTAOverflowMenu,\n} from \"@burdenoff/fe-libs/ui\";\nimport { StatCard } from \"../components/StatCard\";\nimport { LoadingSkeleton } from \"../components/LoadingSkeleton\";\nimport { cn, formatHours } from \"../utils/helpers\";\nimport { useTimeCampusNavigate } from \"../providers/TimeCampusProvider\";\nimport {\n useGetTimeEntryStatsQuery,\n useListTimeEntriesQuery,\n type TimeEntryFieldsFragment,\n} from \"@/generated/wspace-operations\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\n\nexport const HomePage: FC = () => {\n const { t: translate } = useI18n();\n const t = (key: string, fallback: string): string => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n const navigate = useTimeCampusNavigate();\n\n const { data: statsData, loading: statsLoading } =\n useGetTimeEntryStatsQuery();\n const { data: entriesData, loading: entriesLoading } =\n useListTimeEntriesQuery({\n variables: { limit: 4 },\n });\n\n const stats = statsData?.timeEntryStats;\n const recentEntries = entriesData?.timeEntries?.items ?? [];\n\n const headerActions = (\n <CTAOverflowMenu\n primary={{\n label: t(\"timecampus.home.actions.startTimer\", \"Start Timer\"),\n onSelect: () => navigate(\"/time/timer\"),\n icon: <Play className=\"h-4 w-4\" />,\n }}\n actions={[\n {\n label: t(\n \"timecampus.home.quickActions.viewProjects.label\",\n \"View Projects\",\n ),\n onSelect: () => navigate(\"/projects\"),\n icon: <FolderOpen className=\"h-4 w-4\" />,\n },\n {\n label: t(\"timecampus.home.quickActions.reports.label\", \"Reports\"),\n onSelect: () => navigate(\"/reports\"),\n icon: <BarChart3 className=\"h-4 w-4\" />,\n },\n ]}\n />\n );\n\n const renderHeader = () => (\n <div className=\"relative overflow-hidden rounded-2xl border border-border-seam bg-gloss-card p-5 sm:p-6\">\n <AuroraBackground intensity=\"subtle\" />\n <div className=\"relative flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"min-w-0\">\n <h1 className=\"text-2xl font-bold text-text-primary\">\n <GradientText>\n {t(\"timecampus.home.title\", \"Dashboard\")}\n </GradientText>\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {t(\n \"timecampus.home.description\",\n \"Overview of your time tracking and productivity\",\n )}\n </p>\n </div>\n {headerActions}\n </div>\n </div>\n );\n\n if (statsLoading && entriesLoading) {\n return (\n <div className=\"min-h-full space-y-6 p-4 sm:p-6\">\n {renderHeader()}\n <LoadingSkeleton variant=\"card\" count={4} />\n </div>\n );\n }\n\n return (\n <div className=\"min-h-full space-y-6 p-4 sm:p-6\">\n {renderHeader()}\n\n {/* Hero metric + supporting metrics */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\n <StatCard\n featured\n title={t(\"timecampus.home.stats.today\", \"Today\")}\n value={formatHours(stats?.totalHours ?? 0)}\n icon={<Clock className=\"h-5 w-5\" />}\n trend={{\n value: 12.5,\n label: t(\"timecampus.home.stats.vsYesterday\", \"vs yesterday\"),\n }}\n />\n <StatCard\n title={t(\"timecampus.home.stats.billable\", \"Billable\")}\n value={formatHours(stats?.billableHours ?? 0)}\n icon={<TrendingUp className=\"h-5 w-5\" />}\n description={`${stats?.totalEntries ?? 0} ${t(\"timecampus.home.stats.entries\", \"entries\")}`}\n />\n <StatCard\n title={t(\"timecampus.home.stats.activeTimers\", \"Active Timers\")}\n value={stats?.activeTimers ?? 0}\n icon={<FolderOpen className=\"h-5 w-5\" />}\n description={t(\n \"timecampus.home.stats.currentlyRunning\",\n \"Currently running\",\n )}\n />\n <StatCard\n title={t(\"timecampus.home.stats.totalEntries\", \"Entries\")}\n value={stats?.totalEntries ?? 0}\n icon={<BarChart3 className=\"h-5 w-5\" />}\n description={t(\n \"timecampus.home.stats.totalEntriesDescription\",\n \"Total time entries\",\n )}\n />\n </div>\n\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Recent Time Entries */}\n <GlassCard\n treatment=\"plain\"\n className=\"border-border-seam p-6 lg:col-span-2\"\n >\n <div className=\"mb-4 flex items-center justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t(\n \"timecampus.home.recentEntries.title\",\n \"Recent Time Entries\",\n )}\n </h3>\n <p className=\"text-xs text-text-secondary\">\n {t(\n \"timecampus.home.recentEntries.description\",\n \"Your latest tracked activities\",\n )}\n </p>\n </div>\n <button\n onClick={() => navigate(\"/time/entries\")}\n className=\"inline-flex min-h-[2.75rem] items-center gap-1 rounded-md px-2 text-xs font-medium text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-border\"\n >\n {t(\"timecampus.home.recentEntries.viewAll\", \"View all\")}{\" \"}\n <ArrowRight className=\"h-3 w-3\" />\n </button>\n </div>\n {entriesLoading ? (\n <LoadingSkeleton variant=\"list\" count={4} />\n ) : (\n <div className=\"flex flex-col gap-3\">\n {recentEntries.map((entry: TimeEntryFieldsFragment) => (\n <div\n key={entry.id}\n className=\"flex items-center justify-between rounded-lg border border-border-seam p-3 transition-colors hover:bg-bg-sunken/50\"\n >\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-medium text-text-primary\">\n {entry.project?.name ??\n t(\n \"timecampus.home.recentEntries.noProject\",\n \"No Project\",\n )}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {entry.description ??\n t(\n \"timecampus.home.recentEntries.noDescription\",\n \"No description\",\n )}\n </p>\n </div>\n <div className=\"ml-4 text-right\">\n <p className=\"font-mono text-sm font-medium tabular-nums text-text-primary\">\n {formatHours((entry.duration ?? 0) / 3600)}\n </p>\n <span\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-xs font-medium\",\n entry.isRunning\n ? \"bg-status-info-bg text-status-info-text\"\n : \"bg-status-success-bg text-status-success-text\",\n )}\n >\n {entry.isRunning && (\n <span className=\"h-1.5 w-1.5 rounded-full bg-status-info-text motion-safe:animate-vc-glow-pulse\" />\n )}\n {entry.isRunning\n ? t(\n \"timecampus.home.recentEntries.status.running\",\n \"running\",\n )\n : t(\n \"timecampus.home.recentEntries.status.completed\",\n \"completed\",\n )}\n </span>\n </div>\n </div>\n ))}\n {recentEntries.length === 0 && (\n <p className=\"py-4 text-center text-sm text-text-secondary\">\n {t(\n \"timecampus.home.recentEntries.empty\",\n \"No time entries yet\",\n )}\n </p>\n )}\n </div>\n )}\n </GlassCard>\n\n {/* Quick Summary — the one emphasis zone */}\n <EmphasisPanel className=\"p-6\">\n <div className=\"mb-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t(\"timecampus.home.summary.title\", \"Quick Summary\")}\n </h3>\n <p className=\"text-xs text-text-secondary\">\n {t(\n \"timecampus.home.summary.description\",\n \"Time tracking overview\",\n )}\n </p>\n </div>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex items-center justify-between rounded-lg border border-border-seam bg-bg-surface/40 p-3\">\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">\n {t(\"timecampus.home.summary.totalHours\", \"Total Hours\")}\n </p>\n <p className=\"mt-1 text-xl font-bold tabular-nums text-text-primary\">\n {formatHours(stats?.totalHours ?? 0)}\n </p>\n </div>\n <Clock className=\"h-5 w-5 text-text-secondary\" />\n </div>\n <div className=\"flex items-center justify-between rounded-lg border border-border-seam bg-bg-surface/40 p-3\">\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">\n {t(\"timecampus.home.summary.billableHours\", \"Billable Hours\")}\n </p>\n <p className=\"mt-1 text-xl font-bold tabular-nums text-text-primary\">\n {formatHours(stats?.billableHours ?? 0)}\n </p>\n </div>\n <TrendingUp className=\"h-5 w-5 text-text-secondary\" />\n </div>\n <div className=\"flex items-center justify-between rounded-lg border border-border-seam bg-bg-surface/40 p-3\">\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">\n {t(\"timecampus.home.summary.activeTimers\", \"Active Timers\")}\n </p>\n <p className=\"mt-1 text-xl font-bold tabular-nums text-text-primary\">\n {stats?.activeTimers ?? 0}\n </p>\n </div>\n <Users className=\"h-5 w-5 text-text-secondary\" />\n </div>\n </div>\n </EmphasisPanel>\n </div>\n\n {/* Quick Actions */}\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-6\">\n <div className=\"mb-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t(\"timecampus.home.quickActions.title\", \"Quick Actions\")}\n </h3>\n <p className=\"text-xs text-text-secondary\">\n {t(\n \"timecampus.home.quickActions.description\",\n \"Frequently used features\",\n )}\n </p>\n </div>\n <div className=\"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-6\">\n {[\n {\n label: t(\n \"timecampus.home.quickActions.startTimer.label\",\n \"Start Timer\",\n ),\n icon: Play,\n route: \"/time/timer\",\n description: t(\n \"timecampus.home.quickActions.startTimer.description\",\n \"Track your time\",\n ),\n },\n {\n label: t(\n \"timecampus.home.quickActions.viewProjects.label\",\n \"View Projects\",\n ),\n icon: FolderOpen,\n route: \"/projects\",\n description: t(\n \"timecampus.home.quickActions.viewProjects.description\",\n \"Manage projects\",\n ),\n },\n {\n label: t(\n \"timecampus.home.quickActions.timeEntries.label\",\n \"Time Entries\",\n ),\n icon: Clock,\n route: \"/time/entries\",\n description: t(\n \"timecampus.home.quickActions.timeEntries.description\",\n \"View all entries\",\n ),\n },\n {\n label: t(\n \"timecampus.home.quickActions.teamActivity.label\",\n \"Team Activity\",\n ),\n icon: Users,\n route: \"/team-activity\",\n description: t(\n \"timecampus.home.quickActions.teamActivity.description\",\n \"See team status\",\n ),\n },\n {\n label: t(\"timecampus.home.quickActions.reports.label\", \"Reports\"),\n icon: BarChart3,\n route: \"/reports\",\n description: t(\n \"timecampus.home.quickActions.reports.description\",\n \"Generate reports\",\n ),\n },\n {\n label: t(\n \"timecampus.home.quickActions.approvals.label\",\n \"Approvals\",\n ),\n icon: CheckCircle,\n route: \"/time-approval\",\n description: t(\n \"timecampus.home.quickActions.approvals.description\",\n \"Review timesheets\",\n ),\n },\n ].map(({ label, icon: Icon, description, route }) => (\n <button\n key={label}\n onClick={() => navigate(route)}\n className=\"flex min-h-[2.75rem] flex-col items-center gap-2 rounded-lg border border-border-seam bg-bg-surface p-4 text-center transition-colors hover:bg-bg-sunken/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-border\"\n >\n <div className=\"rounded-full bg-action-primary-bg/10 p-3\">\n <Icon className=\"h-5 w-5 text-primary\" />\n </div>\n <span className=\"text-sm font-medium text-text-primary\">\n {label}\n </span>\n <span className=\"text-xs text-text-secondary\">{description}</span>\n </button>\n ))}\n </div>\n </GlassCard>\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"HomePage.js","names":[],"sources":["../../../src/timecampus/pages/HomePage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport {\n Clock,\n FolderOpen,\n Users,\n TrendingUp,\n CheckCircle,\n BarChart3,\n Play,\n ArrowRight,\n} from \"lucide-react\";\nimport {\n GlassCard,\n EmphasisPanel,\n AuroraBackground,\n GradientText,\n CTAOverflowMenu,\n} from \"@burdenoff/fe-libs/ui\";\nimport { StatCard } from \"../components/StatCard\";\nimport { LoadingSkeleton } from \"../components/LoadingSkeleton\";\nimport { cn, formatHours } from \"../utils/helpers\";\nimport { useTimeCampusNavigate } from \"../providers/TimeCampusProvider\";\nimport {\n useGetTimeEntryStatsQuery,\n useListTimeEntriesQuery,\n type TimeEntryFieldsFragment,\n} from \"@/generated/wspace-operations\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\n\nexport const HomePage: FC = () => {\n const { t: translate } = useI18n();\n const t = (key: string, fallback: string): string => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n const navigate = useTimeCampusNavigate();\n\n const { data: statsData, loading: statsLoading } =\n useGetTimeEntryStatsQuery();\n const { data: entriesData, loading: entriesLoading } =\n useListTimeEntriesQuery({\n variables: { pagination: { limit: 4 } },\n });\n\n const stats = statsData?.timeEntryStats;\n const recentEntries = entriesData?.timeEntries?.items ?? [];\n\n const headerActions = (\n <CTAOverflowMenu\n primary={{\n label: t(\"timecampus.home.actions.startTimer\", \"Start Timer\"),\n onSelect: () => navigate(\"/time/timer\"),\n icon: <Play className=\"h-4 w-4\" />,\n }}\n actions={[\n {\n label: t(\n \"timecampus.home.quickActions.viewProjects.label\",\n \"View Projects\",\n ),\n onSelect: () => navigate(\"/projects\"),\n icon: <FolderOpen className=\"h-4 w-4\" />,\n },\n {\n label: t(\"timecampus.home.quickActions.reports.label\", \"Reports\"),\n onSelect: () => navigate(\"/reports\"),\n icon: <BarChart3 className=\"h-4 w-4\" />,\n },\n ]}\n />\n );\n\n const renderHeader = () => (\n <div className=\"relative overflow-hidden rounded-2xl border border-border-seam bg-gloss-card p-5 sm:p-6\">\n <AuroraBackground intensity=\"subtle\" />\n <div className=\"relative flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"min-w-0\">\n <h1 className=\"text-2xl font-bold text-text-primary\">\n <GradientText>\n {t(\"timecampus.home.title\", \"Dashboard\")}\n </GradientText>\n </h1>\n <p className=\"mt-1 text-sm text-text-secondary\">\n {t(\n \"timecampus.home.description\",\n \"Overview of your time tracking and productivity\",\n )}\n </p>\n </div>\n {headerActions}\n </div>\n </div>\n );\n\n if (statsLoading && entriesLoading) {\n return (\n <div className=\"min-h-full space-y-6 p-4 sm:p-6\">\n {renderHeader()}\n <LoadingSkeleton variant=\"card\" count={4} />\n </div>\n );\n }\n\n return (\n <div className=\"min-h-full space-y-6 p-4 sm:p-6\">\n {renderHeader()}\n\n {/* Hero metric + supporting metrics */}\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4\">\n <StatCard\n featured\n title={t(\"timecampus.home.stats.today\", \"Today\")}\n value={formatHours(stats?.totalHours ?? 0)}\n icon={<Clock className=\"h-5 w-5\" />}\n trend={{\n value: 12.5,\n label: t(\"timecampus.home.stats.vsYesterday\", \"vs yesterday\"),\n }}\n />\n <StatCard\n title={t(\"timecampus.home.stats.billable\", \"Billable\")}\n value={formatHours(stats?.billableHours ?? 0)}\n icon={<TrendingUp className=\"h-5 w-5\" />}\n description={`${stats?.totalEntries ?? 0} ${t(\"timecampus.home.stats.entries\", \"entries\")}`}\n />\n <StatCard\n title={t(\"timecampus.home.stats.activeTimers\", \"Active Timers\")}\n value={stats?.activeTimers ?? 0}\n icon={<FolderOpen className=\"h-5 w-5\" />}\n description={t(\n \"timecampus.home.stats.currentlyRunning\",\n \"Currently running\",\n )}\n />\n <StatCard\n title={t(\"timecampus.home.stats.totalEntries\", \"Entries\")}\n value={stats?.totalEntries ?? 0}\n icon={<BarChart3 className=\"h-5 w-5\" />}\n description={t(\n \"timecampus.home.stats.totalEntriesDescription\",\n \"Total time entries\",\n )}\n />\n </div>\n\n <div className=\"grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Recent Time Entries */}\n <GlassCard\n treatment=\"plain\"\n className=\"border-border-seam p-6 lg:col-span-2\"\n >\n <div className=\"mb-4 flex items-center justify-between\">\n <div>\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t(\n \"timecampus.home.recentEntries.title\",\n \"Recent Time Entries\",\n )}\n </h3>\n <p className=\"text-xs text-text-secondary\">\n {t(\n \"timecampus.home.recentEntries.description\",\n \"Your latest tracked activities\",\n )}\n </p>\n </div>\n <button\n onClick={() => navigate(\"/time/entries\")}\n className=\"inline-flex min-h-[2.75rem] items-center gap-1 rounded-md px-2 text-xs font-medium text-primary transition-colors hover:underline focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-border\"\n >\n {t(\"timecampus.home.recentEntries.viewAll\", \"View all\")}{\" \"}\n <ArrowRight className=\"h-3 w-3\" />\n </button>\n </div>\n {entriesLoading ? (\n <LoadingSkeleton variant=\"list\" count={4} />\n ) : (\n <div className=\"flex flex-col gap-3\">\n {recentEntries.map((entry: TimeEntryFieldsFragment) => (\n <div\n key={entry.id}\n className=\"flex items-center justify-between rounded-lg border border-border-seam p-3 transition-colors hover:bg-bg-sunken/50\"\n >\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-sm font-medium text-text-primary\">\n {entry.project?.name ??\n t(\n \"timecampus.home.recentEntries.noProject\",\n \"No Project\",\n )}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {entry.description ??\n t(\n \"timecampus.home.recentEntries.noDescription\",\n \"No description\",\n )}\n </p>\n </div>\n <div className=\"ml-4 text-right\">\n <p className=\"font-mono text-sm font-medium tabular-nums text-text-primary\">\n {formatHours((entry.duration ?? 0) / 3600)}\n </p>\n <span\n className={cn(\n \"inline-flex items-center gap-1.5 rounded-full px-2 py-0.5 text-xs font-medium\",\n entry.isRunning\n ? \"bg-status-info-bg text-status-info-text\"\n : \"bg-status-success-bg text-status-success-text\",\n )}\n >\n {entry.isRunning && (\n <span className=\"h-1.5 w-1.5 rounded-full bg-status-info-text motion-safe:animate-vc-glow-pulse\" />\n )}\n {entry.isRunning\n ? t(\n \"timecampus.home.recentEntries.status.running\",\n \"running\",\n )\n : t(\n \"timecampus.home.recentEntries.status.completed\",\n \"completed\",\n )}\n </span>\n </div>\n </div>\n ))}\n {recentEntries.length === 0 && (\n <p className=\"py-4 text-center text-sm text-text-secondary\">\n {t(\n \"timecampus.home.recentEntries.empty\",\n \"No time entries yet\",\n )}\n </p>\n )}\n </div>\n )}\n </GlassCard>\n\n {/* Quick Summary — the one emphasis zone */}\n <EmphasisPanel className=\"p-6\">\n <div className=\"mb-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t(\"timecampus.home.summary.title\", \"Quick Summary\")}\n </h3>\n <p className=\"text-xs text-text-secondary\">\n {t(\n \"timecampus.home.summary.description\",\n \"Time tracking overview\",\n )}\n </p>\n </div>\n <div className=\"flex flex-col gap-4\">\n <div className=\"flex items-center justify-between rounded-lg border border-border-seam bg-bg-surface/40 p-3\">\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">\n {t(\"timecampus.home.summary.totalHours\", \"Total Hours\")}\n </p>\n <p className=\"mt-1 text-xl font-bold tabular-nums text-text-primary\">\n {formatHours(stats?.totalHours ?? 0)}\n </p>\n </div>\n <Clock className=\"h-5 w-5 text-text-secondary\" />\n </div>\n <div className=\"flex items-center justify-between rounded-lg border border-border-seam bg-bg-surface/40 p-3\">\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">\n {t(\"timecampus.home.summary.billableHours\", \"Billable Hours\")}\n </p>\n <p className=\"mt-1 text-xl font-bold tabular-nums text-text-primary\">\n {formatHours(stats?.billableHours ?? 0)}\n </p>\n </div>\n <TrendingUp className=\"h-5 w-5 text-text-secondary\" />\n </div>\n <div className=\"flex items-center justify-between rounded-lg border border-border-seam bg-bg-surface/40 p-3\">\n <div>\n <p className=\"text-xs font-medium text-text-secondary\">\n {t(\"timecampus.home.summary.activeTimers\", \"Active Timers\")}\n </p>\n <p className=\"mt-1 text-xl font-bold tabular-nums text-text-primary\">\n {stats?.activeTimers ?? 0}\n </p>\n </div>\n <Users className=\"h-5 w-5 text-text-secondary\" />\n </div>\n </div>\n </EmphasisPanel>\n </div>\n\n {/* Quick Actions */}\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-6\">\n <div className=\"mb-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t(\"timecampus.home.quickActions.title\", \"Quick Actions\")}\n </h3>\n <p className=\"text-xs text-text-secondary\">\n {t(\n \"timecampus.home.quickActions.description\",\n \"Frequently used features\",\n )}\n </p>\n </div>\n <div className=\"grid grid-cols-2 gap-3 sm:grid-cols-3 lg:grid-cols-6\">\n {[\n {\n label: t(\n \"timecampus.home.quickActions.startTimer.label\",\n \"Start Timer\",\n ),\n icon: Play,\n route: \"/time/timer\",\n description: t(\n \"timecampus.home.quickActions.startTimer.description\",\n \"Track your time\",\n ),\n },\n {\n label: t(\n \"timecampus.home.quickActions.viewProjects.label\",\n \"View Projects\",\n ),\n icon: FolderOpen,\n route: \"/projects\",\n description: t(\n \"timecampus.home.quickActions.viewProjects.description\",\n \"Manage projects\",\n ),\n },\n {\n label: t(\n \"timecampus.home.quickActions.timeEntries.label\",\n \"Time Entries\",\n ),\n icon: Clock,\n route: \"/time/entries\",\n description: t(\n \"timecampus.home.quickActions.timeEntries.description\",\n \"View all entries\",\n ),\n },\n {\n label: t(\n \"timecampus.home.quickActions.teamActivity.label\",\n \"Team Activity\",\n ),\n icon: Users,\n route: \"/team-activity\",\n description: t(\n \"timecampus.home.quickActions.teamActivity.description\",\n \"See team status\",\n ),\n },\n {\n label: t(\"timecampus.home.quickActions.reports.label\", \"Reports\"),\n icon: BarChart3,\n route: \"/reports\",\n description: t(\n \"timecampus.home.quickActions.reports.description\",\n \"Generate reports\",\n ),\n },\n {\n label: t(\n \"timecampus.home.quickActions.approvals.label\",\n \"Approvals\",\n ),\n icon: CheckCircle,\n route: \"/time-approval\",\n description: t(\n \"timecampus.home.quickActions.approvals.description\",\n \"Review timesheets\",\n ),\n },\n ].map(({ label, icon: Icon, description, route }) => (\n <button\n key={label}\n onClick={() => navigate(route)}\n className=\"flex min-h-[2.75rem] flex-col items-center gap-2 rounded-lg border border-border-seam bg-bg-surface p-4 text-center transition-colors hover:bg-bg-sunken/50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-border\"\n >\n <div className=\"rounded-full bg-action-primary-bg/10 p-3\">\n <Icon className=\"h-5 w-5 text-primary\" />\n </div>\n <span className=\"text-sm font-medium text-text-primary\">\n {label}\n </span>\n <span className=\"text-xs text-text-secondary\">{description}</span>\n </button>\n ))}\n </div>\n </GlassCard>\n </div>\n );\n};\n"],"mappings":"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"}
@@ -43,10 +43,10 @@ function pe() {
43
43
  }
44
44
  function C() {
45
45
  let { workspaceId: l = "" } = e(), { data: C, loading: me, error: he, fetchMore: ge, refetch: _e } = ne({
46
- variables: {
46
+ variables: { pagination: {
47
47
  limit: v,
48
48
  offset: 0
49
- },
49
+ } },
50
50
  skip: !l,
51
51
  notifyOnNetworkStatusChange: !0
52
52
  }), { data: ve, loading: ye, error: be, refetch: xe } = te({ skip: !l }), Se = me || ye, Ce = he || be, w = C?.applicationUsages ?? [], T = ve?.appUsageSummary, E = w.length > 0 && w.length % v === 0, [D, O] = u(!1), [k, A] = u(!1), [j, M] = u(""), [N, P] = u("productive"), [F, I] = u(""), [L, R] = u(""), [z, B] = u(null), [V, H] = u("productive"), [U, W] = u(null), [we, { loading: G, error: Te }] = re(), [Ee, { loading: K, error: De }] = ee(), [Oe, { loading: q, error: ke }] = i(), J = async () => {
@@ -74,7 +74,10 @@ function C() {
74
74
  O(!0);
75
75
  try {
76
76
  await ge({
77
- variables: { offset: w.length },
77
+ variables: { pagination: {
78
+ limit: v,
79
+ offset: w.length
80
+ } },
78
81
  updateQuery: (e, { fetchMoreResult: t }) => t ? {
79
82
  ...e,
80
83
  applicationUsages: [...e.applicationUsages, ...t.applicationUsages]
@@ -1 +1 @@
1
- {"version":3,"file":"ApplicationUsagePage.js","names":[],"sources":["../../../../src/timecampus/pages/application-usage/ApplicationUsagePage.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Monitor, Clock, Plus, Tag, Trash2 } from \"lucide-react\";\nimport { GlassCard } from \"@burdenoff/fe-libs/ui\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { StatCard } from \"../../components/StatCard\";\nimport { StatusBadge } from \"../../components/StatusBadge\";\nimport { EmptyState } from \"../../components/EmptyState\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { Modal } from \"../../components/Modal\";\nimport {\n ChartCard,\n DonutChart,\n TrendChart,\n chartTokens,\n type ChartDatum,\n type DonutSlice,\n type ValueFormatter,\n} from \"../../components\";\nimport { formatHours } from \"../../utils/helpers\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useListApplicationUsagesQuery,\n useGetAppUsageSummaryQuery,\n useRecordApplicationUsageMutation,\n useCategorizeApplicationMutation,\n useDeleteApplicationUsageMutation,\n type ApplicationUsageFieldsFragment,\n} from \"@/generated/wspace-operations\";\n\nconst PAGE_SIZE = 50;\n\nconst CATEGORY_OPTIONS = [\n \"productive\",\n \"neutral\",\n \"communication\",\n \"distracting\",\n] as const;\n\nconst CATEGORY_VARIANT: Record<string, \"success\" | \"muted\" | \"info\" | \"error\"> =\n {\n productive: \"success\",\n neutral: \"muted\",\n communication: \"info\",\n distracting: \"error\",\n };\n\n/** Category ring hues — token-only, echoing productive→positive / distracting→negative. */\nconst CATEGORY_SLICE_COLOR: Record<string, string> = {\n productive: chartTokens.positive,\n neutral: chartTokens.series[3],\n distracting: chartTokens.negative,\n};\n\nconst formatChartHours: ValueFormatter = (value) =>\n `${value.toFixed(value >= 10 ? 0 : 1)}h`;\n\nconst formatSecondsAsHours: ValueFormatter = (value) =>\n formatHours(value / 3600);\n\nconst formatDayTick = (value: string | number): string => {\n const parsed = new Date(String(value));\n return Number.isNaN(parsed.getTime())\n ? String(value)\n : parsed.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\" });\n};\n\nconst inputClasses =\n \"mt-1 w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary\";\nconst labelClasses = \"block text-sm font-medium text-text-primary\";\n\nfunction todayIso(): string {\n return new Date().toISOString();\n}\n\nexport function ApplicationUsagePage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const {\n data: usagesData,\n loading: usagesLoading,\n error: usagesError,\n fetchMore,\n refetch: refetchUsages,\n } = useListApplicationUsagesQuery({\n variables: { limit: PAGE_SIZE, offset: 0 },\n skip: !workspaceId,\n notifyOnNetworkStatusChange: true,\n });\n\n const {\n data: summaryData,\n loading: summaryLoading,\n error: summaryError,\n refetch: refetchSummary,\n } = useGetAppUsageSummaryQuery({\n skip: !workspaceId,\n });\n\n const loading = usagesLoading || summaryLoading;\n const error = usagesError || summaryError;\n const apps = usagesData?.applicationUsages ?? [];\n const summary = summaryData?.appUsageSummary;\n const hasMore = apps.length > 0 && apps.length % PAGE_SIZE === 0;\n\n const [loadingMore, setLoadingMore] = useState(false);\n\n // Add-usage modal\n const [addOpen, setAddOpen] = useState(false);\n const [appName, setAppName] = useState(\"\");\n const [appCategory, setAppCategory] = useState<string>(\"productive\");\n const [appMinutes, setAppMinutes] = useState(\"\");\n const [appSessions, setAppSessions] = useState(\"\");\n\n // Recategorize + delete\n const [recatApp, setRecatApp] =\n useState<ApplicationUsageFieldsFragment | null>(null);\n const [recatCategory, setRecatCategory] = useState<string>(\"productive\");\n const [deleteApp, setDeleteApp] =\n useState<ApplicationUsageFieldsFragment | null>(null);\n\n const [recordUsage, { loading: recording, error: recordError }] =\n useRecordApplicationUsageMutation();\n const [categorize, { loading: categorizing, error: categorizeError }] =\n useCategorizeApplicationMutation();\n const [removeUsage, { loading: deleting, error: deleteError }] =\n useDeleteApplicationUsageMutation();\n\n const refreshAll = async () => {\n await Promise.all([refetchUsages(), refetchSummary()]);\n };\n\n const openAdd = () => {\n setAppName(\"\");\n setAppCategory(\"productive\");\n setAppMinutes(\"\");\n setAppSessions(\"\");\n setAddOpen(true);\n };\n\n const handleRecord = async () => {\n if (!appName.trim() || !appMinutes) return;\n await recordUsage({\n variables: {\n input: {\n applicationName: appName.trim(),\n category: appCategory,\n timeSpent: Math.round(Number(appMinutes) * 60),\n sessions: appSessions ? Number(appSessions) : undefined,\n date: todayIso(),\n },\n },\n });\n setAddOpen(false);\n await refreshAll();\n };\n\n const openRecat = (app: ApplicationUsageFieldsFragment) => {\n setRecatApp(app);\n setRecatCategory(app.category);\n };\n\n const handleRecategorize = async () => {\n if (!recatApp) return;\n await categorize({\n variables: {\n applicationName: recatApp.applicationName,\n category: recatCategory,\n },\n });\n setRecatApp(null);\n await refreshAll();\n };\n\n const handleDelete = async () => {\n if (!deleteApp) return;\n await removeUsage({ variables: { id: deleteApp.id } });\n setDeleteApp(null);\n await refreshAll();\n };\n\n const handleLoadMore = async () => {\n setLoadingMore(true);\n try {\n await fetchMore({\n variables: { offset: apps.length },\n updateQuery: (prev, { fetchMoreResult }) => {\n if (!fetchMoreResult) return prev;\n return {\n ...prev,\n applicationUsages: [\n ...prev.applicationUsages,\n ...fetchMoreResult.applicationUsages,\n ],\n };\n },\n });\n } finally {\n setLoadingMore(false);\n }\n };\n\n const totalScreenTimeSeconds = apps.reduce(\n (sum: number, app: ApplicationUsageFieldsFragment) => sum + app.timeSpent,\n 0,\n );\n const totalSwitches = apps.reduce(\n (sum: number, app: ApplicationUsageFieldsFragment) => sum + app.switches,\n 0,\n );\n const productiveRatio =\n summary?.productivityRatio != null\n ? `${Math.round(summary.productivityRatio * 100)}%`\n : \"--\";\n\n // Count focus sessions (apps with > 90 min continuous usage)\n const focusSessions = apps.filter(\n (app: ApplicationUsageFieldsFragment) => app.timeSpent >= 5400,\n ).length;\n\n // Rank the loaded apps by time spent (drives the numbered list).\n const rankedApps = [...apps].sort(\n (a: ApplicationUsageFieldsFragment, b: ApplicationUsageFieldsFragment) =>\n b.timeSpent - a.timeSpent,\n );\n\n // Productive / neutral / distracting split from the real usage summary.\n const categorySlices: DonutSlice[] = summary\n ? [\n {\n name: \"Productive\",\n value: summary.productiveTime,\n color: CATEGORY_SLICE_COLOR.productive,\n },\n {\n name: \"Neutral\",\n value: summary.neutralTime,\n color: CATEGORY_SLICE_COLOR.neutral,\n },\n {\n name: \"Distracting\",\n value: summary.distractingTime,\n color: CATEGORY_SLICE_COLOR.distracting,\n },\n ]\n : [];\n const categoryTotalSeconds =\n (summary?.productiveTime ?? 0) +\n (summary?.neutralTime ?? 0) +\n (summary?.distractingTime ?? 0);\n\n // Daily usage trend — sum the loaded apps' tracked time per calendar day.\n const usageByDay = new Map<string, number>();\n for (const app of apps as ApplicationUsageFieldsFragment[]) {\n const day = (app.date ?? \"\").slice(0, 10);\n if (!day) continue;\n usageByDay.set(day, (usageByDay.get(day) ?? 0) + app.timeSpent);\n }\n const usageTrend: ChartDatum[] = Array.from(usageByDay.entries())\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([day, seconds]) => ({\n day,\n hours: Math.round((seconds / 3600) * 100) / 100,\n }));\n\n if (loading) {\n return (\n <PageLayout\n title=\"App Usage\"\n description=\"Track application usage and productivity\"\n >\n <LoadingSkeleton variant=\"card\" count={4} />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"App Usage\"\n description=\"Track application usage and productivity\"\n >\n <div className=\"rounded-xl border border-status-error-border/50 bg-status-error-bg/10 p-4 text-sm text-status-error-text\">\n Failed to load application usage. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"App Usage\"\n description=\"Track application usage and productivity\"\n purpose=\"See where your screen time actually goes — which apps are productive, how often you context-switch, and how many real focus sessions you get — so you can cut the digital distractions eating your day.\"\n actions={\n <button\n onClick={openAdd}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus className=\"h-4 w-4\" />\n Add Usage\n </button>\n }\n >\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n featured\n title=\"Total Screen Time\"\n value={formatHours(totalScreenTimeSeconds / 3600)}\n icon={<Monitor className=\"h-5 w-5\" />}\n />\n <StatCard\n title=\"Productive Time\"\n value={productiveRatio}\n description=\"Share of tracked time\"\n />\n <StatCard\n title=\"App Switches\"\n value={String(totalSwitches)}\n description={`Avg. ${apps.length > 0 ? Math.round(totalSwitches / apps.length) : 0}/app`}\n />\n <StatCard\n title=\"Focus Sessions\"\n value={String(focusSessions)}\n icon={<Clock className=\"h-5 w-5\" />}\n description=\"90+ min each\"\n />\n </div>\n\n {apps.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n title=\"No application usage data found\"\n description=\"Record app usage manually or connect the desktop tracker, and your apps will appear here ranked by time spent.\"\n action={\n <button\n onClick={openAdd}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus className=\"h-4 w-4\" />\n Add Usage\n </button>\n }\n />\n ) : (\n <>\n <GlassCard treatment=\"glass\" className=\"overflow-hidden\">\n <div className=\"flex items-center justify-between gap-3 border-b border-border-seam px-4 py-3 sm:px-6\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n Ranked Applications\n </h3>\n <span className=\"text-xs text-text-secondary\">\n {apps.length} tracked\n </span>\n </div>\n <div className=\"divide-y divide-border\">\n {rankedApps.map(\n (app: ApplicationUsageFieldsFragment, index: number) => {\n const share = Math.min(\n 100,\n Math.round(\n (app.timeSpent / (totalScreenTimeSeconds || 1)) * 100,\n ),\n );\n return (\n <div\n key={app.id}\n className=\"flex items-center gap-3 p-4 transition-colors hover:bg-bg-sunken/50 sm:gap-4\"\n >\n <span className=\"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-bg-sunken text-xs font-semibold tabular-nums text-text-secondary\">\n {index + 1}\n </span>\n <div className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-action-primary-bg/10 text-primary\">\n <Monitor className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-medium text-text-primary\">\n {app.applicationName}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {app.sessions} sessions &middot; {app.switches}{\" \"}\n switches\n </p>\n </div>\n <div className=\"hidden w-28 shrink-0 lg:block\">\n <div className=\"h-2 rounded-full bg-bg-sunken\">\n <div\n className=\"h-2 rounded-full bg-action-primary-bg\"\n style={{ width: `${share}%` }}\n />\n </div>\n <p className=\"mt-1 text-right text-xs tabular-nums text-text-secondary\">\n {share}%\n </p>\n </div>\n <StatusBadge\n label={app.category}\n variant={CATEGORY_VARIANT[app.category] ?? \"muted\"}\n className=\"hidden capitalize sm:inline-flex\"\n />\n <p className=\"shrink-0 font-mono text-sm font-medium tabular-nums text-text-primary\">\n {formatHours(app.timeSpent / 3600)}\n </p>\n <div className=\"flex shrink-0 items-center gap-1\">\n <button\n onClick={() => openRecat(app)}\n className=\"rounded-md p-1.5 text-text-secondary hover:bg-bg-sunken hover:text-text-primary\"\n aria-label=\"Recategorize application\"\n >\n <Tag className=\"h-4 w-4\" />\n </button>\n <button\n onClick={() => setDeleteApp(app)}\n className=\"rounded-md p-1.5 text-text-secondary hover:bg-status-error-bg hover:text-status-error-text\"\n aria-label=\"Delete usage entry\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n );\n },\n )}\n </div>\n </GlassCard>\n\n <div className=\"grid grid-cols-1 gap-4 lg:grid-cols-2\">\n <ChartCard\n title=\"Productivity Split\"\n description=\"Where your tracked screen time goes\"\n >\n <DonutChart\n data={categorySlices}\n centerLabel=\"Total tracked\"\n centerValue={categoryTotalSeconds}\n valueFormat={formatSecondsAsHours}\n height={260}\n emptyLabel=\"No categorized usage yet\"\n />\n </ChartCard>\n\n <ChartCard\n title=\"Daily Usage Trend\"\n description=\"Tracked time per day\"\n >\n <TrendChart\n data={usageTrend}\n xKey=\"day\"\n series={[{ key: \"hours\", label: \"Screen time\" }]}\n type=\"area\"\n valueFormat={formatChartHours}\n xTickFormat={formatDayTick}\n height={260}\n emptyLabel=\"No usage recorded yet\"\n />\n </ChartCard>\n </div>\n {hasMore && (\n <div className=\"mt-4 flex justify-center\">\n <button\n onClick={handleLoadMore}\n disabled={loadingMore}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50 disabled:opacity-50\"\n >\n {loadingMore ? \"Loading...\" : \"Load more\"}\n </button>\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Add usage modal */}\n <Modal\n open={addOpen}\n onClose={() => setAddOpen(false)}\n title=\"Record App Usage\"\n description=\"Manually log time spent in an application\"\n footer={\n <>\n <button\n onClick={() => setAddOpen(false)}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\"\n >\n Cancel\n </button>\n <button\n onClick={handleRecord}\n disabled={recording || !appName.trim() || !appMinutes}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {recording ? \"Saving...\" : \"Record\"}\n </button>\n </>\n }\n >\n {recordError && (\n <div className=\"mb-4 rounded-lg border border-status-error-bg/40 bg-status-error-bg p-3 text-sm text-status-error-text\">\n Failed to record usage. Please try again.\n </div>\n )}\n <div className=\"space-y-4\">\n <div>\n <label className={labelClasses}>Application Name</label>\n <input\n type=\"text\"\n placeholder=\"e.g. Visual Studio Code\"\n value={appName}\n onChange={(e) => setAppName(e.target.value)}\n className={inputClasses}\n />\n </div>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div>\n <label className={labelClasses}>Category</label>\n <select\n value={appCategory}\n onChange={(e) => setAppCategory(e.target.value)}\n className={inputClasses}\n >\n {CATEGORY_OPTIONS.map((c) => (\n <option key={c} value={c} className=\"capitalize\">\n {c}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className={labelClasses}>Time Spent (minutes)</label>\n <input\n type=\"number\"\n min=\"0\"\n placeholder=\"0\"\n value={appMinutes}\n onChange={(e) => setAppMinutes(e.target.value)}\n className={inputClasses}\n />\n </div>\n </div>\n <div>\n <label className={labelClasses}>Sessions</label>\n <input\n type=\"number\"\n min=\"0\"\n placeholder=\"0\"\n value={appSessions}\n onChange={(e) => setAppSessions(e.target.value)}\n className={inputClasses}\n />\n </div>\n </div>\n </Modal>\n\n {/* Recategorize modal */}\n <Modal\n open={recatApp !== null}\n onClose={() => setRecatApp(null)}\n title=\"Recategorize Application\"\n description={recatApp?.applicationName}\n size=\"sm\"\n footer={\n <>\n <button\n onClick={() => setRecatApp(null)}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\"\n >\n Cancel\n </button>\n <button\n onClick={handleRecategorize}\n disabled={categorizing}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {categorizing ? \"Saving...\" : \"Save\"}\n </button>\n </>\n }\n >\n {categorizeError && (\n <div className=\"mb-4 rounded-lg border border-status-error-bg/40 bg-status-error-bg p-3 text-sm text-status-error-text\">\n Failed to recategorize. Please try again.\n </div>\n )}\n <label className={labelClasses}>Category</label>\n <select\n value={recatCategory}\n onChange={(e) => setRecatCategory(e.target.value)}\n className={inputClasses}\n >\n {CATEGORY_OPTIONS.map((c) => (\n <option key={c} value={c} className=\"capitalize\">\n {c}\n </option>\n ))}\n </select>\n <p className=\"mt-3 text-xs text-text-secondary\">\n This updates the category for all usage of &ldquo;\n {recatApp?.applicationName}&rdquo;.\n </p>\n </Modal>\n\n {/* Delete confirm modal */}\n <Modal\n open={deleteApp !== null}\n onClose={() => setDeleteApp(null)}\n title=\"Delete Usage Entry\"\n size=\"sm\"\n footer={\n <>\n <button\n onClick={() => setDeleteApp(null)}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\"\n >\n Cancel\n </button>\n <button\n onClick={handleDelete}\n disabled={deleting}\n className=\"rounded-md bg-status-error-bg px-4 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg/90 disabled:opacity-50\"\n >\n {deleting ? \"Deleting...\" : \"Delete\"}\n </button>\n </>\n }\n >\n {deleteError && (\n <div className=\"mb-4 rounded-lg border border-status-error-bg/40 bg-status-error-bg p-3 text-sm text-status-error-text\">\n Failed to delete entry. Please try again.\n </div>\n )}\n <p className=\"text-sm text-text-secondary\">\n Are you sure you want to delete the usage entry for{\" \"}\n <span className=\"font-medium text-text-primary\">\n {deleteApp?.applicationName}\n </span>\n ? This action cannot be undone.\n </p>\n </Modal>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ApplicationUsagePage.js","names":[],"sources":["../../../../src/timecampus/pages/application-usage/ApplicationUsagePage.tsx"],"sourcesContent":["import { useState } from \"react\";\nimport { Monitor, Clock, Plus, Tag, Trash2 } from \"lucide-react\";\nimport { GlassCard } from \"@burdenoff/fe-libs/ui\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { StatCard } from \"../../components/StatCard\";\nimport { StatusBadge } from \"../../components/StatusBadge\";\nimport { EmptyState } from \"../../components/EmptyState\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { Modal } from \"../../components/Modal\";\nimport {\n ChartCard,\n DonutChart,\n TrendChart,\n chartTokens,\n type ChartDatum,\n type DonutSlice,\n type ValueFormatter,\n} from \"../../components\";\nimport { formatHours } from \"../../utils/helpers\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useListApplicationUsagesQuery,\n useGetAppUsageSummaryQuery,\n useRecordApplicationUsageMutation,\n useCategorizeApplicationMutation,\n useDeleteApplicationUsageMutation,\n type ApplicationUsageFieldsFragment,\n} from \"@/generated/wspace-operations\";\n\nconst PAGE_SIZE = 50;\n\nconst CATEGORY_OPTIONS = [\n \"productive\",\n \"neutral\",\n \"communication\",\n \"distracting\",\n] as const;\n\nconst CATEGORY_VARIANT: Record<string, \"success\" | \"muted\" | \"info\" | \"error\"> =\n {\n productive: \"success\",\n neutral: \"muted\",\n communication: \"info\",\n distracting: \"error\",\n };\n\n/** Category ring hues — token-only, echoing productive→positive / distracting→negative. */\nconst CATEGORY_SLICE_COLOR: Record<string, string> = {\n productive: chartTokens.positive,\n neutral: chartTokens.series[3],\n distracting: chartTokens.negative,\n};\n\nconst formatChartHours: ValueFormatter = (value) =>\n `${value.toFixed(value >= 10 ? 0 : 1)}h`;\n\nconst formatSecondsAsHours: ValueFormatter = (value) =>\n formatHours(value / 3600);\n\nconst formatDayTick = (value: string | number): string => {\n const parsed = new Date(String(value));\n return Number.isNaN(parsed.getTime())\n ? String(value)\n : parsed.toLocaleDateString(\"en-US\", { month: \"short\", day: \"numeric\" });\n};\n\nconst inputClasses =\n \"mt-1 w-full rounded-md border border-border-subtle bg-bg-surface px-3 py-2 text-sm text-text-primary placeholder:text-text-secondary\";\nconst labelClasses = \"block text-sm font-medium text-text-primary\";\n\nfunction todayIso(): string {\n return new Date().toISOString();\n}\n\nexport function ApplicationUsagePage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const {\n data: usagesData,\n loading: usagesLoading,\n error: usagesError,\n fetchMore,\n refetch: refetchUsages,\n } = useListApplicationUsagesQuery({\n variables: { pagination: { limit: PAGE_SIZE, offset: 0 } },\n skip: !workspaceId,\n notifyOnNetworkStatusChange: true,\n });\n\n const {\n data: summaryData,\n loading: summaryLoading,\n error: summaryError,\n refetch: refetchSummary,\n } = useGetAppUsageSummaryQuery({\n skip: !workspaceId,\n });\n\n const loading = usagesLoading || summaryLoading;\n const error = usagesError || summaryError;\n const apps = usagesData?.applicationUsages ?? [];\n const summary = summaryData?.appUsageSummary;\n const hasMore = apps.length > 0 && apps.length % PAGE_SIZE === 0;\n\n const [loadingMore, setLoadingMore] = useState(false);\n\n // Add-usage modal\n const [addOpen, setAddOpen] = useState(false);\n const [appName, setAppName] = useState(\"\");\n const [appCategory, setAppCategory] = useState<string>(\"productive\");\n const [appMinutes, setAppMinutes] = useState(\"\");\n const [appSessions, setAppSessions] = useState(\"\");\n\n // Recategorize + delete\n const [recatApp, setRecatApp] =\n useState<ApplicationUsageFieldsFragment | null>(null);\n const [recatCategory, setRecatCategory] = useState<string>(\"productive\");\n const [deleteApp, setDeleteApp] =\n useState<ApplicationUsageFieldsFragment | null>(null);\n\n const [recordUsage, { loading: recording, error: recordError }] =\n useRecordApplicationUsageMutation();\n const [categorize, { loading: categorizing, error: categorizeError }] =\n useCategorizeApplicationMutation();\n const [removeUsage, { loading: deleting, error: deleteError }] =\n useDeleteApplicationUsageMutation();\n\n const refreshAll = async () => {\n await Promise.all([refetchUsages(), refetchSummary()]);\n };\n\n const openAdd = () => {\n setAppName(\"\");\n setAppCategory(\"productive\");\n setAppMinutes(\"\");\n setAppSessions(\"\");\n setAddOpen(true);\n };\n\n const handleRecord = async () => {\n if (!appName.trim() || !appMinutes) return;\n await recordUsage({\n variables: {\n input: {\n applicationName: appName.trim(),\n category: appCategory,\n timeSpent: Math.round(Number(appMinutes) * 60),\n sessions: appSessions ? Number(appSessions) : undefined,\n date: todayIso(),\n },\n },\n });\n setAddOpen(false);\n await refreshAll();\n };\n\n const openRecat = (app: ApplicationUsageFieldsFragment) => {\n setRecatApp(app);\n setRecatCategory(app.category);\n };\n\n const handleRecategorize = async () => {\n if (!recatApp) return;\n await categorize({\n variables: {\n applicationName: recatApp.applicationName,\n category: recatCategory,\n },\n });\n setRecatApp(null);\n await refreshAll();\n };\n\n const handleDelete = async () => {\n if (!deleteApp) return;\n await removeUsage({ variables: { id: deleteApp.id } });\n setDeleteApp(null);\n await refreshAll();\n };\n\n const handleLoadMore = async () => {\n setLoadingMore(true);\n try {\n await fetchMore({\n variables: { pagination: { limit: PAGE_SIZE, offset: apps.length } },\n updateQuery: (prev, { fetchMoreResult }) => {\n if (!fetchMoreResult) return prev;\n return {\n ...prev,\n applicationUsages: [\n ...prev.applicationUsages,\n ...fetchMoreResult.applicationUsages,\n ],\n };\n },\n });\n } finally {\n setLoadingMore(false);\n }\n };\n\n const totalScreenTimeSeconds = apps.reduce(\n (sum: number, app: ApplicationUsageFieldsFragment) => sum + app.timeSpent,\n 0,\n );\n const totalSwitches = apps.reduce(\n (sum: number, app: ApplicationUsageFieldsFragment) => sum + app.switches,\n 0,\n );\n const productiveRatio =\n summary?.productivityRatio != null\n ? `${Math.round(summary.productivityRatio * 100)}%`\n : \"--\";\n\n // Count focus sessions (apps with > 90 min continuous usage)\n const focusSessions = apps.filter(\n (app: ApplicationUsageFieldsFragment) => app.timeSpent >= 5400,\n ).length;\n\n // Rank the loaded apps by time spent (drives the numbered list).\n const rankedApps = [...apps].sort(\n (a: ApplicationUsageFieldsFragment, b: ApplicationUsageFieldsFragment) =>\n b.timeSpent - a.timeSpent,\n );\n\n // Productive / neutral / distracting split from the real usage summary.\n const categorySlices: DonutSlice[] = summary\n ? [\n {\n name: \"Productive\",\n value: summary.productiveTime,\n color: CATEGORY_SLICE_COLOR.productive,\n },\n {\n name: \"Neutral\",\n value: summary.neutralTime,\n color: CATEGORY_SLICE_COLOR.neutral,\n },\n {\n name: \"Distracting\",\n value: summary.distractingTime,\n color: CATEGORY_SLICE_COLOR.distracting,\n },\n ]\n : [];\n const categoryTotalSeconds =\n (summary?.productiveTime ?? 0) +\n (summary?.neutralTime ?? 0) +\n (summary?.distractingTime ?? 0);\n\n // Daily usage trend — sum the loaded apps' tracked time per calendar day.\n const usageByDay = new Map<string, number>();\n for (const app of apps as ApplicationUsageFieldsFragment[]) {\n const day = (app.date ?? \"\").slice(0, 10);\n if (!day) continue;\n usageByDay.set(day, (usageByDay.get(day) ?? 0) + app.timeSpent);\n }\n const usageTrend: ChartDatum[] = Array.from(usageByDay.entries())\n .sort(([a], [b]) => a.localeCompare(b))\n .map(([day, seconds]) => ({\n day,\n hours: Math.round((seconds / 3600) * 100) / 100,\n }));\n\n if (loading) {\n return (\n <PageLayout\n title=\"App Usage\"\n description=\"Track application usage and productivity\"\n >\n <LoadingSkeleton variant=\"card\" count={4} />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"App Usage\"\n description=\"Track application usage and productivity\"\n >\n <div className=\"rounded-xl border border-status-error-border/50 bg-status-error-bg/10 p-4 text-sm text-status-error-text\">\n Failed to load application usage. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"App Usage\"\n description=\"Track application usage and productivity\"\n purpose=\"See where your screen time actually goes — which apps are productive, how often you context-switch, and how many real focus sessions you get — so you can cut the digital distractions eating your day.\"\n actions={\n <button\n onClick={openAdd}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus className=\"h-4 w-4\" />\n Add Usage\n </button>\n }\n >\n <div className=\"space-y-6\">\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n featured\n title=\"Total Screen Time\"\n value={formatHours(totalScreenTimeSeconds / 3600)}\n icon={<Monitor className=\"h-5 w-5\" />}\n />\n <StatCard\n title=\"Productive Time\"\n value={productiveRatio}\n description=\"Share of tracked time\"\n />\n <StatCard\n title=\"App Switches\"\n value={String(totalSwitches)}\n description={`Avg. ${apps.length > 0 ? Math.round(totalSwitches / apps.length) : 0}/app`}\n />\n <StatCard\n title=\"Focus Sessions\"\n value={String(focusSessions)}\n icon={<Clock className=\"h-5 w-5\" />}\n description=\"90+ min each\"\n />\n </div>\n\n {apps.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n title=\"No application usage data found\"\n description=\"Record app usage manually or connect the desktop tracker, and your apps will appear here ranked by time spent.\"\n action={\n <button\n onClick={openAdd}\n className=\"inline-flex items-center gap-1.5 rounded-md bg-action-primary-bg px-3 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Plus className=\"h-4 w-4\" />\n Add Usage\n </button>\n }\n />\n ) : (\n <>\n <GlassCard treatment=\"glass\" className=\"overflow-hidden\">\n <div className=\"flex items-center justify-between gap-3 border-b border-border-seam px-4 py-3 sm:px-6\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n Ranked Applications\n </h3>\n <span className=\"text-xs text-text-secondary\">\n {apps.length} tracked\n </span>\n </div>\n <div className=\"divide-y divide-border\">\n {rankedApps.map(\n (app: ApplicationUsageFieldsFragment, index: number) => {\n const share = Math.min(\n 100,\n Math.round(\n (app.timeSpent / (totalScreenTimeSeconds || 1)) * 100,\n ),\n );\n return (\n <div\n key={app.id}\n className=\"flex items-center gap-3 p-4 transition-colors hover:bg-bg-sunken/50 sm:gap-4\"\n >\n <span className=\"flex h-7 w-7 shrink-0 items-center justify-center rounded-full bg-bg-sunken text-xs font-semibold tabular-nums text-text-secondary\">\n {index + 1}\n </span>\n <div className=\"flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-action-primary-bg/10 text-primary\">\n <Monitor className=\"h-4 w-4\" />\n </div>\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-medium text-text-primary\">\n {app.applicationName}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {app.sessions} sessions &middot; {app.switches}{\" \"}\n switches\n </p>\n </div>\n <div className=\"hidden w-28 shrink-0 lg:block\">\n <div className=\"h-2 rounded-full bg-bg-sunken\">\n <div\n className=\"h-2 rounded-full bg-action-primary-bg\"\n style={{ width: `${share}%` }}\n />\n </div>\n <p className=\"mt-1 text-right text-xs tabular-nums text-text-secondary\">\n {share}%\n </p>\n </div>\n <StatusBadge\n label={app.category}\n variant={CATEGORY_VARIANT[app.category] ?? \"muted\"}\n className=\"hidden capitalize sm:inline-flex\"\n />\n <p className=\"shrink-0 font-mono text-sm font-medium tabular-nums text-text-primary\">\n {formatHours(app.timeSpent / 3600)}\n </p>\n <div className=\"flex shrink-0 items-center gap-1\">\n <button\n onClick={() => openRecat(app)}\n className=\"rounded-md p-1.5 text-text-secondary hover:bg-bg-sunken hover:text-text-primary\"\n aria-label=\"Recategorize application\"\n >\n <Tag className=\"h-4 w-4\" />\n </button>\n <button\n onClick={() => setDeleteApp(app)}\n className=\"rounded-md p-1.5 text-text-secondary hover:bg-status-error-bg hover:text-status-error-text\"\n aria-label=\"Delete usage entry\"\n >\n <Trash2 className=\"h-4 w-4\" />\n </button>\n </div>\n </div>\n );\n },\n )}\n </div>\n </GlassCard>\n\n <div className=\"grid grid-cols-1 gap-4 lg:grid-cols-2\">\n <ChartCard\n title=\"Productivity Split\"\n description=\"Where your tracked screen time goes\"\n >\n <DonutChart\n data={categorySlices}\n centerLabel=\"Total tracked\"\n centerValue={categoryTotalSeconds}\n valueFormat={formatSecondsAsHours}\n height={260}\n emptyLabel=\"No categorized usage yet\"\n />\n </ChartCard>\n\n <ChartCard\n title=\"Daily Usage Trend\"\n description=\"Tracked time per day\"\n >\n <TrendChart\n data={usageTrend}\n xKey=\"day\"\n series={[{ key: \"hours\", label: \"Screen time\" }]}\n type=\"area\"\n valueFormat={formatChartHours}\n xTickFormat={formatDayTick}\n height={260}\n emptyLabel=\"No usage recorded yet\"\n />\n </ChartCard>\n </div>\n {hasMore && (\n <div className=\"mt-4 flex justify-center\">\n <button\n onClick={handleLoadMore}\n disabled={loadingMore}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50 disabled:opacity-50\"\n >\n {loadingMore ? \"Loading...\" : \"Load more\"}\n </button>\n </div>\n )}\n </>\n )}\n </div>\n\n {/* Add usage modal */}\n <Modal\n open={addOpen}\n onClose={() => setAddOpen(false)}\n title=\"Record App Usage\"\n description=\"Manually log time spent in an application\"\n footer={\n <>\n <button\n onClick={() => setAddOpen(false)}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\"\n >\n Cancel\n </button>\n <button\n onClick={handleRecord}\n disabled={recording || !appName.trim() || !appMinutes}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {recording ? \"Saving...\" : \"Record\"}\n </button>\n </>\n }\n >\n {recordError && (\n <div className=\"mb-4 rounded-lg border border-status-error-bg/40 bg-status-error-bg p-3 text-sm text-status-error-text\">\n Failed to record usage. Please try again.\n </div>\n )}\n <div className=\"space-y-4\">\n <div>\n <label className={labelClasses}>Application Name</label>\n <input\n type=\"text\"\n placeholder=\"e.g. Visual Studio Code\"\n value={appName}\n onChange={(e) => setAppName(e.target.value)}\n className={inputClasses}\n />\n </div>\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2\">\n <div>\n <label className={labelClasses}>Category</label>\n <select\n value={appCategory}\n onChange={(e) => setAppCategory(e.target.value)}\n className={inputClasses}\n >\n {CATEGORY_OPTIONS.map((c) => (\n <option key={c} value={c} className=\"capitalize\">\n {c}\n </option>\n ))}\n </select>\n </div>\n <div>\n <label className={labelClasses}>Time Spent (minutes)</label>\n <input\n type=\"number\"\n min=\"0\"\n placeholder=\"0\"\n value={appMinutes}\n onChange={(e) => setAppMinutes(e.target.value)}\n className={inputClasses}\n />\n </div>\n </div>\n <div>\n <label className={labelClasses}>Sessions</label>\n <input\n type=\"number\"\n min=\"0\"\n placeholder=\"0\"\n value={appSessions}\n onChange={(e) => setAppSessions(e.target.value)}\n className={inputClasses}\n />\n </div>\n </div>\n </Modal>\n\n {/* Recategorize modal */}\n <Modal\n open={recatApp !== null}\n onClose={() => setRecatApp(null)}\n title=\"Recategorize Application\"\n description={recatApp?.applicationName}\n size=\"sm\"\n footer={\n <>\n <button\n onClick={() => setRecatApp(null)}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\"\n >\n Cancel\n </button>\n <button\n onClick={handleRecategorize}\n disabled={categorizing}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {categorizing ? \"Saving...\" : \"Save\"}\n </button>\n </>\n }\n >\n {categorizeError && (\n <div className=\"mb-4 rounded-lg border border-status-error-bg/40 bg-status-error-bg p-3 text-sm text-status-error-text\">\n Failed to recategorize. Please try again.\n </div>\n )}\n <label className={labelClasses}>Category</label>\n <select\n value={recatCategory}\n onChange={(e) => setRecatCategory(e.target.value)}\n className={inputClasses}\n >\n {CATEGORY_OPTIONS.map((c) => (\n <option key={c} value={c} className=\"capitalize\">\n {c}\n </option>\n ))}\n </select>\n <p className=\"mt-3 text-xs text-text-secondary\">\n This updates the category for all usage of &ldquo;\n {recatApp?.applicationName}&rdquo;.\n </p>\n </Modal>\n\n {/* Delete confirm modal */}\n <Modal\n open={deleteApp !== null}\n onClose={() => setDeleteApp(null)}\n title=\"Delete Usage Entry\"\n size=\"sm\"\n footer={\n <>\n <button\n onClick={() => setDeleteApp(null)}\n className=\"rounded-md border border-border-subtle px-4 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\"\n >\n Cancel\n </button>\n <button\n onClick={handleDelete}\n disabled={deleting}\n className=\"rounded-md bg-status-error-bg px-4 py-2 text-sm font-medium text-status-error-text hover:bg-status-error-bg/90 disabled:opacity-50\"\n >\n {deleting ? \"Deleting...\" : \"Delete\"}\n </button>\n </>\n }\n >\n {deleteError && (\n <div className=\"mb-4 rounded-lg border border-status-error-bg/40 bg-status-error-bg p-3 text-sm text-status-error-text\">\n Failed to delete entry. Please try again.\n </div>\n )}\n <p className=\"text-sm text-text-secondary\">\n Are you sure you want to delete the usage entry for{\" \"}\n <span className=\"font-medium text-text-primary\">\n {deleteApp?.applicationName}\n </span>\n ? This action cannot be undone.\n </p>\n </Modal>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
@@ -43,10 +43,10 @@ var x = {
43
43
  };
44
44
  function S() {
45
45
  let { toasts: h, addToast: S, dismissToast: C } = ce(), w = be(), [T, E] = d(null), [D, O] = d(!1), { data: k, loading: De, error: Oe, refetch: A, fetchMore: ke } = te({
46
- variables: {
46
+ variables: { pagination: {
47
47
  limit: y,
48
48
  offset: 0
49
- },
49
+ } },
50
50
  notifyOnNetworkStatusChange: !0
51
51
  }), { data: Ae, refetch: je } = ee(), [Me, { loading: j }] = ne(), [Ne, { loading: M }] = o(), [N, { loading: P }] = ie(), [Pe, { loading: F }] = s(), [Fe] = re(), I = k?.clientPortalConfigs?.items ?? [], Ie = k?.clientPortalConfigs?.hasMore ?? !1, L = Ae?.clientPortalStats, R = (e) => e.projects.reduce((e, t) => e + t.trackedHours, 0), z = (L?.totalClients ?? 0) - (L?.activeClients ?? 0), Le = I.map((e) => ({
52
52
  name: e.clientName,
@@ -195,10 +195,10 @@ function S() {
195
195
  H(!0);
196
196
  try {
197
197
  await ke({
198
- variables: {
198
+ variables: { pagination: {
199
199
  limit: y,
200
200
  offset: I.length
201
- },
201
+ } },
202
202
  updateQuery: (e, { fetchMoreResult: t }) => t ? {
203
203
  ...e,
204
204
  clientPortalConfigs: {