@burdenoff/microfe-timecampus 2026.801.1 → 2026.820.2

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 (155) hide show
  1. package/dist/generated/wspace-operations.d.ts +484 -861
  2. package/dist/generated/wspace-operations.d.ts.map +1 -1
  3. package/dist/generated/wspace-operations.js +1377 -1377
  4. package/dist/generated/wspace-operations.js.map +1 -1
  5. package/dist/generated/wspace-types.js.map +1 -1
  6. package/dist/index.js +5 -3
  7. package/dist/services/createSandboxAssistantTransport.js.map +1 -1
  8. package/dist/stories/EmptyState.stories.d.ts +0 -1
  9. package/dist/stories/LoadingSkeleton.stories.d.ts +0 -1
  10. package/dist/stories/StatCard.stories.d.ts +0 -1
  11. package/dist/stories/StatusBadge.stories.d.ts +0 -1
  12. package/dist/timecampus/AdminRoot.d.ts +8 -0
  13. package/dist/timecampus/AdminRoot.d.ts.map +1 -0
  14. package/dist/timecampus/AdminRoot.js +12 -0
  15. package/dist/timecampus/AdminRoot.js.map +1 -0
  16. package/dist/timecampus/AdminRoutes.d.ts +3 -0
  17. package/dist/timecampus/AdminRoutes.d.ts.map +1 -0
  18. package/dist/timecampus/AdminRoutes.js +8 -0
  19. package/dist/timecampus/AdminRoutes.js.map +1 -0
  20. package/dist/timecampus/TimeCampusRoot.d.ts +0 -1
  21. package/dist/timecampus/TimeCampusRoot.js +4 -2
  22. package/dist/timecampus/TimeCampusRoot.js.map +1 -1
  23. package/dist/timecampus/TimeCampusRoutes.js.map +1 -1
  24. package/dist/timecampus/components/ChartCard.d.ts +0 -1
  25. package/dist/timecampus/components/ChartCard.js.map +1 -1
  26. package/dist/timecampus/components/DataTable.d.ts +0 -1
  27. package/dist/timecampus/components/EmptyState.d.ts +0 -1
  28. package/dist/timecampus/components/EmptyState.js.map +1 -1
  29. package/dist/timecampus/components/ErrorBoundary.d.ts +0 -1
  30. package/dist/timecampus/components/ErrorBoundary.js.map +1 -1
  31. package/dist/timecampus/components/FilterBar.d.ts +0 -1
  32. package/dist/timecampus/components/LoadingSkeleton.d.ts +0 -1
  33. package/dist/timecampus/components/LoadingSkeleton.js.map +1 -1
  34. package/dist/timecampus/components/Modal.d.ts +0 -1
  35. package/dist/timecampus/components/Modal.js +5 -3
  36. package/dist/timecampus/components/Modal.js.map +1 -1
  37. package/dist/timecampus/components/PageLayout.d.ts +0 -1
  38. package/dist/timecampus/components/PageLayout.js.map +1 -1
  39. package/dist/timecampus/components/StatCard.d.ts +0 -1
  40. package/dist/timecampus/components/StatCard.js.map +1 -1
  41. package/dist/timecampus/components/StatusBadge.d.ts +0 -1
  42. package/dist/timecampus/components/StatusBadge.js.map +1 -1
  43. package/dist/timecampus/components/Toast.d.ts +0 -1
  44. package/dist/timecampus/components/Toast.js.map +1 -1
  45. package/dist/timecampus/components/charts/BalanceWheel.js.map +1 -1
  46. package/dist/timecampus/components/charts/BarsChart.d.ts +0 -1
  47. package/dist/timecampus/components/charts/BarsChart.js.map +1 -1
  48. package/dist/timecampus/components/charts/ChartParts.d.ts +0 -1
  49. package/dist/timecampus/components/charts/ChartParts.js.map +1 -1
  50. package/dist/timecampus/components/charts/DonutChart.d.ts +0 -1
  51. package/dist/timecampus/components/charts/DonutChart.js.map +1 -1
  52. package/dist/timecampus/components/charts/Heatmap.d.ts +0 -1
  53. package/dist/timecampus/components/charts/Heatmap.js +29 -29
  54. package/dist/timecampus/components/charts/Heatmap.js.map +1 -1
  55. package/dist/timecampus/components/charts/ProgressMeter.d.ts +0 -1
  56. package/dist/timecampus/components/charts/ProgressMeter.js +2 -2
  57. package/dist/timecampus/components/charts/ProgressMeter.js.map +1 -1
  58. package/dist/timecampus/components/charts/RadialGauge.d.ts +0 -1
  59. package/dist/timecampus/components/charts/RadialGauge.js +2 -2
  60. package/dist/timecampus/components/charts/RadialGauge.js.map +1 -1
  61. package/dist/timecampus/components/charts/TrendChart.d.ts +0 -1
  62. package/dist/timecampus/components/charts/TrendChart.js.map +1 -1
  63. package/dist/timecampus/components/charts/WeeksGrid.js +2 -2
  64. package/dist/timecampus/components/charts/WeeksGrid.js.map +1 -1
  65. package/dist/timecampus/components/charts/chartTheme.js.map +1 -1
  66. package/dist/timecampus/components/charts/index.js +10 -9
  67. package/dist/timecampus/components/index.js +18 -17
  68. package/dist/timecampus/index.d.ts +3 -1
  69. package/dist/timecampus/index.d.ts.map +1 -1
  70. package/dist/timecampus/index.js +8 -5
  71. package/dist/timecampus/pages/HomePage.d.ts +0 -1
  72. package/dist/timecampus/pages/HomePage.js.map +1 -1
  73. package/dist/timecampus/pages/admin/AdminPage.d.ts +3 -0
  74. package/dist/timecampus/pages/admin/AdminPage.d.ts.map +1 -0
  75. package/dist/timecampus/pages/admin/AdminPage.js +235 -0
  76. package/dist/timecampus/pages/admin/AdminPage.js.map +1 -0
  77. package/dist/timecampus/pages/application-usage/ApplicationUsagePage.d.ts.map +1 -1
  78. package/dist/timecampus/pages/application-usage/ApplicationUsagePage.js.map +1 -1
  79. package/dist/timecampus/pages/client-portal/ClientPortalPage.d.ts.map +1 -1
  80. package/dist/timecampus/pages/client-portal/ClientPortalPage.js.map +1 -1
  81. package/dist/timecampus/pages/dashboard/AnalyticsPage.js.map +1 -1
  82. package/dist/timecampus/pages/dashboard/ReportsPage.js.map +1 -1
  83. package/dist/timecampus/pages/email-tracking/EmailAnalyticsPage.js.map +1 -1
  84. package/dist/timecampus/pages/email-tracking/EmailTrackingPage.d.ts.map +1 -1
  85. package/dist/timecampus/pages/email-tracking/EmailTrackingPage.js.map +1 -1
  86. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.d.ts.map +1 -1
  87. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js.map +1 -1
  88. package/dist/timecampus/pages/focus-score/FocusScorePage.js.map +1 -1
  89. package/dist/timecampus/pages/geofencing/GeofencingPage.d.ts.map +1 -1
  90. package/dist/timecampus/pages/geofencing/GeofencingPage.js.map +1 -1
  91. package/dist/timecampus/pages/invoicing/InvoicingPage.d.ts.map +1 -1
  92. package/dist/timecampus/pages/invoicing/InvoicingPage.js.map +1 -1
  93. package/dist/timecampus/pages/lifetime/DeadTimeRadarPage.js.map +1 -1
  94. package/dist/timecampus/pages/lifetime/FiniteLifePage.js.map +1 -1
  95. package/dist/timecampus/pages/lifetime/LifeBalancePage.js.map +1 -1
  96. package/dist/timecampus/pages/lifetime/LifeTimelinePage.js.map +1 -1
  97. package/dist/timecampus/pages/lifetime/PersonalCorporatePage.js.map +1 -1
  98. package/dist/timecampus/pages/lifetime/RecommendationsPage.js +1 -1
  99. package/dist/timecampus/pages/lifetime/RecommendationsPage.js.map +1 -1
  100. package/dist/timecampus/pages/lifetime/TimeWellSpentPage.js.map +1 -1
  101. package/dist/timecampus/pages/lifetime/ValuesGoalsPage.js +9 -6
  102. package/dist/timecampus/pages/lifetime/ValuesGoalsPage.js.map +1 -1
  103. package/dist/timecampus/pages/lifetime/domains.d.ts +0 -1
  104. package/dist/timecampus/pages/lifetime/domains.js +1 -1
  105. package/dist/timecampus/pages/lifetime/domains.js.map +1 -1
  106. package/dist/timecampus/pages/location-tracking/LocationTrackingPage.d.ts.map +1 -1
  107. package/dist/timecampus/pages/location-tracking/LocationTrackingPage.js.map +1 -1
  108. package/dist/timecampus/pages/meetings/ActionItemFormModal.d.ts +0 -1
  109. package/dist/timecampus/pages/meetings/ActionItemFormModal.js.map +1 -1
  110. package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js +1 -1
  111. package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js.map +1 -1
  112. package/dist/timecampus/pages/meetings/MeetingCreatePage.js.map +1 -1
  113. package/dist/timecampus/pages/meetings/MeetingDetailPage.js.map +1 -1
  114. package/dist/timecampus/pages/meetings/MeetingFormModal.d.ts +0 -1
  115. package/dist/timecampus/pages/meetings/MeetingFormModal.js.map +1 -1
  116. package/dist/timecampus/pages/meetings/MeetingsPage.js.map +1 -1
  117. package/dist/timecampus/pages/meetings/ParticipantFormModal.d.ts +0 -1
  118. package/dist/timecampus/pages/meetings/ParticipantFormModal.js.map +1 -1
  119. package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.js.map +1 -1
  120. package/dist/timecampus/pages/pomodoro/PomodoroPage.js.map +1 -1
  121. package/dist/timecampus/pages/pomodoro/PomodoroSettingsPage.js.map +1 -1
  122. package/dist/timecampus/pages/projects/ProjectCreatePage.js.map +1 -1
  123. package/dist/timecampus/pages/projects/ProjectDetailPage.js.map +1 -1
  124. package/dist/timecampus/pages/projects/ProjectsPage.js.map +1 -1
  125. package/dist/timecampus/pages/projects/TasksPage.js.map +1 -1
  126. package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.d.ts.map +1 -1
  127. package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.js.map +1 -1
  128. package/dist/timecampus/pages/team/TeamAnalyticsPage.js.map +1 -1
  129. package/dist/timecampus/pages/team/TeamMembersPage.js.map +1 -1
  130. package/dist/timecampus/pages/team/TeamPage.js.map +1 -1
  131. package/dist/timecampus/pages/team-activity/TeamActivityPage.js.map +1 -1
  132. package/dist/timecampus/pages/time/TimeEntriesPage.d.ts.map +1 -1
  133. package/dist/timecampus/pages/time/TimeEntriesPage.js.map +1 -1
  134. package/dist/timecampus/pages/time/TimeTrackingPage.js +1 -1
  135. package/dist/timecampus/pages/time/TimeTrackingPage.js.map +1 -1
  136. package/dist/timecampus/pages/time/TimerPage.js +4 -4
  137. package/dist/timecampus/pages/time/TimerPage.js.map +1 -1
  138. package/dist/timecampus/pages/time-approval/TimeApprovalPage.d.ts.map +1 -1
  139. package/dist/timecampus/pages/time-approval/TimeApprovalPage.js.map +1 -1
  140. package/dist/timecampus/pages/timeline/TimelinePage.js.map +1 -1
  141. package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js +1 -1
  142. package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js.map +1 -1
  143. package/dist/timecampus/providers/TimeCampusProvider.d.ts +0 -1
  144. package/dist/timecampus/providers/TimeCampusProvider.d.ts.map +1 -1
  145. package/dist/timecampus/providers/TimeCampusProvider.js +38 -35
  146. package/dist/timecampus/providers/TimeCampusProvider.js.map +1 -1
  147. package/dist/timecampus/store/timecampusStore.js.map +1 -1
  148. package/dist/timecampus/types/index.d.ts +4 -1
  149. package/dist/timecampus/types/index.d.ts.map +1 -1
  150. package/dist/timecampus/utils/helpers.d.ts +0 -1
  151. package/dist/timecampus/utils/helpers.js.map +1 -1
  152. package/dist/types/assistant.d.ts +0 -1
  153. package/dist/utils/pageContext.js +1 -1
  154. package/dist/utils/pageContext.js.map +1 -1
  155. package/package.json +60 -57
@@ -22,42 +22,45 @@ var h = e(null), g = () => {
22
22
  r
23
23
  ]);
24
24
  }, v = ({ children: e, basePath: t, navigate: n, currentUser: a, workspaceId: g, tenantId: _, apiGatewayUrl: v, authToken: y, workspaceToken: b, registerNavItems: x, registerFooterItems: S, onAuthError: C }) => {
25
- let w = r(() => new o({
26
- link: l([
27
- u(({ error: e }) => {
28
- if (d.is(e)) for (let t of e.errors) {
29
- let e = t.extensions?.code;
30
- if (e === "UNAUTHENTICATED" || e === "FORBIDDEN") {
31
- console.warn("[TimeCampus] Auth error detected — notifying host shell"), C?.();
32
- return;
33
- }
25
+ let w = r(() => {
26
+ let e = u(({ error: e }) => {
27
+ if (d.is(e)) for (let t of e.errors) {
28
+ let e = t.extensions?.code;
29
+ if (e === "UNAUTHENTICATED" || e === "FORBIDDEN") {
30
+ console.warn("[TimeCampus] Auth error detected — notifying host shell"), C?.();
31
+ return;
34
32
  }
35
- else if (e) {
36
- let t = e.message ?? "";
37
- (t.includes("401") || t.includes("403") || t.includes("Unauthorized")) && (console.warn("[TimeCampus] Auth network error — notifying host shell"), C?.());
38
- }
39
- }),
40
- f((e, { headers: t }) => ({ headers: {
41
- ...t,
42
- ...y ? { Authorization: `Bearer ${y}` } : {},
43
- ...b ? { "X-Workspace-Authorization": `Bearer ${b}` } : {},
44
- ...g ? { "x-workspace-id": g } : {},
45
- ..._ ? { "x-tenant-id": _ } : {},
46
- ...a?.id ? { "x-actor-id": a.id } : {},
47
- ...a?.id ? { "x-actor-type": "user" } : {}
48
- } })),
49
- new s({ uri: v ? v.endsWith("/graphql") ? v : `${v}/workspaces/graphql` : "/workspaces/graphql" })
50
- ]),
51
- cache: new c(),
52
- defaultOptions: {
53
- watchQuery: {
54
- fetchPolicy: "cache-and-network",
55
- errorPolicy: "all"
56
- },
57
- query: { errorPolicy: "all" },
58
- mutate: { errorPolicy: "all" }
59
- }
60
- }), [
33
+ }
34
+ else if (e) {
35
+ let t = e.message ?? "";
36
+ (t.includes("401") || t.includes("403") || t.includes("Unauthorized")) && (console.warn("[TimeCampus] Auth network error — notifying host shell"), C?.());
37
+ }
38
+ }), t = f((e, { headers: t }) => ({ headers: {
39
+ ...t,
40
+ ...y ? { Authorization: `Bearer ${y}` } : {},
41
+ ...b ? { "X-Workspace-Authorization": `Bearer ${b}` } : {},
42
+ ...g ? { "x-workspace-id": g } : {},
43
+ ..._ ? { "x-tenant-id": _ } : {},
44
+ ...a?.id ? { "x-actor-id": a.id } : {},
45
+ ...a?.id ? { "x-actor-type": "user" } : {}
46
+ } })), n = v ? v.endsWith("/graphql") ? v : `${v}/workspaces/graphql` : "/workspaces/graphql", r = new s({ uri: n });
47
+ return new o({
48
+ link: l([
49
+ e,
50
+ t,
51
+ r
52
+ ]),
53
+ cache: new c(),
54
+ defaultOptions: {
55
+ watchQuery: {
56
+ fetchPolicy: "cache-and-network",
57
+ errorPolicy: "all"
58
+ },
59
+ query: { errorPolicy: "all" },
60
+ mutate: { errorPolicy: "all" }
61
+ }
62
+ });
63
+ }, [
61
64
  v,
62
65
  y,
63
66
  b,
@@ -1 +1 @@
1
- {"version":3,"file":"TimeCampusProvider.js","names":[],"sources":["../../../src/timecampus/providers/TimeCampusProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport { createContext, useContext, useMemo, useCallback } from \"react\";\nimport {\n MemoryRouter,\n useNavigate as useRouterNavigate,\n} from \"react-router\";\nimport { ApolloClient, InMemoryCache, HttpLink, from } from \"@apollo/client\";\nimport { onError } from \"@apollo/client/link/error\";\nimport { CombinedGraphQLErrors } from \"@apollo/client/errors\";\nimport { setContext } from \"@apollo/client/link/context\";\nimport { ApolloProvider } from \"@apollo/client/react\";\nimport type { TimeCampusRootProps } from \"../types\";\n\n/**\n * Context value for TimeCampus microfrontend\n */\ntype TimeCampusContextValue = TimeCampusRootProps;\n\nconst TimeCampusContext = createContext<TimeCampusContextValue | null>(null);\n\n/**\n * Hook to access TimeCampus context\n */\nexport const useTimeCampus = () => {\n const context = useContext(TimeCampusContext);\n if (!context) {\n throw new Error(\"useTimeCampus must be used within TimeCampusProvider\");\n }\n return context;\n};\n\n/**\n * Hook for navigation within the TimeCampus microfrontend.\n * Uses the shell's navigate function if available, falling back to\n * React Router's useNavigate. Automatically prepends basePath.\n *\n * Usage:\n * const navigate = useTimeCampusNavigate();\n * navigate('/projects/123'); // navigates to /timecampus/projects/123\n */\nexport const useTimeCampusNavigate = () => {\n const { navigate: shellNavigate, basePath } = useTimeCampus();\n const routerNavigate = useRouterNavigate();\n\n return useCallback(\n (path: string) => {\n const fullPath =\n basePath && basePath !== \"/\" ? `${basePath}${path}` : path;\n if (shellNavigate) {\n shellNavigate(fullPath);\n } else {\n routerNavigate(fullPath);\n }\n },\n [shellNavigate, basePath, routerNavigate],\n );\n};\n\n/**\n * Provider component for TimeCampus microfrontend\n * Sets up routing, Apollo Client with auth error detection, and context.\n *\n * The Apollo Client is configured with:\n * - An onError link that detects UNAUTHENTICATED / FORBIDDEN responses and\n * invokes the `onAuthError` prop so the host shell can trigger logout.\n * - A dynamic auth link that reads the token per-request (not baked in at\n * client creation time), so token refreshes take effect immediately.\n */\nexport const TimeCampusProvider: FC<PropsWithChildren<TimeCampusRootProps>> = ({\n children,\n basePath,\n navigate,\n currentUser,\n workspaceId,\n tenantId,\n apiGatewayUrl,\n authToken,\n workspaceToken,\n registerNavItems,\n registerFooterItems,\n onAuthError,\n}) => {\n // Build Apollo Client with error link + dynamic auth link\n const apolloClient = useMemo(() => {\n // Error link (Apollo v4 pattern): detect authentication failures\n const errorLink = onError(({ error }) => {\n if (CombinedGraphQLErrors.is(error)) {\n for (const graphQLError of error.errors) {\n const code = graphQLError.extensions?.code;\n if (code === \"UNAUTHENTICATED\" || code === \"FORBIDDEN\") {\n console.warn(\n \"[TimeCampus] Auth error detected — notifying host shell\",\n );\n onAuthError?.();\n return; // Only fire once per batch\n }\n }\n } else if (error) {\n // Network-level errors (e.g., gateway returning 401/403 as non-JSON)\n const msg = error.message ?? \"\";\n if (\n msg.includes(\"401\") ||\n msg.includes(\"403\") ||\n msg.includes(\"Unauthorized\")\n ) {\n console.warn(\n \"[TimeCampus] Auth network error — notifying host shell\",\n );\n onAuthError?.();\n }\n }\n });\n\n // Auth link: dynamically attach the Bearer token per-request\n const authLink = setContext((_, { headers }) => ({\n headers: {\n ...headers,\n ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),\n ...(workspaceToken\n ? { \"X-Workspace-Authorization\": `Bearer ${workspaceToken}` }\n : {}),\n ...(workspaceId ? { \"x-workspace-id\": workspaceId } : {}),\n ...(tenantId ? { \"x-tenant-id\": tenantId } : {}),\n ...(currentUser?.id ? { \"x-actor-id\": currentUser.id } : {}),\n ...(currentUser?.id ? { \"x-actor-type\": \"user\" } : {}),\n },\n }));\n\n const graphqlUri = apiGatewayUrl\n ? apiGatewayUrl.endsWith(\"/graphql\")\n ? apiGatewayUrl\n : `${apiGatewayUrl}/workspaces/graphql`\n : \"/workspaces/graphql\";\n\n const httpLink = new HttpLink({\n uri: graphqlUri,\n });\n\n return new ApolloClient({\n link: from([errorLink, authLink, httpLink]),\n cache: new InMemoryCache(),\n defaultOptions: {\n watchQuery: { fetchPolicy: \"cache-and-network\", errorPolicy: \"all\" },\n query: { errorPolicy: \"all\" },\n mutate: { errorPolicy: \"all\" },\n },\n });\n }, [\n apiGatewayUrl,\n authToken,\n workspaceToken,\n currentUser?.id,\n onAuthError,\n tenantId,\n workspaceId,\n ]);\n\n const contextValue: TimeCampusContextValue = {\n basePath,\n navigate,\n currentUser,\n workspaceId,\n tenantId,\n apiGatewayUrl,\n authToken,\n workspaceToken,\n registerNavItems,\n registerFooterItems,\n onAuthError,\n };\n\n const isIntegrated = !!basePath;\n const content = (\n <TimeCampusContext.Provider value={contextValue}>\n {children}\n </TimeCampusContext.Provider>\n );\n\n // When integrated into a shell (basePath provided), the shell already has a router and ApolloProvider\n // so we don't create another one. When standalone (no basePath), use MemoryRouter and ApolloProvider.\n return isIntegrated ? (\n content\n ) : (\n <ApolloProvider client={apolloClient}>\n <MemoryRouter>{content}</MemoryRouter>\n </ApolloProvider>\n );\n};\n"],"mappings":";;;;;;;;;AAkBA,IAAM,IAAoB,EAA6C,KAAK,EAK/D,UAAsB;CACjC,IAAM,IAAU,EAAW,EAAkB;AAC7C,KAAI,CAAC,EACH,OAAU,MAAM,uDAAuD;AAEzE,QAAO;GAYI,UAA8B;CACzC,IAAM,EAAE,UAAU,GAAe,gBAAa,GAAe,EACvD,IAAiB,GAAmB;AAE1C,QAAO,GACJ,MAAiB;EAChB,IAAM,IACJ,KAAY,MAAa,MAAM,GAAG,IAAW,MAAS;AACxD,EAAI,IACF,EAAc,EAAS,GAEvB,EAAe,EAAS;IAG5B;EAAC;EAAe;EAAU;EAAe,CAC1C;GAaU,KAAkE,EAC7E,aACA,aACA,aACA,gBACA,gBACA,aACA,kBACA,cACA,mBACA,qBACA,wBACA,qBACI;CAEJ,IAAM,IAAe,QAuDZ,IAAI,EAAa;EACtB,MAAM,EAAK;GAtDK,GAAS,EAAE,eAAY;AACvC,QAAI,EAAsB,GAAG,EAAM,CACjC,MAAK,IAAM,KAAgB,EAAM,QAAQ;KACvC,IAAM,IAAO,EAAa,YAAY;AACtC,SAAI,MAAS,qBAAqB,MAAS,aAAa;AAItD,MAHA,QAAQ,KACN,0DACD,EACD,KAAe;AACf;;;aAGK,GAAO;KAEhB,IAAM,IAAM,EAAM,WAAW;AAC7B,MACE,EAAI,SAAS,MAAM,IACnB,EAAI,SAAS,MAAM,IACnB,EAAI,SAAS,eAAe,MAE5B,QAAQ,KACN,yDACD,EACD,KAAe;;KAGnB;GAGe,GAAY,GAAG,EAAE,kBAAe,EAC/C,SAAS;IACP,GAAG;IACH,GAAI,IAAY,EAAE,eAAe,UAAU,KAAa,GAAG,EAAE;IAC7D,GAAI,IACA,EAAE,6BAA6B,UAAU,KAAkB,GAC3D,EAAE;IACN,GAAI,IAAc,EAAE,kBAAkB,GAAa,GAAG,EAAE;IACxD,GAAI,IAAW,EAAE,eAAe,GAAU,GAAG,EAAE;IAC/C,GAAI,GAAa,KAAK,EAAE,cAAc,EAAY,IAAI,GAAG,EAAE;IAC3D,GAAI,GAAa,KAAK,EAAE,gBAAgB,QAAQ,GAAG,EAAE;IACtD,EACF,EAAE;GAQc,IAAI,EAAS,EAC5B,KAPiB,IACf,EAAc,SAAS,WAAW,GAChC,IACA,GAAG,EAAc,uBACnB,uBAIH,CAAC;GAG0C,CAAC;EAC3C,OAAO,IAAI,GAAe;EAC1B,gBAAgB;GACd,YAAY;IAAE,aAAa;IAAqB,aAAa;IAAO;GACpE,OAAO,EAAE,aAAa,OAAO;GAC7B,QAAQ,EAAE,aAAa,OAAO;GAC/B;EACF,CAAC,EACD;EACD;EACA;EACA;EACA,GAAa;EACb;EACA;EACA;EACD,CAAC,EAEI,IAAuC;EAC3C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,EAEK,IAAe,CAAC,CAAC,GACjB,IACJ,kBAAC,EAAkB,UAAnB;EAA4B,OAAO;EAChC;EAC0B,CAAA;AAK/B,QAAO,IACL,IAEA,kBAAC,GAAD;EAAgB,QAAQ;YACtB,kBAAC,GAAD,EAAA,UAAe,GAAuB,CAAA;EACvB,CAAA"}
1
+ {"version":3,"file":"TimeCampusProvider.js","names":[],"sources":["../../../src/timecampus/providers/TimeCampusProvider.tsx"],"sourcesContent":["import type { FC, PropsWithChildren } from \"react\";\nimport { createContext, useContext, useMemo, useCallback } from \"react\";\nimport { MemoryRouter, useNavigate as useRouterNavigate } from \"react-router\";\nimport { ApolloClient, InMemoryCache, HttpLink, from } from \"@apollo/client\";\nimport { onError } from \"@apollo/client/link/error\";\nimport { CombinedGraphQLErrors } from \"@apollo/client/errors\";\nimport { setContext } from \"@apollo/client/link/context\";\nimport { ApolloProvider } from \"@apollo/client/react\";\nimport type { TimeCampusRootProps } from \"../types\";\n\n/**\n * Context value for TimeCampus microfrontend\n */\ntype TimeCampusContextValue = TimeCampusRootProps;\n\nconst TimeCampusContext = createContext<TimeCampusContextValue | null>(null);\n\n/**\n * Hook to access TimeCampus context\n */\nexport const useTimeCampus = () => {\n const context = useContext(TimeCampusContext);\n if (!context) {\n throw new Error(\"useTimeCampus must be used within TimeCampusProvider\");\n }\n return context;\n};\n\n/**\n * Hook for navigation within the TimeCampus microfrontend.\n * Uses the shell's navigate function if available, falling back to\n * React Router's useNavigate. Automatically prepends basePath.\n *\n * Usage:\n * const navigate = useTimeCampusNavigate();\n * navigate('/projects/123'); // navigates to /timecampus/projects/123\n */\nexport const useTimeCampusNavigate = () => {\n const { navigate: shellNavigate, basePath } = useTimeCampus();\n const routerNavigate = useRouterNavigate();\n\n return useCallback(\n (path: string) => {\n const fullPath =\n basePath && basePath !== \"/\" ? `${basePath}${path}` : path;\n if (shellNavigate) {\n shellNavigate(fullPath);\n } else {\n routerNavigate(fullPath);\n }\n },\n [shellNavigate, basePath, routerNavigate],\n );\n};\n\n/**\n * Provider component for TimeCampus microfrontend\n * Sets up routing, Apollo Client with auth error detection, and context.\n *\n * The Apollo Client is configured with:\n * - An onError link that detects UNAUTHENTICATED / FORBIDDEN responses and\n * invokes the `onAuthError` prop so the host shell can trigger logout.\n * - A dynamic auth link that reads the token per-request (not baked in at\n * client creation time), so token refreshes take effect immediately.\n */\nexport const TimeCampusProvider: FC<PropsWithChildren<TimeCampusRootProps>> = ({\n children,\n basePath,\n navigate,\n currentUser,\n workspaceId,\n tenantId,\n apiGatewayUrl,\n authToken,\n workspaceToken,\n registerNavItems,\n registerFooterItems,\n onAuthError,\n}) => {\n // Build Apollo Client with error link + dynamic auth link\n const apolloClient = useMemo(() => {\n // Error link (Apollo v4 pattern): detect authentication failures\n const errorLink = onError(({ error }) => {\n if (CombinedGraphQLErrors.is(error)) {\n for (const graphQLError of error.errors) {\n const code = graphQLError.extensions?.code;\n if (code === \"UNAUTHENTICATED\" || code === \"FORBIDDEN\") {\n console.warn(\n \"[TimeCampus] Auth error detected — notifying host shell\",\n );\n onAuthError?.();\n return; // Only fire once per batch\n }\n }\n } else if (error) {\n // Network-level errors (e.g., gateway returning 401/403 as non-JSON)\n const msg = error.message ?? \"\";\n if (\n msg.includes(\"401\") ||\n msg.includes(\"403\") ||\n msg.includes(\"Unauthorized\")\n ) {\n console.warn(\n \"[TimeCampus] Auth network error — notifying host shell\",\n );\n onAuthError?.();\n }\n }\n });\n\n // Auth link: dynamically attach the Bearer token per-request\n const authLink = setContext((_, { headers }) => ({\n headers: {\n ...headers,\n ...(authToken ? { Authorization: `Bearer ${authToken}` } : {}),\n ...(workspaceToken\n ? { \"X-Workspace-Authorization\": `Bearer ${workspaceToken}` }\n : {}),\n ...(workspaceId ? { \"x-workspace-id\": workspaceId } : {}),\n ...(tenantId ? { \"x-tenant-id\": tenantId } : {}),\n ...(currentUser?.id ? { \"x-actor-id\": currentUser.id } : {}),\n ...(currentUser?.id ? { \"x-actor-type\": \"user\" } : {}),\n },\n }));\n\n const graphqlUri = apiGatewayUrl\n ? apiGatewayUrl.endsWith(\"/graphql\")\n ? apiGatewayUrl\n : `${apiGatewayUrl}/workspaces/graphql`\n : \"/workspaces/graphql\";\n\n const httpLink = new HttpLink({\n uri: graphqlUri,\n });\n\n return new ApolloClient({\n link: from([errorLink, authLink, httpLink]),\n cache: new InMemoryCache(),\n defaultOptions: {\n watchQuery: { fetchPolicy: \"cache-and-network\", errorPolicy: \"all\" },\n query: { errorPolicy: \"all\" },\n mutate: { errorPolicy: \"all\" },\n },\n });\n }, [\n apiGatewayUrl,\n authToken,\n workspaceToken,\n currentUser?.id,\n onAuthError,\n tenantId,\n workspaceId,\n ]);\n\n const contextValue: TimeCampusContextValue = {\n basePath,\n navigate,\n currentUser,\n workspaceId,\n tenantId,\n apiGatewayUrl,\n authToken,\n workspaceToken,\n registerNavItems,\n registerFooterItems,\n onAuthError,\n };\n\n const isIntegrated = !!basePath;\n const content = (\n <TimeCampusContext.Provider value={contextValue}>\n {children}\n </TimeCampusContext.Provider>\n );\n\n // When integrated into a shell (basePath provided), the shell already has a router and ApolloProvider\n // so we don't create another one. When standalone (no basePath), use MemoryRouter and ApolloProvider.\n return isIntegrated ? (\n content\n ) : (\n <ApolloProvider client={apolloClient}>\n <MemoryRouter>{content}</MemoryRouter>\n </ApolloProvider>\n );\n};\n"],"mappings":";;;;;;;;;AAeA,IAAM,IAAoB,EAA6C,IAAI,GAK9D,UAAsB;CACjC,IAAM,IAAU,EAAW,CAAiB;CAC5C,IAAI,CAAC,GACH,MAAU,MAAM,sDAAsD;CAExE,OAAO;AACT,GAWa,UAA8B;CACzC,IAAM,EAAE,UAAU,GAAe,gBAAa,EAAc,GACtD,IAAiB,EAAkB;CAEzC,OAAO,GACJ,MAAiB;EAChB,IAAM,IACJ,KAAY,MAAa,MAAM,GAAG,IAAW,MAAS;EACxD,AAAI,IACF,EAAc,CAAQ,IAEtB,EAAe,CAAQ;CAE3B,GACA;EAAC;EAAe;EAAU;CAAc,CAC1C;AACF,GAYa,KAAkE,EAC7E,aACA,aACA,aACA,gBACA,gBACA,aACA,kBACA,cACA,mBACA,qBACA,wBACA,qBACI;CAEJ,IAAM,IAAe,QAAc;EAEjC,IAAM,IAAY,GAAS,EAAE,eAAY;GACvC,IAAI,EAAsB,GAAG,CAAK,GAChC,KAAK,IAAM,KAAgB,EAAM,QAAQ;IACvC,IAAM,IAAO,EAAa,YAAY;IACtC,IAAI,MAAS,qBAAqB,MAAS,aAAa;KAItD,AAHA,QAAQ,KACN,yDACF,GACA,IAAc;KACd;IACF;GACF;QACK,IAAI,GAAO;IAEhB,IAAM,IAAM,EAAM,WAAW;IAC7B,CACE,EAAI,SAAS,KAAK,KAClB,EAAI,SAAS,KAAK,KAClB,EAAI,SAAS,cAAc,OAE3B,QAAQ,KACN,wDACF,GACA,IAAc;GAElB;EACF,CAAC,GAGK,IAAW,GAAY,GAAG,EAAE,kBAAe,EAC/C,SAAS;GACP,GAAG;GACH,GAAI,IAAY,EAAE,eAAe,UAAU,IAAY,IAAI,CAAC;GAC5D,GAAI,IACA,EAAE,6BAA6B,UAAU,IAAiB,IAC1D,CAAC;GACL,GAAI,IAAc,EAAE,kBAAkB,EAAY,IAAI,CAAC;GACvD,GAAI,IAAW,EAAE,eAAe,EAAS,IAAI,CAAC;GAC9C,GAAI,GAAa,KAAK,EAAE,cAAc,EAAY,GAAG,IAAI,CAAC;GAC1D,GAAI,GAAa,KAAK,EAAE,gBAAgB,OAAO,IAAI,CAAC;EACtD,EACF,EAAE,GAEI,IAAa,IACf,EAAc,SAAS,UAAU,IAC/B,IACA,GAAG,EAAc,uBACnB,uBAEE,IAAW,IAAI,EAAS,EAC5B,KAAK,EACP,CAAC;EAED,OAAO,IAAI,EAAa;GACtB,MAAM,EAAK;IAAC;IAAW;IAAU;GAAQ,CAAC;GAC1C,OAAO,IAAI,EAAc;GACzB,gBAAgB;IACd,YAAY;KAAE,aAAa;KAAqB,aAAa;IAAM;IACnE,OAAO,EAAE,aAAa,MAAM;IAC5B,QAAQ,EAAE,aAAa,MAAM;GAC/B;EACF,CAAC;CACH,GAAG;EACD;EACA;EACA;EACA,GAAa;EACb;EACA;EACA;CACF,CAAC,GAEK,IAAuC;EAC3C;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,GAEM,IAAe,CAAC,CAAC,GACjB,IACJ,kBAAC,EAAkB,UAAnB;EAA4B,OAAO;EAChC;CACyB,CAAA;CAK9B,OAAO,IACL,IAEA,kBAAC,GAAD;EAAgB,QAAQ;EACtB,UAAA,kBAAC,GAAD,EAAA,UAAe,EAAsB,CAAA;CACvB,CAAA;AAEpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"timecampusStore.js","names":[],"sources":["../../../src/timecampus/store/timecampusStore.ts"],"sourcesContent":["/**\n * TimeCampus Zustand Store\n * UI state management for the TimeCampus microfrontend.\n *\n * NOTE ON THE TIMER: the backend is the single source of truth for whether a\n * timer is running (a running TimeEntry surfaced by `runningTimers`). This\n * store only holds a lightweight *display* mirror of that running timer so the\n * on-screen stopwatch can tick every second without re-querying the server.\n * Pages sync it from the backend via `syncTimerFromServer` and advance the\n * live seconds via `tickTimer`. `startTimer`/`stopTimer` here only update the\n * local display mirror — persistence is done by the Start/Stop timer\n * mutations in the pages, not by this store.\n * @module timecampus\n */\n\nimport { create } from \"zustand\";\nimport { devtools, persist } from \"zustand/middleware\";\nimport { createProfileScopedStorage } from \"@burdenoff/fe-libs/shared/utils\";\n\nexport interface TimeCampusActiveTimer {\n isRunning: boolean;\n seconds: number;\n /** Backend TimeEntry id of the running timer, when synced from the server. */\n timeEntryId?: string;\n projectId?: string;\n taskId?: string;\n description?: string;\n}\n\ninterface TimeCampusStore {\n // View\n viewMode: \"grid\" | \"list\" | \"table\";\n setViewMode: (mode: \"grid\" | \"list\" | \"table\") => void;\n\n // Active section\n activeModule: string;\n setActiveModule: (module: string) => void;\n\n // Search\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n\n // Selection\n selectedItems: string[];\n toggleSelection: (id: string) => void;\n clearSelection: () => void;\n\n // Timer (display mirror of the backend running timer)\n activeTimer: TimeCampusActiveTimer | null;\n /** Optimistically show a running timer in the UI (display only). */\n startTimer: (config?: {\n projectId?: string;\n taskId?: string;\n description?: string;\n }) => void;\n /** Clear the local display timer (display only). */\n stopTimer: () => void;\n /** Advance the live seconds counter by one (called by a page-owned ticker). */\n tickTimer: () => void;\n /**\n * Reconcile the display timer with the backend running timer. Pass the\n * running timer (with its elapsed seconds) to make it authoritative, or\n * `null` to clear the display when nothing is running server-side.\n */\n syncTimerFromServer: (\n timer: {\n timeEntryId: string;\n elapsedSeconds: number;\n projectId?: string;\n taskId?: string;\n description?: string;\n } | null,\n ) => void;\n}\n\nexport const useTimeCampusStore = create<TimeCampusStore>()(\n devtools(\n persist(\n (set) => ({\n viewMode: \"grid\",\n setViewMode: (mode) => set({ viewMode: mode }),\n\n activeModule: \"dashboard\",\n setActiveModule: (module) => set({ activeModule: module }),\n\n searchQuery: \"\",\n setSearchQuery: (query) => set({ searchQuery: query }),\n\n selectedItems: [],\n toggleSelection: (id) =>\n set((state) => ({\n selectedItems: state.selectedItems.includes(id)\n ? state.selectedItems.filter((i) => i !== id)\n : [...state.selectedItems, id],\n })),\n clearSelection: () => set({ selectedItems: [] }),\n\n activeTimer: null,\n startTimer: (config) =>\n set({\n activeTimer: { isRunning: true, seconds: 0, ...config },\n }),\n stopTimer: () => set({ activeTimer: null }),\n tickTimer: () =>\n set((state) => ({\n activeTimer: state.activeTimer\n ? { ...state.activeTimer, seconds: state.activeTimer.seconds + 1 }\n : null,\n })),\n syncTimerFromServer: (timer) =>\n set(() => ({\n activeTimer: timer\n ? {\n isRunning: true,\n seconds: timer.elapsedSeconds,\n timeEntryId: timer.timeEntryId,\n projectId: timer.projectId,\n taskId: timer.taskId,\n description: timer.description,\n }\n : null,\n })),\n }),\n {\n name: \"timecampus-store\",\n storage: createProfileScopedStorage(),\n // The timer is a live mirror of server state; never rehydrate a stale\n // \"running\" timer from disk — it is re-synced from the backend on load.\n partialize: (state) => ({\n viewMode: state.viewMode,\n activeModule: state.activeModule,\n }),\n },\n ),\n { name: \"timecampus-store\" },\n ),\n);\n"],"mappings":";;;;AA2EA,IAAa,IAAqB,GAAyB,CACzD,EACE,GACG,OAAS;CACR,UAAU;CACV,cAAc,MAAS,EAAI,EAAE,UAAU,GAAM,CAAC;CAE9C,cAAc;CACd,kBAAkB,MAAW,EAAI,EAAE,cAAc,GAAQ,CAAC;CAE1D,aAAa;CACb,iBAAiB,MAAU,EAAI,EAAE,aAAa,GAAO,CAAC;CAEtD,eAAe,EAAE;CACjB,kBAAkB,MAChB,GAAK,OAAW,EACd,eAAe,EAAM,cAAc,SAAS,EAAG,GAC3C,EAAM,cAAc,QAAQ,MAAM,MAAM,EAAG,GAC3C,CAAC,GAAG,EAAM,eAAe,EAAG,EACjC,EAAE;CACL,sBAAsB,EAAI,EAAE,eAAe,EAAE,EAAE,CAAC;CAEhD,aAAa;CACb,aAAa,MACX,EAAI,EACF,aAAa;EAAE,WAAW;EAAM,SAAS;EAAG,GAAG;EAAQ,EACxD,CAAC;CACJ,iBAAiB,EAAI,EAAE,aAAa,MAAM,CAAC;CAC3C,iBACE,GAAK,OAAW,EACd,aAAa,EAAM,cACf;EAAE,GAAG,EAAM;EAAa,SAAS,EAAM,YAAY,UAAU;EAAG,GAChE,MACL,EAAE;CACL,sBAAsB,MACpB,SAAW,EACT,aAAa,IACT;EACE,WAAW;EACX,SAAS,EAAM;EACf,aAAa,EAAM;EACnB,WAAW,EAAM;EACjB,QAAQ,EAAM;EACd,aAAa,EAAM;EACpB,GACD,MACL,EAAE;CACN,GACD;CACE,MAAM;CACN,SAAS,GAA4B;CAGrC,aAAa,OAAW;EACtB,UAAU,EAAM;EAChB,cAAc,EAAM;EACrB;CACF,CACF,EACD,EAAE,MAAM,oBAAoB,CAC7B,CACF"}
1
+ {"version":3,"file":"timecampusStore.js","names":[],"sources":["../../../src/timecampus/store/timecampusStore.ts"],"sourcesContent":["/**\n * TimeCampus Zustand Store\n * UI state management for the TimeCampus microfrontend.\n *\n * NOTE ON THE TIMER: the backend is the single source of truth for whether a\n * timer is running (a running TimeEntry surfaced by `runningTimers`). This\n * store only holds a lightweight *display* mirror of that running timer so the\n * on-screen stopwatch can tick every second without re-querying the server.\n * Pages sync it from the backend via `syncTimerFromServer` and advance the\n * live seconds via `tickTimer`. `startTimer`/`stopTimer` here only update the\n * local display mirror — persistence is done by the Start/Stop timer\n * mutations in the pages, not by this store.\n * @module timecampus\n */\n\nimport { create } from \"zustand\";\nimport { devtools, persist } from \"zustand/middleware\";\nimport { createProfileScopedStorage } from \"@burdenoff/fe-libs/shared/utils\";\n\nexport interface TimeCampusActiveTimer {\n isRunning: boolean;\n seconds: number;\n /** Backend TimeEntry id of the running timer, when synced from the server. */\n timeEntryId?: string;\n projectId?: string;\n taskId?: string;\n description?: string;\n}\n\ninterface TimeCampusStore {\n // View\n viewMode: \"grid\" | \"list\" | \"table\";\n setViewMode: (mode: \"grid\" | \"list\" | \"table\") => void;\n\n // Active section\n activeModule: string;\n setActiveModule: (module: string) => void;\n\n // Search\n searchQuery: string;\n setSearchQuery: (query: string) => void;\n\n // Selection\n selectedItems: string[];\n toggleSelection: (id: string) => void;\n clearSelection: () => void;\n\n // Timer (display mirror of the backend running timer)\n activeTimer: TimeCampusActiveTimer | null;\n /** Optimistically show a running timer in the UI (display only). */\n startTimer: (config?: {\n projectId?: string;\n taskId?: string;\n description?: string;\n }) => void;\n /** Clear the local display timer (display only). */\n stopTimer: () => void;\n /** Advance the live seconds counter by one (called by a page-owned ticker). */\n tickTimer: () => void;\n /**\n * Reconcile the display timer with the backend running timer. Pass the\n * running timer (with its elapsed seconds) to make it authoritative, or\n * `null` to clear the display when nothing is running server-side.\n */\n syncTimerFromServer: (\n timer: {\n timeEntryId: string;\n elapsedSeconds: number;\n projectId?: string;\n taskId?: string;\n description?: string;\n } | null,\n ) => void;\n}\n\nexport const useTimeCampusStore = create<TimeCampusStore>()(\n devtools(\n persist(\n (set) => ({\n viewMode: \"grid\",\n setViewMode: (mode) => set({ viewMode: mode }),\n\n activeModule: \"dashboard\",\n setActiveModule: (module) => set({ activeModule: module }),\n\n searchQuery: \"\",\n setSearchQuery: (query) => set({ searchQuery: query }),\n\n selectedItems: [],\n toggleSelection: (id) =>\n set((state) => ({\n selectedItems: state.selectedItems.includes(id)\n ? state.selectedItems.filter((i) => i !== id)\n : [...state.selectedItems, id],\n })),\n clearSelection: () => set({ selectedItems: [] }),\n\n activeTimer: null,\n startTimer: (config) =>\n set({\n activeTimer: { isRunning: true, seconds: 0, ...config },\n }),\n stopTimer: () => set({ activeTimer: null }),\n tickTimer: () =>\n set((state) => ({\n activeTimer: state.activeTimer\n ? { ...state.activeTimer, seconds: state.activeTimer.seconds + 1 }\n : null,\n })),\n syncTimerFromServer: (timer) =>\n set(() => ({\n activeTimer: timer\n ? {\n isRunning: true,\n seconds: timer.elapsedSeconds,\n timeEntryId: timer.timeEntryId,\n projectId: timer.projectId,\n taskId: timer.taskId,\n description: timer.description,\n }\n : null,\n })),\n }),\n {\n name: \"timecampus-store\",\n storage: createProfileScopedStorage(),\n // The timer is a live mirror of server state; never rehydrate a stale\n // \"running\" timer from disk — it is re-synced from the backend on load.\n partialize: (state) => ({\n viewMode: state.viewMode,\n activeModule: state.activeModule,\n }),\n },\n ),\n { name: \"timecampus-store\" },\n ),\n);\n"],"mappings":";;;;AA2EA,IAAa,IAAqB,EAAwB,CAAC,CACzD,EACE,GACG,OAAS;CACR,UAAU;CACV,cAAc,MAAS,EAAI,EAAE,UAAU,EAAK,CAAC;CAE7C,cAAc;CACd,kBAAkB,MAAW,EAAI,EAAE,cAAc,EAAO,CAAC;CAEzD,aAAa;CACb,iBAAiB,MAAU,EAAI,EAAE,aAAa,EAAM,CAAC;CAErD,eAAe,CAAC;CAChB,kBAAkB,MAChB,GAAK,OAAW,EACd,eAAe,EAAM,cAAc,SAAS,CAAE,IAC1C,EAAM,cAAc,QAAQ,MAAM,MAAM,CAAE,IAC1C,CAAC,GAAG,EAAM,eAAe,CAAE,EACjC,EAAE;CACJ,sBAAsB,EAAI,EAAE,eAAe,CAAC,EAAE,CAAC;CAE/C,aAAa;CACb,aAAa,MACX,EAAI,EACF,aAAa;EAAE,WAAW;EAAM,SAAS;EAAG,GAAG;CAAO,EACxD,CAAC;CACH,iBAAiB,EAAI,EAAE,aAAa,KAAK,CAAC;CAC1C,iBACE,GAAK,OAAW,EACd,aAAa,EAAM,cACf;EAAE,GAAG,EAAM;EAAa,SAAS,EAAM,YAAY,UAAU;CAAE,IAC/D,KACN,EAAE;CACJ,sBAAsB,MACpB,SAAW,EACT,aAAa,IACT;EACE,WAAW;EACX,SAAS,EAAM;EACf,aAAa,EAAM;EACnB,WAAW,EAAM;EACjB,QAAQ,EAAM;EACd,aAAa,EAAM;CACrB,IACA,KACN,EAAE;AACN,IACA;CACE,MAAM;CACN,SAAS,EAA2B;CAGpC,aAAa,OAAW;EACtB,UAAU,EAAM;EAChB,cAAc,EAAM;CACtB;AACF,CACF,GACA,EAAE,MAAM,mBAAmB,CAC7B,CACF"}
@@ -1,5 +1,4 @@
1
1
  import { ReactNode } from 'react';
2
-
3
2
  export interface NavItem {
4
3
  id: string;
5
4
  label: string;
@@ -48,6 +47,10 @@ export interface TimeCampusRootProps {
48
47
  registerFooterItems?: (items: FooterItem | FooterItem[]) => () => void;
49
48
  onAuthError?: () => void;
50
49
  }
50
+ export interface AdminRootProps extends TimeCampusRootProps {
51
+ /** Workspace-scoped token supplied by for workspace gateway calls. */
52
+ workspaceToken?: string;
53
+ }
51
54
  export type UserRole = "admin" | "manager" | "user" | "viewer";
52
55
  export interface User {
53
56
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/timecampus/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACtC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,IAAI,CAAC;IACT,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,KAAK,MAAM,IAAI,CAAC;IAC9D,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,EAAE,KAAK,MAAM,IAAI,CAAC;IACvE,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;CAC1B;AAMD,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE/D,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;CAChB;AAMD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnD,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,MAAM,CAAC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,YAAY,CAAC;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;CACxC;AAMD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EACA,YAAY,GACZ,MAAM,GACN,SAAS,GACT,QAAQ,GACR,UAAU,GACV,eAAe,GACf,UAAU,GACV,OAAO,CAAC;IACZ,MAAM,EAAE,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,WAAW,CAAC;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,WAAW,GAAG,UAAU,GAAG,UAAU,CAAC;IAC5C,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EACN,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC1E,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAC;IACjE,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAMD,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,CAAC;IAC7C,WAAW,EAAE,KAAK,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;CACrC;AAMD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EACJ,YAAY,GACZ,SAAS,GACT,aAAa,GACb,eAAe,GACf,aAAa,GACb,QAAQ,GACR,OAAO,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAMD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,qBAAqB,EAAE,MAAM,CAAC;QAC9B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EACP,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,QAAQ,CAAC;IACpD,KAAK,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxD,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAClE,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;CAC9C;AAMD,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,kBAAkB,EAAE,CAAC;IACpC,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAC/C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EACF,eAAe,GAAG,aAAa,GAAG,YAAY,GAAG,UAAU,GAAG,WAAW,CAAC;IAC5E,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IACrD,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5D;AAMD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,oBAAoB,CAAC;IACnE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EACJ,QAAQ,GACR,OAAO,GACP,UAAU,GACV,UAAU,GACV,WAAW,GACX,eAAe,GACf,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IACvE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EACX,aAAa,GAAG,YAAY,GAAG,MAAM,GAAG,eAAe,GAAG,OAAO,CAAC;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAC1C,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;IAC3C,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAMD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;IAC5E,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;IACxE,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;IAClD,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAC3D,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;CACf;AAMD,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EACJ,cAAc,GACd,eAAe,GACf,oBAAoB,GACpB,WAAW,GACX,eAAe,GACf,YAAY,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,GAAG,WAAW,GAAG,kBAAkB,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAMD,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAMD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/timecampus/types/index.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { ClassValue } from 'clsx';
2
-
3
2
  export type BadgeVariant = "success" | "warning" | "error" | "info" | "default" | "muted";
4
3
  export declare function cn(...inputs: ClassValue[]): string;
5
4
  export declare function formatDuration(seconds: number): string;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","names":[],"sources":["../../../src/timecampus/utils/helpers.ts"],"sourcesContent":["/**\n * TimeCampus Utility Helpers\n * Common formatting, styling, and utility functions.\n * @module timecampus\n */\n\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport type BadgeVariant =\n \"success\" | \"warning\" | \"error\" | \"info\" | \"default\" | \"muted\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function formatDuration(seconds: number): string {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (h > 0) return `${h}h ${m}m ${s}s`;\n if (m > 0) return `${m}m ${s}s`;\n return `${s}s`;\n}\n\nexport function formatHours(hours: number): string {\n const h = Math.floor(hours);\n const m = Math.round((hours - h) * 60);\n return `${h}h ${m}m`;\n}\n\nexport function formatTimerDuration(seconds: number): string {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n return `${String(h).padStart(2, \"0\")}:${String(m).padStart(2, \"0\")}:${String(s).padStart(2, \"0\")}`;\n}\n\nexport function formatCurrency(amount: number, currency = \"USD\"): string {\n return new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency }).format(\n amount,\n );\n}\n\nexport function formatNumber(num: number): string {\n return new Intl.NumberFormat(\"en-US\").format(num);\n}\n\nexport function formatDate(date: string | Date): string {\n return new Date(date).toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n}\n\nexport function formatTime(date: string | Date): string {\n return new Date(date).toLocaleTimeString(\"en-US\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n}\n\nexport function formatRelativeTime(date: string | Date): string {\n const now = new Date();\n const d = new Date(date);\n const diffMs = now.getTime() - d.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n if (diffMins < 1) return \"Just now\";\n if (diffMins < 60) return `${diffMins}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays < 7) return `${diffDays}d ago`;\n return formatDate(date);\n}\n\nexport function getInitials(name: string): string {\n return name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n}\n\nexport function truncateText(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return text.slice(0, maxLength) + \"...\";\n}\n\nexport function generateId(): string {\n return Math.random().toString(36).substring(2) + Date.now().toString(36);\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function getStatusColor(status: string): BadgeVariant {\n const colors: Record<string, BadgeVariant> = {\n active: \"success\",\n completed: \"info\",\n \"in-progress\": \"warning\",\n pending: \"warning\",\n archived: \"muted\",\n \"on-hold\": \"warning\",\n draft: \"muted\",\n approved: \"success\",\n rejected: \"error\",\n error: \"error\",\n running: \"success\",\n paused: \"warning\",\n cancelled: \"muted\",\n online: \"success\",\n away: \"warning\",\n busy: \"error\",\n offline: \"muted\",\n inactive: \"muted\",\n submitted: \"info\",\n reimbursed: \"success\",\n \"revision-requested\": \"warning\",\n flagged: \"error\",\n sent: \"info\",\n paid: \"success\",\n };\n return colors[status] || \"default\";\n}\n\nexport function getPriorityColor(priority: string): BadgeVariant {\n const colors: Record<string, BadgeVariant> = {\n low: \"info\",\n medium: \"warning\",\n high: \"warning\",\n urgent: \"error\",\n critical: \"error\",\n };\n return colors[priority] || \"default\";\n}\n"],"mappings":";;;AAYA,SAAgB,EAAG,GAAG,GAAsB;AAC1C,QAAO,EAAQ,EAAK,EAAO,CAAC;;AAG9B,SAAgB,EAAe,GAAyB;CACtD,IAAM,IAAI,KAAK,MAAM,IAAU,KAAK,EAC9B,IAAI,KAAK,MAAO,IAAU,OAAQ,GAAG,EACrC,IAAI,IAAU;AAGpB,QAFI,IAAI,IAAU,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAC/B,IAAI,IAAU,GAAG,EAAE,IAAI,EAAE,KACtB,GAAG,EAAE;;AAGd,SAAgB,EAAY,GAAuB;CACjD,IAAM,IAAI,KAAK,MAAM,EAAM;AAE3B,QAAO,GAAG,EAAE,IADF,KAAK,OAAO,IAAQ,KAAK,GAAG,CACpB;;AAGpB,SAAgB,EAAoB,GAAyB;CAC3D,IAAM,IAAI,KAAK,MAAM,IAAU,KAAK,EAC9B,IAAI,KAAK,MAAO,IAAU,OAAQ,GAAG,EACrC,IAAI,IAAU;AACpB,QAAO,GAAG,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,SAAS,GAAG,IAAI;;AAGlG,SAAgB,EAAe,GAAgB,IAAW,OAAe;AACvE,QAAO,IAAI,KAAK,aAAa,SAAS;EAAE,OAAO;EAAY;EAAU,CAAC,CAAC,OACrE,EACD;;AAGH,SAAgB,EAAa,GAAqB;AAChD,QAAO,IAAI,KAAK,aAAa,QAAQ,CAAC,OAAO,EAAI;;AAGnD,SAAgB,EAAW,GAA6B;AACtD,QAAO,IAAI,KAAK,EAAK,CAAC,mBAAmB,SAAS;EAChD,MAAM;EACN,OAAO;EACP,KAAK;EACN,CAAC;;AAGJ,SAAgB,EAAW,GAA6B;AACtD,QAAO,IAAI,KAAK,EAAK,CAAC,mBAAmB,SAAS;EAChD,MAAM;EACN,QAAQ;EACT,CAAC;;AAGJ,SAAgB,EAAmB,GAA6B;CAC9D,IAAM,oBAAM,IAAI,MAAM,EAChB,IAAI,IAAI,KAAK,EAAK,EAClB,IAAS,EAAI,SAAS,GAAG,EAAE,SAAS,EACpC,IAAW,KAAK,MAAM,IAAS,IAAM,EACrC,IAAY,KAAK,MAAM,IAAS,KAAQ,EACxC,IAAW,KAAK,MAAM,IAAS,MAAS;AAK9C,QAJI,IAAW,IAAU,aACrB,IAAW,KAAW,GAAG,EAAS,SAClC,IAAY,KAAW,GAAG,EAAU,SACpC,IAAW,IAAU,GAAG,EAAS,SAC9B,EAAW,EAAK;;AAGzB,SAAgB,EAAY,GAAsB;AAChD,QAAO,EACJ,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,GAAG,CAChB,KAAK,GAAG,CACR,aAAa,CACb,MAAM,GAAG,EAAE;;AAgBhB,SAAgB,EAAe,GAA8B;AA2B3D,QA1B6C;EAC3C,QAAQ;EACR,WAAW;EACX,eAAe;EACf,SAAS;EACT,UAAU;EACV,WAAW;EACX,OAAO;EACP,UAAU;EACV,UAAU;EACV,OAAO;EACP,SAAS;EACT,QAAQ;EACR,WAAW;EACX,QAAQ;EACR,MAAM;EACN,MAAM;EACN,SAAS;EACT,UAAU;EACV,WAAW;EACX,YAAY;EACZ,sBAAsB;EACtB,SAAS;EACT,MAAM;EACN,MAAM;EACP,CACa,MAAW;;AAG3B,SAAgB,EAAiB,GAAgC;AAQ/D,QAP6C;EAC3C,KAAK;EACL,QAAQ;EACR,MAAM;EACN,QAAQ;EACR,UAAU;EACX,CACa,MAAa"}
1
+ {"version":3,"file":"helpers.js","names":[],"sources":["../../../src/timecampus/utils/helpers.ts"],"sourcesContent":["/**\n * TimeCampus Utility Helpers\n * Common formatting, styling, and utility functions.\n * @module timecampus\n */\n\nimport { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport type BadgeVariant =\n \"success\" | \"warning\" | \"error\" | \"info\" | \"default\" | \"muted\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n\nexport function formatDuration(seconds: number): string {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n if (h > 0) return `${h}h ${m}m ${s}s`;\n if (m > 0) return `${m}m ${s}s`;\n return `${s}s`;\n}\n\nexport function formatHours(hours: number): string {\n const h = Math.floor(hours);\n const m = Math.round((hours - h) * 60);\n return `${h}h ${m}m`;\n}\n\nexport function formatTimerDuration(seconds: number): string {\n const h = Math.floor(seconds / 3600);\n const m = Math.floor((seconds % 3600) / 60);\n const s = seconds % 60;\n return `${String(h).padStart(2, \"0\")}:${String(m).padStart(2, \"0\")}:${String(s).padStart(2, \"0\")}`;\n}\n\nexport function formatCurrency(amount: number, currency = \"USD\"): string {\n return new Intl.NumberFormat(\"en-US\", { style: \"currency\", currency }).format(\n amount,\n );\n}\n\nexport function formatNumber(num: number): string {\n return new Intl.NumberFormat(\"en-US\").format(num);\n}\n\nexport function formatDate(date: string | Date): string {\n return new Date(date).toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n });\n}\n\nexport function formatTime(date: string | Date): string {\n return new Date(date).toLocaleTimeString(\"en-US\", {\n hour: \"2-digit\",\n minute: \"2-digit\",\n });\n}\n\nexport function formatRelativeTime(date: string | Date): string {\n const now = new Date();\n const d = new Date(date);\n const diffMs = now.getTime() - d.getTime();\n const diffMins = Math.floor(diffMs / 60000);\n const diffHours = Math.floor(diffMs / 3600000);\n const diffDays = Math.floor(diffMs / 86400000);\n if (diffMins < 1) return \"Just now\";\n if (diffMins < 60) return `${diffMins}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays < 7) return `${diffDays}d ago`;\n return formatDate(date);\n}\n\nexport function getInitials(name: string): string {\n return name\n .split(\" \")\n .map((n) => n[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n}\n\nexport function truncateText(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return text.slice(0, maxLength) + \"...\";\n}\n\nexport function generateId(): string {\n return Math.random().toString(36).substring(2) + Date.now().toString(36);\n}\n\nexport function sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nexport function getStatusColor(status: string): BadgeVariant {\n const colors: Record<string, BadgeVariant> = {\n active: \"success\",\n completed: \"info\",\n \"in-progress\": \"warning\",\n pending: \"warning\",\n archived: \"muted\",\n \"on-hold\": \"warning\",\n draft: \"muted\",\n approved: \"success\",\n rejected: \"error\",\n error: \"error\",\n running: \"success\",\n paused: \"warning\",\n cancelled: \"muted\",\n online: \"success\",\n away: \"warning\",\n busy: \"error\",\n offline: \"muted\",\n inactive: \"muted\",\n submitted: \"info\",\n reimbursed: \"success\",\n \"revision-requested\": \"warning\",\n flagged: \"error\",\n sent: \"info\",\n paid: \"success\",\n };\n return colors[status] || \"default\";\n}\n\nexport function getPriorityColor(priority: string): BadgeVariant {\n const colors: Record<string, BadgeVariant> = {\n low: \"info\",\n medium: \"warning\",\n high: \"warning\",\n urgent: \"error\",\n critical: \"error\",\n };\n return colors[priority] || \"default\";\n}\n"],"mappings":";;;AAYA,SAAgB,EAAG,GAAG,GAAsB;CAC1C,OAAO,EAAQ,EAAK,CAAM,CAAC;AAC7B;AAEA,SAAgB,EAAe,GAAyB;CACtD,IAAM,IAAI,KAAK,MAAM,IAAU,IAAI,GAC7B,IAAI,KAAK,MAAO,IAAU,OAAQ,EAAE,GACpC,IAAI,IAAU;CAGpB,OAFI,IAAI,IAAU,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAC/B,IAAI,IAAU,GAAG,EAAE,IAAI,EAAE,KACtB,GAAG,EAAE;AACd;AAEA,SAAgB,EAAY,GAAuB;CACjD,IAAM,IAAI,KAAK,MAAM,CAAK;CAE1B,OAAO,GAAG,EAAE,IADF,KAAK,OAAO,IAAQ,KAAK,EACnB,EAAE;AACpB;AAEA,SAAgB,EAAoB,GAAyB;CAC3D,IAAM,IAAI,KAAK,MAAM,IAAU,IAAI,GAC7B,IAAI,KAAK,MAAO,IAAU,OAAQ,EAAE,GACpC,IAAI,IAAU;CACpB,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG;AACjG;AAEA,SAAgB,EAAe,GAAgB,IAAW,OAAe;CACvE,OAAO,IAAI,KAAK,aAAa,SAAS;EAAE,OAAO;EAAY;CAAS,CAAC,CAAC,CAAC,OACrE,CACF;AACF;AAEA,SAAgB,EAAa,GAAqB;CAChD,OAAO,IAAI,KAAK,aAAa,OAAO,CAAC,CAAC,OAAO,CAAG;AAClD;AAEA,SAAgB,EAAW,GAA6B;CACtD,OAAO,IAAI,KAAK,CAAI,CAAC,CAAC,mBAAmB,SAAS;EAChD,MAAM;EACN,OAAO;EACP,KAAK;CACP,CAAC;AACH;AAEA,SAAgB,EAAW,GAA6B;CACtD,OAAO,IAAI,KAAK,CAAI,CAAC,CAAC,mBAAmB,SAAS;EAChD,MAAM;EACN,QAAQ;CACV,CAAC;AACH;AAEA,SAAgB,EAAmB,GAA6B;CAC9D,IAAM,oBAAM,IAAI,KAAK,GACf,IAAI,IAAI,KAAK,CAAI,GACjB,IAAS,EAAI,QAAQ,IAAI,EAAE,QAAQ,GACnC,IAAW,KAAK,MAAM,IAAS,GAAK,GACpC,IAAY,KAAK,MAAM,IAAS,IAAO,GACvC,IAAW,KAAK,MAAM,IAAS,KAAQ;CAK7C,OAJI,IAAW,IAAU,aACrB,IAAW,KAAW,GAAG,EAAS,SAClC,IAAY,KAAW,GAAG,EAAU,SACpC,IAAW,IAAU,GAAG,EAAS,SAC9B,EAAW,CAAI;AACxB;AAEA,SAAgB,EAAY,GAAsB;CAChD,OAAO,EACJ,MAAM,GAAG,CAAC,CACV,KAAK,MAAM,EAAE,EAAE,CAAC,CAChB,KAAK,EAAE,CAAC,CACR,YAAY,CAAC,CACb,MAAM,GAAG,CAAC;AACf;AAeA,SAAgB,EAAe,GAA8B;CA2B3D,OAAO;EAzBL,QAAQ;EACR,WAAW;EACX,eAAe;EACf,SAAS;EACT,UAAU;EACV,WAAW;EACX,OAAO;EACP,UAAU;EACV,UAAU;EACV,OAAO;EACP,SAAS;EACT,QAAQ;EACR,WAAW;EACX,QAAQ;EACR,MAAM;EACN,MAAM;EACN,SAAS;EACT,UAAU;EACV,WAAW;EACX,YAAY;EACZ,sBAAsB;EACtB,SAAS;EACT,MAAM;EACN,MAAM;CAED,EAAO,MAAW;AAC3B;AAEA,SAAgB,EAAiB,GAAgC;CAQ/D,OAAO;EANL,KAAK;EACL,QAAQ;EACR,MAAM;EACN,QAAQ;EACR,UAAU;CAEL,EAAO,MAAa;AAC7B"}
@@ -1,5 +1,4 @@
1
1
  import { AssistantUsecaseId } from '../config/assistantUsecases';
2
-
3
2
  export type AssistantMode = AssistantUsecaseId;
4
3
  export type AssistantSandboxStatus = "none" | "provisioning" | "running" | "stopping" | "error";
5
4
  export type AssistantConversationStatus = "idle" | "provisioning" | "connecting" | "streaming" | "complete" | "error";
@@ -57,6 +57,6 @@ function n(e, n) {
57
57
  };
58
58
  }
59
59
  //#endregion
60
- export { e as gatherPageContext };
60
+ export { e as gatherPageContext, n as resolveTimeCampusConversationContext };
61
61
 
62
62
  //# sourceMappingURL=pageContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pageContext.js","names":[],"sources":["../../src/utils/pageContext.ts"],"sourcesContent":["/**\n * Page context gathering — captures the user's current browser context\n * to be sent alongside every assistant prompt for better AI awareness.\n *\n * Only emit keys the agent's ALLOWED_CONTEXT_KEYS allow-list actually\n * forwards (`~/products/wspace/sandbox/ai-assistant/src/context-loader.ts`):\n * currentUrl, currentPage, entityType, entityId, entityName, pageTitle,\n * pageType, activeTab, activeTool, selectedText, workspaceId, workspaceName,\n * projectId, projectName (+ legacy per-product back-compat keys). `platform`\n * and `version` are silently dropped server-side (the agent already knows\n * the product from `AI_ASSISTANT_PRODUCT` at boot), and `userAgent` is sent\n * over the wire but dropped agent-side — a needless fingerprinting leak for\n * a privacy-first product. None of the five are emitted here.\n */\n\ninterface ConversationContextShape {\n entityType?: string;\n entityId?: string;\n activeTab?: string;\n projectId?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PageContext {\n // `currentUrl` (NOT `activeUrl`) — must match the agent's allowed-context-key\n // contract, otherwise the agent filters it out.\n currentUrl: string;\n currentPage: string;\n // The entity the user is currently looking at, resolved from the route. Lets\n // the assistant act on \"this / current / here\" without asking for an id.\n entityType?: string;\n entityId?: string;\n // Surfaced separately from `metadata` so the allow-listed `activeTab` /\n // `projectId` keys actually reach the agent instead of being discarded.\n activeTab?: string;\n projectId?: string;\n}\n\nexport function gatherPageContext(): PageContext {\n const url = window.location.href;\n const pathSegments = window.location.pathname.split(\"/\").filter(Boolean);\n const currentPage = pathSegments.slice(0, 3).join(\"/\") || \"home\";\n const entity = resolveTimeCampusConversationContext(\n window.location.pathname,\n window.location.search,\n );\n\n return {\n currentUrl: url,\n currentPage,\n entityType: entity.entityType,\n entityId: entity.entityId,\n activeTab: entity.activeTab,\n projectId: entity.projectId,\n };\n}\n\nfunction matchPath(pattern: RegExp, pathname: string): RegExpMatchArray | null {\n return pathname.match(pattern);\n}\n\nexport function resolveTimeCampusConversationContext(\n pathname: string,\n search: string,\n): ConversationContextShape {\n const params = new URLSearchParams(search);\n\n const directMatches: Array<[RegExp, string]> = [\n [/^\\/?timecampus\\/time\\/projects\\/([^/]+)$/, \"TIMECAMPUS_PROJECT\"],\n [/^\\/?timecampus\\/time\\/tasks\\/([^/]+)$/, \"TIMECAMPUS_TASK\"],\n [/^\\/?timecampus\\/meetings\\/([^/]+)$/, \"TIMECAMPUS_MEETING\"],\n [\n /^\\/?timecampus\\/pomodoro\\/sessions\\/([^/]+)$/,\n \"TIMECAMPUS_POMODORO_SESSION\",\n ],\n [/^\\/?timecampus\\/lifetime\\/goals\\/([^/]+)$/, \"TIMECAMPUS_LIFE_GOAL\"],\n [\n /^\\/?timecampus\\/resource-planning\\/plans\\/([^/]+)$/,\n \"TIMECAMPUS_RESOURCE_PLAN\",\n ],\n ];\n\n for (const [pattern, entityType] of directMatches) {\n const match = matchPath(pattern, pathname);\n if (match) {\n return {\n entityType,\n entityId: match[1],\n metadata: { routePattern: pattern.source },\n };\n }\n }\n\n // Page-level matches: these TimeCampus modules are flat list/dashboard\n // pages with no per-entity detail route (confirmed against\n // TimeCampusRoutes.tsx), so there is no id to capture — but the assistant\n // still benefits from knowing which module the user is looking at, so it\n // can scope \"show me my expenses\" / \"approve this\" style prompts without\n // asking which module the user means.\n const pageLevelMatches: Array<[RegExp, string]> = [\n [/^\\/?timecampus\\/timeline\\/?$/, \"TIMECAMPUS_TIMELINE\"],\n [/^\\/?timecampus\\/time\\/entries\\/?$/, \"TIMECAMPUS_TIME_ENTRY\"],\n [/^\\/?timecampus\\/expense-tracking\\/?$/, \"TIMECAMPUS_EXPENSE\"],\n [/^\\/?timecampus\\/invoicing\\/?$/, \"TIMECAMPUS_INVOICING\"],\n [/^\\/?timecampus\\/time-approval\\/?$/, \"TIMECAMPUS_APPROVAL\"],\n [/^\\/?timecampus\\/client-portal\\/?$/, \"TIMECAMPUS_CLIENT_PORTAL\"],\n [/^\\/?timecampus\\/application-usage\\/?$/, \"TIMECAMPUS_APP_USAGE\"],\n ];\n\n for (const [pattern, entityType] of pageLevelMatches) {\n if (matchPath(pattern, pathname)) {\n return { entityType, metadata: { routePattern: pattern.source } };\n }\n }\n\n const activeTab =\n params.get(\"tab\") ??\n (() => {\n const segments = pathname.split(\"/\").filter(Boolean);\n return segments.length > 2 ? segments[segments.length - 1] : undefined;\n })();\n\n return {\n activeTab: activeTab ?? undefined,\n projectId: params.get(\"projectId\") ?? undefined,\n metadata: {\n ...(activeTab ? { activeTab } : {}),\n ...(params.get(\"projectId\")\n ? { projectId: params.get(\"projectId\") }\n : {}),\n ...(params.get(\"date\") ? { date: params.get(\"date\") } : {}),\n },\n };\n}\n"],"mappings":";AAsCA,SAAgB,IAAiC;CAC/C,IAAM,IAAM,OAAO,SAAS,MAEtB,IADe,OAAO,SAAS,SAAS,MAAM,IAAI,CAAC,OAAO,QAAQ,CACvC,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI,IAAI,QACpD,IAAS,EACb,OAAO,SAAS,UAChB,OAAO,SAAS,OACjB;AAED,QAAO;EACL,YAAY;EACZ;EACA,YAAY,EAAO;EACnB,UAAU,EAAO;EACjB,WAAW,EAAO;EAClB,WAAW,EAAO;EACnB;;AAGH,SAAS,EAAU,GAAiB,GAA2C;AAC7E,QAAO,EAAS,MAAM,EAAQ;;AAGhC,SAAgB,EACd,GACA,GAC0B;CAC1B,IAAM,IAAS,IAAI,gBAAgB,EAAO;AAiB1C,MAAK,IAAM,CAAC,GAAS,MAf0B;EAC7C,CAAC,4CAA4C,qBAAqB;EAClE,CAAC,yCAAyC,kBAAkB;EAC5D,CAAC,sCAAsC,qBAAqB;EAC5D,CACE,gDACA,8BACD;EACD,CAAC,6CAA6C,uBAAuB;EACrE,CACE,sDACA,2BACD;EACF,EAEkD;EACjD,IAAM,IAAQ,EAAU,GAAS,EAAS;AAC1C,MAAI,EACF,QAAO;GACL;GACA,UAAU,EAAM;GAChB,UAAU,EAAE,cAAc,EAAQ,QAAQ;GAC3C;;AAoBL,MAAK,IAAM,CAAC,GAAS,MAV6B;EAChD,CAAC,gCAAgC,sBAAsB;EACvD,CAAC,qCAAqC,wBAAwB;EAC9D,CAAC,wCAAwC,qBAAqB;EAC9D,CAAC,iCAAiC,uBAAuB;EACzD,CAAC,qCAAqC,sBAAsB;EAC5D,CAAC,qCAAqC,2BAA2B;EACjE,CAAC,yCAAyC,uBAAuB;EAClE,CAGC,KAAI,EAAU,GAAS,EAAS,CAC9B,QAAO;EAAE;EAAY,UAAU,EAAE,cAAc,EAAQ,QAAQ;EAAE;CAIrE,IAAM,IACJ,EAAO,IAAI,MAAM,WACV;EACL,IAAM,IAAW,EAAS,MAAM,IAAI,CAAC,OAAO,QAAQ;AACpD,SAAO,EAAS,SAAS,IAAI,EAAS,EAAS,SAAS,KAAK,KAAA;KAC3D;AAEN,QAAO;EACL,WAAW,KAAa,KAAA;EACxB,WAAW,EAAO,IAAI,YAAY,IAAI,KAAA;EACtC,UAAU;GACR,GAAI,IAAY,EAAE,cAAW,GAAG,EAAE;GAClC,GAAI,EAAO,IAAI,YAAY,GACvB,EAAE,WAAW,EAAO,IAAI,YAAY,EAAE,GACtC,EAAE;GACN,GAAI,EAAO,IAAI,OAAO,GAAG,EAAE,MAAM,EAAO,IAAI,OAAO,EAAE,GAAG,EAAE;GAC3D;EACF"}
1
+ {"version":3,"file":"pageContext.js","names":[],"sources":["../../src/utils/pageContext.ts"],"sourcesContent":["/**\n * Page context gathering — captures the user's current browser context\n * to be sent alongside every assistant prompt for better AI awareness.\n *\n * Only emit keys the agent's ALLOWED_CONTEXT_KEYS allow-list actually\n * forwards (`~/products/wspace/sandbox/ai-assistant/src/context-loader.ts`):\n * currentUrl, currentPage, entityType, entityId, entityName, pageTitle,\n * pageType, activeTab, activeTool, selectedText, workspaceId, workspaceName,\n * projectId, projectName (+ legacy per-product back-compat keys). `platform`\n * and `version` are silently dropped server-side (the agent already knows\n * the product from `AI_ASSISTANT_PRODUCT` at boot), and `userAgent` is sent\n * over the wire but dropped agent-side — a needless fingerprinting leak for\n * a privacy-first product. None of the five are emitted here.\n */\n\ninterface ConversationContextShape {\n entityType?: string;\n entityId?: string;\n activeTab?: string;\n projectId?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface PageContext {\n // `currentUrl` (NOT `activeUrl`) — must match the agent's allowed-context-key\n // contract, otherwise the agent filters it out.\n currentUrl: string;\n currentPage: string;\n // The entity the user is currently looking at, resolved from the route. Lets\n // the assistant act on \"this / current / here\" without asking for an id.\n entityType?: string;\n entityId?: string;\n // Surfaced separately from `metadata` so the allow-listed `activeTab` /\n // `projectId` keys actually reach the agent instead of being discarded.\n activeTab?: string;\n projectId?: string;\n}\n\nexport function gatherPageContext(): PageContext {\n const url = window.location.href;\n const pathSegments = window.location.pathname.split(\"/\").filter(Boolean);\n const currentPage = pathSegments.slice(0, 3).join(\"/\") || \"home\";\n const entity = resolveTimeCampusConversationContext(\n window.location.pathname,\n window.location.search,\n );\n\n return {\n currentUrl: url,\n currentPage,\n entityType: entity.entityType,\n entityId: entity.entityId,\n activeTab: entity.activeTab,\n projectId: entity.projectId,\n };\n}\n\nfunction matchPath(pattern: RegExp, pathname: string): RegExpMatchArray | null {\n return pathname.match(pattern);\n}\n\nexport function resolveTimeCampusConversationContext(\n pathname: string,\n search: string,\n): ConversationContextShape {\n const params = new URLSearchParams(search);\n\n const directMatches: Array<[RegExp, string]> = [\n [/^\\/?timecampus\\/time\\/projects\\/([^/]+)$/, \"TIMECAMPUS_PROJECT\"],\n [/^\\/?timecampus\\/time\\/tasks\\/([^/]+)$/, \"TIMECAMPUS_TASK\"],\n [/^\\/?timecampus\\/meetings\\/([^/]+)$/, \"TIMECAMPUS_MEETING\"],\n [\n /^\\/?timecampus\\/pomodoro\\/sessions\\/([^/]+)$/,\n \"TIMECAMPUS_POMODORO_SESSION\",\n ],\n [/^\\/?timecampus\\/lifetime\\/goals\\/([^/]+)$/, \"TIMECAMPUS_LIFE_GOAL\"],\n [\n /^\\/?timecampus\\/resource-planning\\/plans\\/([^/]+)$/,\n \"TIMECAMPUS_RESOURCE_PLAN\",\n ],\n ];\n\n for (const [pattern, entityType] of directMatches) {\n const match = matchPath(pattern, pathname);\n if (match) {\n return {\n entityType,\n entityId: match[1],\n metadata: { routePattern: pattern.source },\n };\n }\n }\n\n // Page-level matches: these TimeCampus modules are flat list/dashboard\n // pages with no per-entity detail route (confirmed against\n // TimeCampusRoutes.tsx), so there is no id to capture — but the assistant\n // still benefits from knowing which module the user is looking at, so it\n // can scope \"show me my expenses\" / \"approve this\" style prompts without\n // asking which module the user means.\n const pageLevelMatches: Array<[RegExp, string]> = [\n [/^\\/?timecampus\\/timeline\\/?$/, \"TIMECAMPUS_TIMELINE\"],\n [/^\\/?timecampus\\/time\\/entries\\/?$/, \"TIMECAMPUS_TIME_ENTRY\"],\n [/^\\/?timecampus\\/expense-tracking\\/?$/, \"TIMECAMPUS_EXPENSE\"],\n [/^\\/?timecampus\\/invoicing\\/?$/, \"TIMECAMPUS_INVOICING\"],\n [/^\\/?timecampus\\/time-approval\\/?$/, \"TIMECAMPUS_APPROVAL\"],\n [/^\\/?timecampus\\/client-portal\\/?$/, \"TIMECAMPUS_CLIENT_PORTAL\"],\n [/^\\/?timecampus\\/application-usage\\/?$/, \"TIMECAMPUS_APP_USAGE\"],\n ];\n\n for (const [pattern, entityType] of pageLevelMatches) {\n if (matchPath(pattern, pathname)) {\n return { entityType, metadata: { routePattern: pattern.source } };\n }\n }\n\n const activeTab =\n params.get(\"tab\") ??\n (() => {\n const segments = pathname.split(\"/\").filter(Boolean);\n return segments.length > 2 ? segments[segments.length - 1] : undefined;\n })();\n\n return {\n activeTab: activeTab ?? undefined,\n projectId: params.get(\"projectId\") ?? undefined,\n metadata: {\n ...(activeTab ? { activeTab } : {}),\n ...(params.get(\"projectId\")\n ? { projectId: params.get(\"projectId\") }\n : {}),\n ...(params.get(\"date\") ? { date: params.get(\"date\") } : {}),\n },\n };\n}\n"],"mappings":";AAsCA,SAAgB,IAAiC;CAC/C,IAAM,IAAM,OAAO,SAAS,MAEtB,IADe,OAAO,SAAS,SAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAC5C,CAAA,CAAa,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,QACpD,IAAS,EACb,OAAO,SAAS,UAChB,OAAO,SAAS,MAClB;CAEA,OAAO;EACL,YAAY;EACZ;EACA,YAAY,EAAO;EACnB,UAAU,EAAO;EACjB,WAAW,EAAO;EAClB,WAAW,EAAO;CACpB;AACF;AAEA,SAAS,EAAU,GAAiB,GAA2C;CAC7E,OAAO,EAAS,MAAM,CAAO;AAC/B;AAEA,SAAgB,EACd,GACA,GAC0B;CAC1B,IAAM,IAAS,IAAI,gBAAgB,CAAM;CAiBzC,KAAK,IAAM,CAAC,GAAS,MAAe;EAdlC,CAAC,4CAA4C,oBAAoB;EACjE,CAAC,yCAAyC,iBAAiB;EAC3D,CAAC,sCAAsC,oBAAoB;EAC3D,CACE,gDACA,6BACF;EACA,CAAC,6CAA6C,sBAAsB;EACpE,CACE,sDACA,0BACF;CAGkC,GAAe;EACjD,IAAM,IAAQ,EAAU,GAAS,CAAQ;EACzC,IAAI,GACF,OAAO;GACL;GACA,UAAU,EAAM;GAChB,UAAU,EAAE,cAAc,EAAQ,OAAO;EAC3C;CAEJ;CAkBA,KAAK,IAAM,CAAC,GAAS,MAAe;EATlC,CAAC,gCAAgC,qBAAqB;EACtD,CAAC,qCAAqC,uBAAuB;EAC7D,CAAC,wCAAwC,oBAAoB;EAC7D,CAAC,iCAAiC,sBAAsB;EACxD,CAAC,qCAAqC,qBAAqB;EAC3D,CAAC,qCAAqC,0BAA0B;EAChE,CAAC,yCAAyC,sBAAsB;CAG9B,GAClC,IAAI,EAAU,GAAS,CAAQ,GAC7B,OAAO;EAAE;EAAY,UAAU,EAAE,cAAc,EAAQ,OAAO;CAAE;CAIpE,IAAM,IACJ,EAAO,IAAI,KAAK,YACT;EACL,IAAM,IAAW,EAAS,MAAM,GAAG,CAAC,CAAC,OAAO,OAAO;EACnD,OAAO,EAAS,SAAS,IAAI,EAAS,EAAS,SAAS,KAAK,KAAA;CAC/D,EAAA,CAAG;CAEL,OAAO;EACL,WAAW,KAAa,KAAA;EACxB,WAAW,EAAO,IAAI,WAAW,KAAK,KAAA;EACtC,UAAU;GACR,GAAI,IAAY,EAAE,aAAU,IAAI,CAAC;GACjC,GAAI,EAAO,IAAI,WAAW,IACtB,EAAE,WAAW,EAAO,IAAI,WAAW,EAAE,IACrC,CAAC;GACL,GAAI,EAAO,IAAI,MAAM,IAAI,EAAE,MAAM,EAAO,IAAI,MAAM,EAAE,IAAI,CAAC;EAC3D;CACF;AACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/microfe-timecampus",
3
- "version": "2026.801.1",
3
+ "version": "2026.820.2",
4
4
  "description": "Burdenoff TimeCampus Microfrontend - AI-powered time management and productivity platform",
5
5
  "type": "module",
6
6
  "files": [
@@ -49,57 +49,58 @@
49
49
  "format:check": "prettier --check \"src/**/*.{ts,tsx}\""
50
50
  },
51
51
  "dependencies": {
52
- "@apollo/client": "^4.0.11",
52
+ "@apollo/client": "^4.2.12",
53
53
  "@burdenoff/fe-libs": "2026.801.1",
54
54
  "@dnd-kit/core": "^6.3.1",
55
55
  "clsx": "^2.1.1",
56
- "date-fns": "^4.1.0",
57
- "graphql": "^16.12.0",
56
+ "date-fns": "^4.4.0",
57
+ "graphql": "^16.14.2",
58
58
  "lucide-react": "^0.468.0",
59
- "react": "^19.0.0",
60
- "react-dom": "^19.0.0",
59
+ "react": "^19.2.8",
60
+ "react-dom": "^19.2.8",
61
61
  "react-router": "^8.3.0",
62
- "recharts": "^2.15.0",
63
- "tailwind-merge": "^3.4.0",
64
- "zustand": "^5.0.7"
62
+ "recharts": "^2.15.4",
63
+ "tailwind-merge": "^3.6.0",
64
+ "zustand": "^5.0.15"
65
65
  },
66
66
  "devDependencies": {
67
67
  "@eslint/js": "^10.0.1",
68
- "@graphql-codegen/add": "^5.0.0",
69
- "@graphql-codegen/cli": "^5.0.0",
70
- "@graphql-codegen/import-types-preset": "^3.0.0",
71
- "@graphql-codegen/schema-ast": "^4.0.0",
72
- "@graphql-codegen/typescript": "^4.0.0",
73
- "@graphql-codegen/typescript-operations": "^4.0.0",
74
- "@graphql-codegen/typescript-react-apollo": "^4.0.0",
75
- "@storybook/addon-essentials": "^8.6.0",
76
- "@storybook/addon-interactions": "^8.6.0",
77
- "@storybook/react": "^8.6.0",
78
- "@storybook/react-vite": "^8.6.0",
79
- "@storybook/test": "^8.6.0",
68
+ "ajv": "^8.20.0",
69
+ "@graphql-codegen/add": "^5.0.3",
70
+ "@graphql-codegen/cli": "^5.0.7",
71
+ "@graphql-codegen/import-types-preset": "^3.0.1",
72
+ "@graphql-codegen/schema-ast": "^4.1.0",
73
+ "@graphql-codegen/typescript": "^4.1.6",
74
+ "@graphql-codegen/typescript-operations": "^4.6.1",
75
+ "@graphql-codegen/typescript-react-apollo": "^4.4.2",
76
+ "@storybook/addon-essentials": "^8.6.14",
77
+ "@storybook/addon-interactions": "^8.6.14",
78
+ "@storybook/react": "^8.6.18",
79
+ "@storybook/react-vite": "^8.6.18",
80
+ "@storybook/test": "^8.6.15",
80
81
  "@storybook/test-runner": "0.22.0",
81
- "@tailwindcss/postcss": "^4.1.18",
82
- "@tailwindcss/vite": "^4.3.2",
83
- "@types/bun": "^1.3.9",
84
- "@types/react": "^19.0.2",
85
- "@types/react-dom": "^19.0.2",
86
- "@vitejs/plugin-react": "^4.3.4",
82
+ "@tailwindcss/postcss": "^4.3.3",
83
+ "@tailwindcss/vite": "^4.3.3",
84
+ "@types/bun": "^1.3.14",
85
+ "@types/react": "^19.2.18",
86
+ "@types/react-dom": "^19.2.4",
87
+ "@vitejs/plugin-react": "^4.7.0",
87
88
  "@vitest/coverage-v8": "3.2.7",
88
- "autoprefixer": "^10.4.20",
89
- "eslint": "^9.18.0",
89
+ "autoprefixer": "^10.5.4",
90
+ "eslint": "^9.39.5",
90
91
  "eslint-plugin-react": "^7.37.5",
91
- "eslint-plugin-react-hooks": "^7.0.1",
92
- "eslint-plugin-react-refresh": "^0.5.0",
93
- "lefthook": "^2.1.1",
94
- "postcss": "^8.4.49",
95
- "prettier": "^3.4.2",
96
- "rimraf": "^6.0.1",
97
- "storybook": "^8.6.0",
98
- "tailwindcss": "^4.0.0",
99
- "typescript": "^5.9.0",
100
- "typescript-eslint": "^8.56.0",
101
- "vite": "8.0.8",
102
- "vite-plugin-dts": "3.9.1",
92
+ "eslint-plugin-react-hooks": "^7.1.1",
93
+ "eslint-plugin-react-refresh": "^0.5.4",
94
+ "lefthook": "^2.1.10",
95
+ "postcss": "^8.5.26",
96
+ "prettier": "^3.9.6",
97
+ "rimraf": "^6.1.3",
98
+ "storybook": "^8.6.18",
99
+ "tailwindcss": "^4.3.3",
100
+ "typescript": "^5.9.3",
101
+ "typescript-eslint": "^8.67.0",
102
+ "vite": "^8.2.1",
103
+ "vite-plugin-dts": "^4.5.4",
103
104
  "vitest": "3.2.7"
104
105
  },
105
106
  "peerDependencies": {
@@ -109,23 +110,25 @@
109
110
  "zustand": "^5.0.0"
110
111
  },
111
112
  "publishConfig": {
112
- "access": "restricted"
113
+ "access": "public"
113
114
  },
114
115
  "overrides": {
115
- "lodash": ">=4.17.21",
116
- "lodash-es": ">=4.17.21",
117
- "dompurify": ">=3.3.4",
118
- "fast-xml-parser": ">=4.5.5",
119
- "@xmldom/xmldom": ">=0.8.12",
120
- "swiper": ">=12.1.2",
121
- "brace-expansion": ">=1.1.13",
122
- "follow-redirects": ">=1.15.12",
123
- "smol-toml": ">=1.6.1",
124
- "axios": ">=1.15.0",
125
- "flatted": ">=3.4.1",
126
- "yaml": ">=2.8.3",
127
- "picomatch": ">=2.3.2",
128
- "immutable": ">=3.8.3",
129
- "minimatch": ">=3.1.3"
116
+ "postcss": ">=8.5.26",
117
+ "nanoid": ">=3.3.18",
118
+ "js-yaml": ">=4.3.1 <5.0.0 || >=5.2.2",
119
+ "fast-uri": ">=3.1.5",
120
+ "esbuild": ">=0.25.0 <0.29.0",
121
+ "serialize-javascript": ">=7.0.5",
122
+ "diff": ">=8.0.3",
123
+ "hono": ">=4.12.34",
124
+ "@hono/node-server": ">=1.19.15",
125
+ "ip-address": ">=10.3.1",
126
+ "dompurify": ">=3.4.13",
127
+ "react-router": ">=7.18.2 <9.0.0",
128
+ "uuid": ">=11.1.1",
129
+ "xlsx": ">=0.19.3",
130
+ "vitest": ">=3.2.6 <4.0.0",
131
+ "@babel/core": ">=7.29.1 <8.0.0",
132
+ "eslint/ajv": "6.15.0"
130
133
  }
131
134
  }