@burdenoff/microfe-timecampus 2026.904.1 → 2026.1025.1

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.
@@ -2,39 +2,39 @@ import { TimeCampusProvider as e } from "./providers/TimeCampusProvider.js";
2
2
  import { TimeCampusRoutes as t } from "./TimeCampusRoutes.js";
3
3
  import { ErrorBoundary as n } from "./components/ErrorBoundary.js";
4
4
  import { useEffect as r } from "react";
5
- import { Activity as i, Brain as a, Building2 as o, CalendarDays as s, CalendarRange as c, CheckCircle as l, Clock as u, FileText as d, FolderOpen as f, Heart as p, LayoutDashboard as m, Mail as h, MapPin as g, Monitor as _, Receipt as v, Timer as y, TrendingUp as b, Users as x } from "lucide-react";
6
- import { jsx as S } from "react/jsx-runtime";
7
- import { FeatureFlagProvider as C } from "@burdenoff/fe-libs/shared/feature-flags";
5
+ import { Activity as i, Brain as a, Building2 as o, CalendarDays as s, CalendarRange as c, CheckCircle as l, Clock as u, FileText as d, FolderOpen as f, Heart as p, LayoutDashboard as m, Mail as h, MapPin as g, Monitor as _, Receipt as v, Shield as y, Timer as b, TrendingUp as x, Users as S } from "lucide-react";
6
+ import { jsx as C } from "react/jsx-runtime";
7
+ import { FeatureFlagProvider as w } from "@burdenoff/fe-libs/shared/feature-flags";
8
8
  //#region src/timecampus/TimeCampusRoot.tsx
9
- var w = (w) => {
10
- let { registerNavItems: T, registerFooterItems: E, basePath: D = "/" } = w, O = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
9
+ var T = (T) => {
10
+ let { registerNavItems: E, registerFooterItems: D, basePath: O = "/" } = T, k = (e, t) => (e.endsWith("/") ? e.slice(0, -1) : e) + (t.startsWith("/") ? t : `/${t}`);
11
11
  return r(() => {
12
- if (!T) return;
12
+ if (!E) return;
13
13
  let e = [
14
14
  {
15
15
  id: "timecampus-dashboard",
16
16
  label: "Dashboard",
17
- path: O(D, ""),
18
- icon: /* @__PURE__ */ S(m, { size: 20 }),
17
+ path: k(O, ""),
18
+ icon: /* @__PURE__ */ C(m, { size: 20 }),
19
19
  order: 1,
20
20
  group: "main",
21
21
  children: [
22
22
  {
23
23
  id: "timecampus-dashboard-overview",
24
24
  label: "Overview",
25
- path: O(D, ""),
25
+ path: k(O, ""),
26
26
  order: 1
27
27
  },
28
28
  {
29
29
  id: "timecampus-dashboard-analytics",
30
30
  label: "Analytics",
31
- path: O(D, "analytics"),
31
+ path: k(O, "analytics"),
32
32
  order: 2
33
33
  },
34
34
  {
35
35
  id: "timecampus-dashboard-reports",
36
36
  label: "Reports",
37
- path: O(D, "reports"),
37
+ path: k(O, "reports"),
38
38
  order: 3
39
39
  }
40
40
  ]
@@ -42,57 +42,57 @@ var w = (w) => {
42
42
  {
43
43
  id: "timecampus-life",
44
44
  label: "Life",
45
- path: O(D, "life-timeline"),
46
- icon: /* @__PURE__ */ S(p, { size: 20 }),
45
+ path: k(O, "life-timeline"),
46
+ icon: /* @__PURE__ */ C(p, { size: 20 }),
47
47
  order: 23,
48
48
  group: "main",
49
49
  children: [
50
50
  {
51
51
  id: "timecampus-life-timeline",
52
52
  label: "Life Timeline",
53
- path: O(D, "life-timeline"),
53
+ path: k(O, "life-timeline"),
54
54
  order: 1
55
55
  },
56
56
  {
57
57
  id: "timecampus-life-balance",
58
58
  label: "Life Balance",
59
- path: O(D, "life-balance"),
59
+ path: k(O, "life-balance"),
60
60
  order: 2
61
61
  },
62
62
  {
63
63
  id: "timecampus-finite-life",
64
64
  label: "Life in Weeks",
65
- path: O(D, "finite-life"),
65
+ path: k(O, "finite-life"),
66
66
  order: 3
67
67
  },
68
68
  {
69
69
  id: "timecampus-time-well-spent",
70
70
  label: "Time Well Spent",
71
- path: O(D, "time-well-spent"),
71
+ path: k(O, "time-well-spent"),
72
72
  order: 4
73
73
  },
74
74
  {
75
75
  id: "timecampus-dead-time-radar",
76
76
  label: "Dead-Time Radar",
77
- path: O(D, "dead-time-radar"),
77
+ path: k(O, "dead-time-radar"),
78
78
  order: 5
79
79
  },
80
80
  {
81
81
  id: "timecampus-values-goals",
82
82
  label: "Values & Goals",
83
- path: O(D, "values-goals"),
83
+ path: k(O, "values-goals"),
84
84
  order: 6
85
85
  },
86
86
  {
87
87
  id: "timecampus-recommendations",
88
88
  label: "Recommendations",
89
- path: O(D, "recommendations"),
89
+ path: k(O, "recommendations"),
90
90
  order: 7
91
91
  },
92
92
  {
93
93
  id: "timecampus-personal-corporate",
94
94
  label: "Personal & Corporate",
95
- path: O(D, "personal-corporate"),
95
+ path: k(O, "personal-corporate"),
96
96
  order: 8
97
97
  }
98
98
  ]
@@ -100,27 +100,27 @@ var w = (w) => {
100
100
  {
101
101
  id: "timecampus-time",
102
102
  label: "Time Tracking",
103
- path: O(D, "time"),
104
- icon: /* @__PURE__ */ S(u, { size: 20 }),
103
+ path: k(O, "time"),
104
+ icon: /* @__PURE__ */ C(u, { size: 20 }),
105
105
  order: 2,
106
106
  group: "main",
107
107
  children: [
108
108
  {
109
109
  id: "timecampus-time-tracking",
110
110
  label: "Time Tracking",
111
- path: O(D, "time"),
111
+ path: k(O, "time"),
112
112
  order: 1
113
113
  },
114
114
  {
115
115
  id: "timecampus-time-timer",
116
116
  label: "Timer",
117
- path: O(D, "time/timer"),
117
+ path: k(O, "time/timer"),
118
118
  order: 2
119
119
  },
120
120
  {
121
121
  id: "timecampus-time-entries",
122
122
  label: "Time Entries",
123
- path: O(D, "time/entries"),
123
+ path: k(O, "time/entries"),
124
124
  order: 3
125
125
  }
126
126
  ]
@@ -128,35 +128,35 @@ var w = (w) => {
128
128
  {
129
129
  id: "timecampus-projects",
130
130
  label: "Projects",
131
- path: O(D, "projects"),
132
- icon: /* @__PURE__ */ S(f, { size: 20 }),
131
+ path: k(O, "projects"),
132
+ icon: /* @__PURE__ */ C(f, { size: 20 }),
133
133
  order: 3,
134
134
  group: "main"
135
135
  },
136
136
  {
137
137
  id: "timecampus-pomodoro",
138
138
  label: "Pomodoro",
139
- path: O(D, "pomodoro"),
140
- icon: /* @__PURE__ */ S(y, { size: 20 }),
139
+ path: k(O, "pomodoro"),
140
+ icon: /* @__PURE__ */ C(b, { size: 20 }),
141
141
  order: 4,
142
142
  group: "main",
143
143
  children: [
144
144
  {
145
145
  id: "timecampus-pomodoro-timer",
146
146
  label: "Timer",
147
- path: O(D, "pomodoro"),
147
+ path: k(O, "pomodoro"),
148
148
  order: 1
149
149
  },
150
150
  {
151
151
  id: "timecampus-pomodoro-analytics",
152
152
  label: "Analytics",
153
- path: O(D, "pomodoro/analytics"),
153
+ path: k(O, "pomodoro/analytics"),
154
154
  order: 2
155
155
  },
156
156
  {
157
157
  id: "timecampus-pomodoro-settings",
158
158
  label: "Settings",
159
- path: O(D, "pomodoro/settings"),
159
+ path: k(O, "pomodoro/settings"),
160
160
  order: 3
161
161
  }
162
162
  ]
@@ -164,27 +164,27 @@ var w = (w) => {
164
164
  {
165
165
  id: "timecampus-team",
166
166
  label: "Team",
167
- path: O(D, "team"),
168
- icon: /* @__PURE__ */ S(x, { size: 20 }),
167
+ path: k(O, "team"),
168
+ icon: /* @__PURE__ */ C(S, { size: 20 }),
169
169
  order: 5,
170
170
  group: "main",
171
171
  children: [
172
172
  {
173
173
  id: "timecampus-team-overview",
174
174
  label: "Overview",
175
- path: O(D, "team"),
175
+ path: k(O, "team"),
176
176
  order: 1
177
177
  },
178
178
  {
179
179
  id: "timecampus-team-members",
180
180
  label: "Members",
181
- path: O(D, "team/members"),
181
+ path: k(O, "team/members"),
182
182
  order: 2
183
183
  },
184
184
  {
185
185
  id: "timecampus-team-analytics",
186
186
  label: "Analytics",
187
- path: O(D, "team/analytics"),
187
+ path: k(O, "team/analytics"),
188
188
  order: 3
189
189
  }
190
190
  ]
@@ -192,153 +192,161 @@ var w = (w) => {
192
192
  {
193
193
  id: "timecampus-resource-planning",
194
194
  label: "Resource Planning",
195
- path: O(D, "resource-planning"),
196
- icon: /* @__PURE__ */ S(c, { size: 20 }),
195
+ path: k(O, "resource-planning"),
196
+ icon: /* @__PURE__ */ C(c, { size: 20 }),
197
197
  order: 6,
198
198
  group: "management"
199
199
  },
200
200
  {
201
201
  id: "timecampus-time-approval",
202
202
  label: "Time Approval",
203
- path: O(D, "time-approval"),
204
- icon: /* @__PURE__ */ S(l, { size: 20 }),
203
+ path: k(O, "time-approval"),
204
+ icon: /* @__PURE__ */ C(l, { size: 20 }),
205
205
  order: 7,
206
206
  group: "management"
207
207
  },
208
208
  {
209
209
  id: "timecampus-team-activity",
210
210
  label: "Team Activity",
211
- path: O(D, "team-activity"),
212
- icon: /* @__PURE__ */ S(i, { size: 20 }),
211
+ path: k(O, "team-activity"),
212
+ icon: /* @__PURE__ */ C(i, { size: 20 }),
213
213
  order: 8,
214
214
  group: "insights"
215
215
  },
216
216
  {
217
217
  id: "timecampus-work-patterns",
218
218
  label: "Work Patterns",
219
- path: O(D, "work-patterns"),
220
- icon: /* @__PURE__ */ S(b, { size: 20 }),
219
+ path: k(O, "work-patterns"),
220
+ icon: /* @__PURE__ */ C(x, { size: 20 }),
221
221
  order: 9,
222
222
  group: "insights"
223
223
  },
224
+ {
225
+ id: "timecampus-focus",
226
+ label: "Focus Protection",
227
+ path: k(O, "focus"),
228
+ icon: /* @__PURE__ */ C(y, { size: 20 }),
229
+ order: 10,
230
+ group: "insights"
231
+ },
224
232
  {
225
233
  id: "timecampus-focus-score",
226
234
  label: "Focus Score",
227
- path: O(D, "focus-score"),
228
- icon: /* @__PURE__ */ S(a, { size: 20 }),
235
+ path: k(O, "focus-score"),
236
+ icon: /* @__PURE__ */ C(a, { size: 20 }),
229
237
  order: 10,
230
238
  group: "insights"
231
239
  },
232
240
  {
233
241
  id: "timecampus-app-usage",
234
242
  label: "App Usage",
235
- path: O(D, "application-usage"),
236
- icon: /* @__PURE__ */ S(_, { size: 20 }),
243
+ path: k(O, "application-usage"),
244
+ icon: /* @__PURE__ */ C(_, { size: 20 }),
237
245
  order: 11,
238
246
  group: "insights"
239
247
  },
240
248
  {
241
249
  id: "timecampus-email-tracking",
242
250
  label: "Email Tracking",
243
- path: O(D, "email-tracking"),
244
- icon: /* @__PURE__ */ S(h, { size: 20 }),
251
+ path: k(O, "email-tracking"),
252
+ icon: /* @__PURE__ */ C(h, { size: 20 }),
245
253
  order: 12,
246
254
  group: "tracking",
247
255
  children: [{
248
256
  id: "timecampus-email-all",
249
257
  label: "All Emails",
250
- path: O(D, "email-tracking"),
258
+ path: k(O, "email-tracking"),
251
259
  order: 1
252
260
  }, {
253
261
  id: "timecampus-email-analytics",
254
262
  label: "Analytics",
255
- path: O(D, "email-tracking/analytics"),
263
+ path: k(O, "email-tracking/analytics"),
256
264
  order: 2
257
265
  }]
258
266
  },
259
267
  {
260
268
  id: "timecampus-meetings",
261
269
  label: "Meetings",
262
- path: O(D, "meetings"),
263
- icon: /* @__PURE__ */ S(s, { size: 20 }),
270
+ path: k(O, "meetings"),
271
+ icon: /* @__PURE__ */ C(s, { size: 20 }),
264
272
  order: 13,
265
273
  group: "tracking",
266
274
  children: [{
267
275
  id: "timecampus-meetings-all",
268
276
  label: "All Meetings",
269
- path: O(D, "meetings"),
277
+ path: k(O, "meetings"),
270
278
  order: 1
271
279
  }, {
272
280
  id: "timecampus-meetings-analytics",
273
281
  label: "Analytics",
274
- path: O(D, "meetings/analytics"),
282
+ path: k(O, "meetings/analytics"),
275
283
  order: 2
276
284
  }]
277
285
  },
278
286
  {
279
287
  id: "timecampus-location",
280
288
  label: "Location Tracking",
281
- path: O(D, "location-tracking"),
282
- icon: /* @__PURE__ */ S(g, { size: 20 }),
289
+ path: k(O, "location-tracking"),
290
+ icon: /* @__PURE__ */ C(g, { size: 20 }),
283
291
  order: 14,
284
292
  group: "tracking",
285
293
  children: [{
286
294
  id: "timecampus-location-all",
287
295
  label: "Locations",
288
- path: O(D, "location-tracking"),
296
+ path: k(O, "location-tracking"),
289
297
  order: 1
290
298
  }, {
291
299
  id: "timecampus-location-geofencing",
292
300
  label: "Geofencing",
293
- path: O(D, "geofencing"),
301
+ path: k(O, "geofencing"),
294
302
  order: 2
295
303
  }]
296
304
  },
297
305
  {
298
306
  id: "timecampus-expense-tracking",
299
307
  label: "Expense Tracking",
300
- path: O(D, "expense-tracking"),
301
- icon: /* @__PURE__ */ S(v, { size: 20 }),
308
+ path: k(O, "expense-tracking"),
309
+ icon: /* @__PURE__ */ C(v, { size: 20 }),
302
310
  order: 15,
303
311
  group: "business"
304
312
  },
305
313
  {
306
314
  id: "timecampus-client-portal",
307
315
  label: "Client Portal",
308
- path: O(D, "client-portal"),
309
- icon: /* @__PURE__ */ S(o, { size: 20 }),
316
+ path: k(O, "client-portal"),
317
+ icon: /* @__PURE__ */ C(o, { size: 20 }),
310
318
  order: 16,
311
319
  group: "business"
312
320
  },
313
321
  {
314
322
  id: "timecampus-invoicing",
315
323
  label: "Invoicing",
316
- path: O(D, "invoicing"),
317
- icon: /* @__PURE__ */ S(d, { size: 20 }),
324
+ path: k(O, "invoicing"),
325
+ icon: /* @__PURE__ */ C(d, { size: 20 }),
318
326
  order: 17,
319
327
  group: "business"
320
328
  }
321
329
  ];
322
- return T(e);
323
- }, [T, D]), r(() => {
324
- if (E) return E([{
330
+ return E(e);
331
+ }, [E, O]), r(() => {
332
+ if (D) return D([{
325
333
  id: "timecampus-status",
326
334
  label: "TimeCampus Ready",
327
335
  type: "status",
328
336
  order: 10,
329
337
  section: "left"
330
338
  }]);
331
- }, [E]), /* @__PURE__ */ S(C, {
339
+ }, [D]), /* @__PURE__ */ C(w, {
332
340
  workspaceId: null,
333
341
  gateway: "global",
334
342
  defaultEnabled: !0,
335
- children: /* @__PURE__ */ S(e, {
336
- ...w,
337
- children: /* @__PURE__ */ S(n, { children: /* @__PURE__ */ S(t, {}) })
343
+ children: /* @__PURE__ */ C(e, {
344
+ ...T,
345
+ children: /* @__PURE__ */ C(n, { children: /* @__PURE__ */ C(t, {}) })
338
346
  })
339
347
  });
340
348
  };
341
349
  //#endregion
342
- export { w as TimeCampusRoot };
350
+ export { T as TimeCampusRoot };
343
351
 
344
352
  //# sourceMappingURL=TimeCampusRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TimeCampusRoot.js","names":[],"sources":["../../src/timecampus/TimeCampusRoot.tsx"],"sourcesContent":["/**\n * TimeCampus Root Component\n * @module timecampus\n */\n\nimport type { FC } from \"react\";\nimport { useEffect } from \"react\";\nimport {\n LayoutDashboard,\n Clock,\n FolderOpen,\n Timer,\n Users,\n CalendarRange,\n CheckCircle,\n Activity,\n TrendingUp,\n Brain,\n Monitor,\n Mail,\n CalendarDays,\n MapPin,\n Receipt,\n FileText,\n Building2,\n Heart,\n} from \"lucide-react\";\nimport { TimeCampusProvider } from \"./providers/TimeCampusProvider\";\nimport { FeatureFlagProvider } from \"@burdenoff/fe-libs/shared/feature-flags\";\nimport { TimeCampusRoutes } from \"./TimeCampusRoutes\";\nimport { ErrorBoundary } from \"./components/ErrorBoundary\";\nimport type { TimeCampusRootProps, NavItem } from \"./types\";\n\nexport const TimeCampusRoot: FC<TimeCampusRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = \"/\" } = props;\n\n // Helper to join paths correctly\n const joinPath = (base: string, path: string): string => {\n const cleanBase = base.endsWith(\"/\") ? base.slice(0, -1) : base;\n const cleanPath = path.startsWith(\"/\") ? path : `/${path}`;\n return cleanBase + cleanPath;\n };\n\n // Register navigation items with shell on mount\n useEffect(() => {\n if (!registerNavItems) return;\n\n const navItems: NavItem[] = [\n // 1. Dashboard\n {\n id: \"timecampus-dashboard\",\n label: \"Dashboard\",\n path: joinPath(basePath, \"\"),\n icon: <LayoutDashboard size={20} />,\n order: 1,\n group: \"main\",\n children: [\n {\n id: \"timecampus-dashboard-overview\",\n label: \"Overview\",\n path: joinPath(basePath, \"\"),\n order: 1,\n },\n {\n id: \"timecampus-dashboard-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"analytics\"),\n order: 2,\n },\n {\n id: \"timecampus-dashboard-reports\",\n label: \"Reports\",\n path: joinPath(basePath, \"reports\"),\n order: 3,\n },\n ],\n },\n\n // Life — the whole of your time (work + personal). Unique order (23) — the\n // shell keys nav items by order within a group, so it must not collide.\n {\n id: \"timecampus-life\",\n label: \"Life\",\n path: joinPath(basePath, \"life-timeline\"),\n icon: <Heart size={20} />,\n order: 23,\n group: \"main\",\n children: [\n {\n id: \"timecampus-life-timeline\",\n label: \"Life Timeline\",\n path: joinPath(basePath, \"life-timeline\"),\n order: 1,\n },\n {\n id: \"timecampus-life-balance\",\n label: \"Life Balance\",\n path: joinPath(basePath, \"life-balance\"),\n order: 2,\n },\n {\n id: \"timecampus-finite-life\",\n label: \"Life in Weeks\",\n path: joinPath(basePath, \"finite-life\"),\n order: 3,\n },\n {\n id: \"timecampus-time-well-spent\",\n label: \"Time Well Spent\",\n path: joinPath(basePath, \"time-well-spent\"),\n order: 4,\n },\n {\n id: \"timecampus-dead-time-radar\",\n label: \"Dead-Time Radar\",\n path: joinPath(basePath, \"dead-time-radar\"),\n order: 5,\n },\n {\n id: \"timecampus-values-goals\",\n label: \"Values & Goals\",\n path: joinPath(basePath, \"values-goals\"),\n order: 6,\n },\n {\n id: \"timecampus-recommendations\",\n label: \"Recommendations\",\n path: joinPath(basePath, \"recommendations\"),\n order: 7,\n },\n {\n id: \"timecampus-personal-corporate\",\n label: \"Personal & Corporate\",\n path: joinPath(basePath, \"personal-corporate\"),\n order: 8,\n },\n ],\n },\n\n // 2. Time Tracking\n {\n id: \"timecampus-time\",\n label: \"Time Tracking\",\n path: joinPath(basePath, \"time\"),\n icon: <Clock size={20} />,\n order: 2,\n group: \"main\",\n children: [\n {\n id: \"timecampus-time-tracking\",\n label: \"Time Tracking\",\n path: joinPath(basePath, \"time\"),\n order: 1,\n },\n {\n id: \"timecampus-time-timer\",\n label: \"Timer\",\n path: joinPath(basePath, \"time/timer\"),\n order: 2,\n },\n {\n id: \"timecampus-time-entries\",\n label: \"Time Entries\",\n path: joinPath(basePath, \"time/entries\"),\n order: 3,\n },\n ],\n },\n\n // 3. Projects\n {\n id: \"timecampus-projects\",\n label: \"Projects\",\n path: joinPath(basePath, \"projects\"),\n icon: <FolderOpen size={20} />,\n order: 3,\n group: \"main\",\n },\n\n // 4. Pomodoro\n {\n id: \"timecampus-pomodoro\",\n label: \"Pomodoro\",\n path: joinPath(basePath, \"pomodoro\"),\n icon: <Timer size={20} />,\n order: 4,\n group: \"main\",\n children: [\n {\n id: \"timecampus-pomodoro-timer\",\n label: \"Timer\",\n path: joinPath(basePath, \"pomodoro\"),\n order: 1,\n },\n {\n id: \"timecampus-pomodoro-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"pomodoro/analytics\"),\n order: 2,\n },\n {\n id: \"timecampus-pomodoro-settings\",\n label: \"Settings\",\n path: joinPath(basePath, \"pomodoro/settings\"),\n order: 3,\n },\n ],\n },\n\n // 5. Team\n {\n id: \"timecampus-team\",\n label: \"Team\",\n path: joinPath(basePath, \"team\"),\n icon: <Users size={20} />,\n order: 5,\n group: \"main\",\n children: [\n {\n id: \"timecampus-team-overview\",\n label: \"Overview\",\n path: joinPath(basePath, \"team\"),\n order: 1,\n },\n {\n id: \"timecampus-team-members\",\n label: \"Members\",\n path: joinPath(basePath, \"team/members\"),\n order: 2,\n },\n {\n id: \"timecampus-team-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"team/analytics\"),\n order: 3,\n },\n ],\n },\n\n // 6. Resource Planning\n {\n id: \"timecampus-resource-planning\",\n label: \"Resource Planning\",\n path: joinPath(basePath, \"resource-planning\"),\n icon: <CalendarRange size={20} />,\n order: 6,\n group: \"management\",\n },\n\n // 7. Time Approval\n {\n id: \"timecampus-time-approval\",\n label: \"Time Approval\",\n path: joinPath(basePath, \"time-approval\"),\n icon: <CheckCircle size={20} />,\n order: 7,\n group: \"management\",\n },\n\n // 8. Team Activity\n {\n id: \"timecampus-team-activity\",\n label: \"Team Activity\",\n path: joinPath(basePath, \"team-activity\"),\n icon: <Activity size={20} />,\n order: 8,\n group: \"insights\",\n },\n\n // 9. Work Patterns\n {\n id: \"timecampus-work-patterns\",\n label: \"Work Patterns\",\n path: joinPath(basePath, \"work-patterns\"),\n icon: <TrendingUp size={20} />,\n order: 9,\n group: \"insights\",\n },\n\n // 10. Focus Score\n {\n id: \"timecampus-focus-score\",\n label: \"Focus Score\",\n path: joinPath(basePath, \"focus-score\"),\n icon: <Brain size={20} />,\n order: 10,\n group: \"insights\",\n },\n\n // 11. App Usage\n {\n id: \"timecampus-app-usage\",\n label: \"App Usage\",\n path: joinPath(basePath, \"application-usage\"),\n icon: <Monitor size={20} />,\n order: 11,\n group: \"insights\",\n },\n\n // 12. Email Tracking\n {\n id: \"timecampus-email-tracking\",\n label: \"Email Tracking\",\n path: joinPath(basePath, \"email-tracking\"),\n icon: <Mail size={20} />,\n order: 12,\n group: \"tracking\",\n children: [\n {\n id: \"timecampus-email-all\",\n label: \"All Emails\",\n path: joinPath(basePath, \"email-tracking\"),\n order: 1,\n },\n {\n id: \"timecampus-email-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"email-tracking/analytics\"),\n order: 2,\n },\n ],\n },\n\n // 13. Meetings\n {\n id: \"timecampus-meetings\",\n label: \"Meetings\",\n path: joinPath(basePath, \"meetings\"),\n icon: <CalendarDays size={20} />,\n order: 13,\n group: \"tracking\",\n children: [\n {\n id: \"timecampus-meetings-all\",\n label: \"All Meetings\",\n path: joinPath(basePath, \"meetings\"),\n order: 1,\n },\n {\n id: \"timecampus-meetings-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"meetings/analytics\"),\n order: 2,\n },\n ],\n },\n\n // 14. Location Tracking\n {\n id: \"timecampus-location\",\n label: \"Location Tracking\",\n path: joinPath(basePath, \"location-tracking\"),\n icon: <MapPin size={20} />,\n order: 14,\n group: \"tracking\",\n children: [\n {\n id: \"timecampus-location-all\",\n label: \"Locations\",\n path: joinPath(basePath, \"location-tracking\"),\n order: 1,\n },\n {\n id: \"timecampus-location-geofencing\",\n label: \"Geofencing\",\n path: joinPath(basePath, \"geofencing\"),\n order: 2,\n },\n ],\n },\n\n // 15. Expense Tracking\n {\n id: \"timecampus-expense-tracking\",\n label: \"Expense Tracking\",\n path: joinPath(basePath, \"expense-tracking\"),\n icon: <Receipt size={20} />,\n order: 15,\n group: \"business\",\n },\n\n // 16. Client Portal\n {\n id: \"timecampus-client-portal\",\n label: \"Client Portal\",\n path: joinPath(basePath, \"client-portal\"),\n icon: <Building2 size={20} />,\n order: 16,\n group: \"business\",\n },\n\n // 17. Invoicing\n {\n id: \"timecampus-invoicing\",\n label: \"Invoicing\",\n path: joinPath(basePath, \"invoicing\"),\n icon: <FileText size={20} />,\n order: 17,\n group: \"business\",\n },\n ];\n\n const cleanup = registerNavItems(navItems);\n return cleanup;\n }, [registerNavItems, basePath]);\n\n // Register footer items\n useEffect(() => {\n if (!registerFooterItems) return;\n\n const footerItems = [\n {\n id: \"timecampus-status\",\n label: \"TimeCampus Ready\",\n type: \"status\" as const,\n order: 10,\n section: \"left\" as const,\n },\n ];\n\n const cleanup = registerFooterItems(footerItems);\n return cleanup;\n }, [registerFooterItems]);\n\n return (\n <FeatureFlagProvider\n workspaceId={null}\n gateway=\"global\"\n defaultEnabled={true}\n >\n <TimeCampusProvider {...props}>\n <ErrorBoundary>\n <TimeCampusRoutes />\n </ErrorBoundary>\n </TimeCampusProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"TimeCampusRoot.js","names":[],"sources":["../../src/timecampus/TimeCampusRoot.tsx"],"sourcesContent":["/**\n * TimeCampus Root Component\n * @module timecampus\n */\n\nimport type { FC } from \"react\";\nimport { useEffect } from \"react\";\nimport {\n LayoutDashboard,\n Clock,\n FolderOpen,\n Timer,\n Users,\n CalendarRange,\n CheckCircle,\n Activity,\n TrendingUp,\n Brain,\n Shield,\n Monitor,\n Mail,\n CalendarDays,\n MapPin,\n Receipt,\n FileText,\n Building2,\n Heart,\n} from \"lucide-react\";\nimport { TimeCampusProvider } from \"./providers/TimeCampusProvider\";\nimport { FeatureFlagProvider } from \"@burdenoff/fe-libs/shared/feature-flags\";\nimport { TimeCampusRoutes } from \"./TimeCampusRoutes\";\nimport { ErrorBoundary } from \"./components/ErrorBoundary\";\nimport type { TimeCampusRootProps, NavItem } from \"./types\";\n\nexport const TimeCampusRoot: FC<TimeCampusRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = \"/\" } = props;\n\n // Helper to join paths correctly\n const joinPath = (base: string, path: string): string => {\n const cleanBase = base.endsWith(\"/\") ? base.slice(0, -1) : base;\n const cleanPath = path.startsWith(\"/\") ? path : `/${path}`;\n return cleanBase + cleanPath;\n };\n\n // Register navigation items with shell on mount\n useEffect(() => {\n if (!registerNavItems) return;\n\n const navItems: NavItem[] = [\n // 1. Dashboard\n {\n id: \"timecampus-dashboard\",\n label: \"Dashboard\",\n path: joinPath(basePath, \"\"),\n icon: <LayoutDashboard size={20} />,\n order: 1,\n group: \"main\",\n children: [\n {\n id: \"timecampus-dashboard-overview\",\n label: \"Overview\",\n path: joinPath(basePath, \"\"),\n order: 1,\n },\n {\n id: \"timecampus-dashboard-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"analytics\"),\n order: 2,\n },\n {\n id: \"timecampus-dashboard-reports\",\n label: \"Reports\",\n path: joinPath(basePath, \"reports\"),\n order: 3,\n },\n ],\n },\n\n // Life — the whole of your time (work + personal). Unique order (23) — the\n // shell keys nav items by order within a group, so it must not collide.\n {\n id: \"timecampus-life\",\n label: \"Life\",\n path: joinPath(basePath, \"life-timeline\"),\n icon: <Heart size={20} />,\n order: 23,\n group: \"main\",\n children: [\n {\n id: \"timecampus-life-timeline\",\n label: \"Life Timeline\",\n path: joinPath(basePath, \"life-timeline\"),\n order: 1,\n },\n {\n id: \"timecampus-life-balance\",\n label: \"Life Balance\",\n path: joinPath(basePath, \"life-balance\"),\n order: 2,\n },\n {\n id: \"timecampus-finite-life\",\n label: \"Life in Weeks\",\n path: joinPath(basePath, \"finite-life\"),\n order: 3,\n },\n {\n id: \"timecampus-time-well-spent\",\n label: \"Time Well Spent\",\n path: joinPath(basePath, \"time-well-spent\"),\n order: 4,\n },\n {\n id: \"timecampus-dead-time-radar\",\n label: \"Dead-Time Radar\",\n path: joinPath(basePath, \"dead-time-radar\"),\n order: 5,\n },\n {\n id: \"timecampus-values-goals\",\n label: \"Values & Goals\",\n path: joinPath(basePath, \"values-goals\"),\n order: 6,\n },\n {\n id: \"timecampus-recommendations\",\n label: \"Recommendations\",\n path: joinPath(basePath, \"recommendations\"),\n order: 7,\n },\n {\n id: \"timecampus-personal-corporate\",\n label: \"Personal & Corporate\",\n path: joinPath(basePath, \"personal-corporate\"),\n order: 8,\n },\n ],\n },\n\n // 2. Time Tracking\n {\n id: \"timecampus-time\",\n label: \"Time Tracking\",\n path: joinPath(basePath, \"time\"),\n icon: <Clock size={20} />,\n order: 2,\n group: \"main\",\n children: [\n {\n id: \"timecampus-time-tracking\",\n label: \"Time Tracking\",\n path: joinPath(basePath, \"time\"),\n order: 1,\n },\n {\n id: \"timecampus-time-timer\",\n label: \"Timer\",\n path: joinPath(basePath, \"time/timer\"),\n order: 2,\n },\n {\n id: \"timecampus-time-entries\",\n label: \"Time Entries\",\n path: joinPath(basePath, \"time/entries\"),\n order: 3,\n },\n ],\n },\n\n // 3. Projects\n {\n id: \"timecampus-projects\",\n label: \"Projects\",\n path: joinPath(basePath, \"projects\"),\n icon: <FolderOpen size={20} />,\n order: 3,\n group: \"main\",\n },\n\n // 4. Pomodoro\n {\n id: \"timecampus-pomodoro\",\n label: \"Pomodoro\",\n path: joinPath(basePath, \"pomodoro\"),\n icon: <Timer size={20} />,\n order: 4,\n group: \"main\",\n children: [\n {\n id: \"timecampus-pomodoro-timer\",\n label: \"Timer\",\n path: joinPath(basePath, \"pomodoro\"),\n order: 1,\n },\n {\n id: \"timecampus-pomodoro-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"pomodoro/analytics\"),\n order: 2,\n },\n {\n id: \"timecampus-pomodoro-settings\",\n label: \"Settings\",\n path: joinPath(basePath, \"pomodoro/settings\"),\n order: 3,\n },\n ],\n },\n\n // 5. Team\n {\n id: \"timecampus-team\",\n label: \"Team\",\n path: joinPath(basePath, \"team\"),\n icon: <Users size={20} />,\n order: 5,\n group: \"main\",\n children: [\n {\n id: \"timecampus-team-overview\",\n label: \"Overview\",\n path: joinPath(basePath, \"team\"),\n order: 1,\n },\n {\n id: \"timecampus-team-members\",\n label: \"Members\",\n path: joinPath(basePath, \"team/members\"),\n order: 2,\n },\n {\n id: \"timecampus-team-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"team/analytics\"),\n order: 3,\n },\n ],\n },\n\n // 6. Resource Planning\n {\n id: \"timecampus-resource-planning\",\n label: \"Resource Planning\",\n path: joinPath(basePath, \"resource-planning\"),\n icon: <CalendarRange size={20} />,\n order: 6,\n group: \"management\",\n },\n\n // 7. Time Approval\n {\n id: \"timecampus-time-approval\",\n label: \"Time Approval\",\n path: joinPath(basePath, \"time-approval\"),\n icon: <CheckCircle size={20} />,\n order: 7,\n group: \"management\",\n },\n\n // 8. Team Activity\n {\n id: \"timecampus-team-activity\",\n label: \"Team Activity\",\n path: joinPath(basePath, \"team-activity\"),\n icon: <Activity size={20} />,\n order: 8,\n group: \"insights\",\n },\n\n // 9. Work Patterns\n {\n id: \"timecampus-work-patterns\",\n label: \"Work Patterns\",\n path: joinPath(basePath, \"work-patterns\"),\n icon: <TrendingUp size={20} />,\n order: 9,\n group: \"insights\",\n },\n\n // 10. Focus Protection (BOFF-4196)\n {\n id: \"timecampus-focus\",\n label: \"Focus Protection\",\n path: joinPath(basePath, \"focus\"),\n icon: <Shield size={20} />,\n order: 10,\n group: \"insights\",\n },\n\n // 10. Focus Score\n {\n id: \"timecampus-focus-score\",\n label: \"Focus Score\",\n path: joinPath(basePath, \"focus-score\"),\n icon: <Brain size={20} />,\n order: 10,\n group: \"insights\",\n },\n\n // 11. App Usage\n {\n id: \"timecampus-app-usage\",\n label: \"App Usage\",\n path: joinPath(basePath, \"application-usage\"),\n icon: <Monitor size={20} />,\n order: 11,\n group: \"insights\",\n },\n\n // 12. Email Tracking\n {\n id: \"timecampus-email-tracking\",\n label: \"Email Tracking\",\n path: joinPath(basePath, \"email-tracking\"),\n icon: <Mail size={20} />,\n order: 12,\n group: \"tracking\",\n children: [\n {\n id: \"timecampus-email-all\",\n label: \"All Emails\",\n path: joinPath(basePath, \"email-tracking\"),\n order: 1,\n },\n {\n id: \"timecampus-email-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"email-tracking/analytics\"),\n order: 2,\n },\n ],\n },\n\n // 13. Meetings\n {\n id: \"timecampus-meetings\",\n label: \"Meetings\",\n path: joinPath(basePath, \"meetings\"),\n icon: <CalendarDays size={20} />,\n order: 13,\n group: \"tracking\",\n children: [\n {\n id: \"timecampus-meetings-all\",\n label: \"All Meetings\",\n path: joinPath(basePath, \"meetings\"),\n order: 1,\n },\n {\n id: \"timecampus-meetings-analytics\",\n label: \"Analytics\",\n path: joinPath(basePath, \"meetings/analytics\"),\n order: 2,\n },\n ],\n },\n\n // 14. Location Tracking\n {\n id: \"timecampus-location\",\n label: \"Location Tracking\",\n path: joinPath(basePath, \"location-tracking\"),\n icon: <MapPin size={20} />,\n order: 14,\n group: \"tracking\",\n children: [\n {\n id: \"timecampus-location-all\",\n label: \"Locations\",\n path: joinPath(basePath, \"location-tracking\"),\n order: 1,\n },\n {\n id: \"timecampus-location-geofencing\",\n label: \"Geofencing\",\n path: joinPath(basePath, \"geofencing\"),\n order: 2,\n },\n ],\n },\n\n // 15. Expense Tracking\n {\n id: \"timecampus-expense-tracking\",\n label: \"Expense Tracking\",\n path: joinPath(basePath, \"expense-tracking\"),\n icon: <Receipt size={20} />,\n order: 15,\n group: \"business\",\n },\n\n // 16. Client Portal\n {\n id: \"timecampus-client-portal\",\n label: \"Client Portal\",\n path: joinPath(basePath, \"client-portal\"),\n icon: <Building2 size={20} />,\n order: 16,\n group: \"business\",\n },\n\n // 17. Invoicing\n {\n id: \"timecampus-invoicing\",\n label: \"Invoicing\",\n path: joinPath(basePath, \"invoicing\"),\n icon: <FileText size={20} />,\n order: 17,\n group: \"business\",\n },\n ];\n\n const cleanup = registerNavItems(navItems);\n return cleanup;\n }, [registerNavItems, basePath]);\n\n // Register footer items\n useEffect(() => {\n if (!registerFooterItems) return;\n\n const footerItems = [\n {\n id: \"timecampus-status\",\n label: \"TimeCampus Ready\",\n type: \"status\" as const,\n order: 10,\n section: \"left\" as const,\n },\n ];\n\n const cleanup = registerFooterItems(footerItems);\n return cleanup;\n }, [registerFooterItems]);\n\n return (\n <FeatureFlagProvider\n workspaceId={null}\n gateway=\"global\"\n defaultEnabled={true}\n >\n <TimeCampusProvider {...props}>\n <ErrorBoundary>\n <TimeCampusRoutes />\n </ErrorBoundary>\n </TimeCampusProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimeCampusRoutes.d.ts","sourceRoot":"","sources":["../../src/timecampus/TimeCampusRoutes.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AA8PH,wBAAgB,gBAAgB,gCAuF/B"}
1
+ {"version":3,"file":"TimeCampusRoutes.d.ts","sourceRoot":"","sources":["../../src/timecampus/TimeCampusRoutes.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAoQH,wBAAgB,gBAAgB,gCAwF/B"}