@burdenoff/microfe-timecampus 2026.624.1 → 2026.625.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.
Files changed (107) hide show
  1. package/dist/timecampus/components/ErrorBoundary.js +2 -2
  2. package/dist/timecampus/components/ErrorBoundary.js.map +1 -1
  3. package/dist/timecampus/components/LoadingSkeleton.js +1 -1
  4. package/dist/timecampus/components/LoadingSkeleton.js.map +1 -1
  5. package/dist/timecampus/components/PageLayout.js +17 -13
  6. package/dist/timecampus/components/PageLayout.js.map +1 -1
  7. package/dist/timecampus/components/StatCard.js +19 -16
  8. package/dist/timecampus/components/StatCard.js.map +1 -1
  9. package/dist/timecampus/pages/HomePage.js +169 -149
  10. package/dist/timecampus/pages/HomePage.js.map +1 -1
  11. package/dist/timecampus/pages/applets/AppletStorePage.js +11 -11
  12. package/dist/timecampus/pages/applets/AppletStorePage.js.map +1 -1
  13. package/dist/timecampus/pages/applets/InstalledAppletsPage.js +11 -11
  14. package/dist/timecampus/pages/applets/InstalledAppletsPage.js.map +1 -1
  15. package/dist/timecampus/pages/application-usage/ApplicationUsagePage.js +19 -19
  16. package/dist/timecampus/pages/application-usage/ApplicationUsagePage.js.map +1 -1
  17. package/dist/timecampus/pages/application-usage/ApplicationUsageSettingsPage.js +10 -10
  18. package/dist/timecampus/pages/application-usage/ApplicationUsageSettingsPage.js.map +1 -1
  19. package/dist/timecampus/pages/channels/ChannelsPage.js +11 -11
  20. package/dist/timecampus/pages/channels/ChannelsPage.js.map +1 -1
  21. package/dist/timecampus/pages/client-portal/ClientPortalPage.js +15 -15
  22. package/dist/timecampus/pages/client-portal/ClientPortalPage.js.map +1 -1
  23. package/dist/timecampus/pages/dashboard/AnalyticsPage.js +11 -11
  24. package/dist/timecampus/pages/dashboard/AnalyticsPage.js.map +1 -1
  25. package/dist/timecampus/pages/dashboard/ReportsPage.js +11 -11
  26. package/dist/timecampus/pages/dashboard/ReportsPage.js.map +1 -1
  27. package/dist/timecampus/pages/email-tracking/EmailAnalyticsPage.js +14 -14
  28. package/dist/timecampus/pages/email-tracking/EmailAnalyticsPage.js.map +1 -1
  29. package/dist/timecampus/pages/email-tracking/EmailSettingsPage.js +10 -10
  30. package/dist/timecampus/pages/email-tracking/EmailSettingsPage.js.map +1 -1
  31. package/dist/timecampus/pages/email-tracking/EmailTrackingPage.js +7 -7
  32. package/dist/timecampus/pages/email-tracking/EmailTrackingPage.js.map +1 -1
  33. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js +15 -15
  34. package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js.map +1 -1
  35. package/dist/timecampus/pages/focus-score/FocusScorePage.js +21 -21
  36. package/dist/timecampus/pages/focus-score/FocusScorePage.js.map +1 -1
  37. package/dist/timecampus/pages/focus-score/FocusScoreSettingsPage.js +10 -10
  38. package/dist/timecampus/pages/focus-score/FocusScoreSettingsPage.js.map +1 -1
  39. package/dist/timecampus/pages/geofencing/GeofencingPage.js +10 -10
  40. package/dist/timecampus/pages/geofencing/GeofencingPage.js.map +1 -1
  41. package/dist/timecampus/pages/geofencing/GeofencingSettingsPage.js +10 -10
  42. package/dist/timecampus/pages/geofencing/GeofencingSettingsPage.js.map +1 -1
  43. package/dist/timecampus/pages/industry-solutions/IndustrySolutionsPage.js +10 -10
  44. package/dist/timecampus/pages/industry-solutions/IndustrySolutionsPage.js.map +1 -1
  45. package/dist/timecampus/pages/location-tracking/LocationPrivacySettingsPage.js +10 -10
  46. package/dist/timecampus/pages/location-tracking/LocationPrivacySettingsPage.js.map +1 -1
  47. package/dist/timecampus/pages/location-tracking/LocationTrackingPage.js +15 -15
  48. package/dist/timecampus/pages/location-tracking/LocationTrackingPage.js.map +1 -1
  49. package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js +15 -15
  50. package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js.map +1 -1
  51. package/dist/timecampus/pages/meetings/MeetingCreatePage.js +5 -5
  52. package/dist/timecampus/pages/meetings/MeetingCreatePage.js.map +1 -1
  53. package/dist/timecampus/pages/meetings/MeetingDetailPage.js +16 -16
  54. package/dist/timecampus/pages/meetings/MeetingDetailPage.js.map +1 -1
  55. package/dist/timecampus/pages/meetings/MeetingsPage.js +10 -10
  56. package/dist/timecampus/pages/meetings/MeetingsPage.js.map +1 -1
  57. package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.js +17 -17
  58. package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.js.map +1 -1
  59. package/dist/timecampus/pages/pomodoro/PomodoroPage.js +16 -16
  60. package/dist/timecampus/pages/pomodoro/PomodoroPage.js.map +1 -1
  61. package/dist/timecampus/pages/pomodoro/PomodoroSettingsPage.js +12 -12
  62. package/dist/timecampus/pages/pomodoro/PomodoroSettingsPage.js.map +1 -1
  63. package/dist/timecampus/pages/projects/ProjectCreatePage.js +6 -6
  64. package/dist/timecampus/pages/projects/ProjectCreatePage.js.map +1 -1
  65. package/dist/timecampus/pages/projects/ProjectDetailPage.js +17 -17
  66. package/dist/timecampus/pages/projects/ProjectDetailPage.js.map +1 -1
  67. package/dist/timecampus/pages/projects/ProjectsPage.js +10 -10
  68. package/dist/timecampus/pages/projects/ProjectsPage.js.map +1 -1
  69. package/dist/timecampus/pages/projects/TasksPage.js +10 -10
  70. package/dist/timecampus/pages/projects/TasksPage.js.map +1 -1
  71. package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.js +18 -18
  72. package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.js.map +1 -1
  73. package/dist/timecampus/pages/team/TeamAnalyticsPage.js +11 -11
  74. package/dist/timecampus/pages/team/TeamAnalyticsPage.js.map +1 -1
  75. package/dist/timecampus/pages/team/TeamMembersPage.js +12 -12
  76. package/dist/timecampus/pages/team/TeamMembersPage.js.map +1 -1
  77. package/dist/timecampus/pages/team/TeamPage.js +16 -16
  78. package/dist/timecampus/pages/team/TeamPage.js.map +1 -1
  79. package/dist/timecampus/pages/team-activity/TeamActivityPage.js +16 -16
  80. package/dist/timecampus/pages/team-activity/TeamActivityPage.js.map +1 -1
  81. package/dist/timecampus/pages/team-activity/TeamActivitySettingsPage.js +10 -10
  82. package/dist/timecampus/pages/team-activity/TeamActivitySettingsPage.js.map +1 -1
  83. package/dist/timecampus/pages/templates/TemplateApplicationPage.js +11 -11
  84. package/dist/timecampus/pages/templates/TemplateApplicationPage.js.map +1 -1
  85. package/dist/timecampus/pages/templates/TemplateDetailPage.js +12 -12
  86. package/dist/timecampus/pages/templates/TemplateDetailPage.js.map +1 -1
  87. package/dist/timecampus/pages/templates/TemplatesPage.js +11 -11
  88. package/dist/timecampus/pages/templates/TemplatesPage.js.map +1 -1
  89. package/dist/timecampus/pages/time/TimeEntriesPage.js +10 -10
  90. package/dist/timecampus/pages/time/TimeEntriesPage.js.map +1 -1
  91. package/dist/timecampus/pages/time/TimeTrackingPage.js +17 -17
  92. package/dist/timecampus/pages/time/TimeTrackingPage.js.map +1 -1
  93. package/dist/timecampus/pages/time/TimerPage.js +10 -10
  94. package/dist/timecampus/pages/time/TimerPage.js.map +1 -1
  95. package/dist/timecampus/pages/time-approval/TimeApprovalPage.js +20 -20
  96. package/dist/timecampus/pages/time-approval/TimeApprovalPage.js.map +1 -1
  97. package/dist/timecampus/pages/widgets/WidgetDetailPage.js +11 -11
  98. package/dist/timecampus/pages/widgets/WidgetDetailPage.js.map +1 -1
  99. package/dist/timecampus/pages/widgets/WidgetsPage.js +12 -12
  100. package/dist/timecampus/pages/widgets/WidgetsPage.js.map +1 -1
  101. package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js +16 -16
  102. package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js.map +1 -1
  103. package/dist/timecampus/pages/work-patterns/WorkPatternsSettingsPage.js +10 -10
  104. package/dist/timecampus/pages/work-patterns/WorkPatternsSettingsPage.js.map +1 -1
  105. package/dist/timecampus/pages/workflows/WorkflowsPage.js +10 -10
  106. package/dist/timecampus/pages/workflows/WorkflowsPage.js.map +1 -1
  107. package/package.json +2 -2
@@ -1,48 +1,48 @@
1
1
  import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
2
- import { PageLayout as t } from "../../components/PageLayout.js";
3
- import { StatCard as n } from "../../components/StatCard.js";
4
- import { LoadingSkeleton as r } from "../../components/LoadingSkeleton.js";
5
- import { useGetTimeEntryStatsQuery as i } from "../../../generated/wspace-operations.js";
2
+ import { StatCard as t } from "../../components/StatCard.js";
3
+ import { LoadingSkeleton as n } from "../../components/LoadingSkeleton.js";
4
+ import { useGetTimeEntryStatsQuery as r } from "../../../generated/wspace-operations.js";
5
+ import { PageLayout as i } from "../../components/PageLayout.js";
6
6
  import { Clock as a, TrendingUp as o, Users as s } from "lucide-react";
7
7
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
8
  //#region src/timecampus/pages/team/TeamPage.tsx
9
9
  function u() {
10
- let { workspaceId: u = "" } = e(), { data: d, loading: f, error: p } = i({ skip: !u }), m = d?.timeEntryStats;
11
- if (f) return /* @__PURE__ */ c(t, {
10
+ let { workspaceId: u = "" } = e(), { data: d, loading: f, error: p } = r({ skip: !u }), m = d?.timeEntryStats;
11
+ if (f) return /* @__PURE__ */ c(i, {
12
12
  title: "Team Overview",
13
13
  description: "Monitor team performance and activity",
14
- children: /* @__PURE__ */ c(r, {
14
+ children: /* @__PURE__ */ c(n, {
15
15
  variant: "card",
16
16
  count: 4
17
17
  })
18
18
  });
19
- if (p) return /* @__PURE__ */ c(t, {
19
+ if (p) return /* @__PURE__ */ c(i, {
20
20
  title: "Team Overview",
21
21
  description: "Monitor team performance and activity",
22
22
  children: /* @__PURE__ */ c("div", {
23
- className: "rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400",
23
+ className: "rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text",
24
24
  children: "Failed to load team data. Please try again later."
25
25
  })
26
26
  });
27
27
  let h = Math.floor(m?.totalHours ?? 0), g = Math.round(((m?.totalHours ?? 0) - h) * 60), _ = m?.totalHours ? Math.round((m.billableHours ?? 0) / m.totalHours * 100) : 0;
28
- return /* @__PURE__ */ l(t, {
28
+ return /* @__PURE__ */ l(i, {
29
29
  title: "Team Overview",
30
30
  description: "Monitor team performance and activity",
31
31
  children: [/* @__PURE__ */ l("div", {
32
32
  className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
33
33
  children: [
34
- /* @__PURE__ */ c(n, {
34
+ /* @__PURE__ */ c(t, {
35
35
  title: "Total Entries",
36
36
  value: String(m?.totalEntries ?? 0),
37
37
  icon: /* @__PURE__ */ c(s, { className: "h-5 w-5" })
38
38
  }),
39
- /* @__PURE__ */ c(n, {
39
+ /* @__PURE__ */ c(t, {
40
40
  title: "Active Timers",
41
41
  value: String(m?.activeTimers ?? 0),
42
42
  icon: /* @__PURE__ */ c(s, { className: "h-5 w-5" }),
43
- iconBgColor: "bg-emerald-100 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400"
43
+ iconBgColor: "bg-status-success-bg text-status-success-text"
44
44
  }),
45
- /* @__PURE__ */ c(n, {
45
+ /* @__PURE__ */ c(t, {
46
46
  title: "Total Hours",
47
47
  value: `${h}h ${g}m`,
48
48
  icon: /* @__PURE__ */ c(a, { className: "h-5 w-5" }),
@@ -51,7 +51,7 @@ function u() {
51
51
  label: "billable hours"
52
52
  }
53
53
  }),
54
- /* @__PURE__ */ c(n, {
54
+ /* @__PURE__ */ c(t, {
55
55
  title: "Billable Rate",
56
56
  value: `${_}%`,
57
57
  icon: /* @__PURE__ */ c(o, { className: "h-5 w-5" }),
@@ -62,7 +62,7 @@ function u() {
62
62
  })
63
63
  ]
64
64
  }), /* @__PURE__ */ l("div", {
65
- className: "rounded-xl border border-border-subtle bg-bg-surface p-6",
65
+ className: "rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6",
66
66
  children: [/* @__PURE__ */ c("h3", {
67
67
  className: "mb-4 text-sm font-semibold text-text-primary",
68
68
  children: "Team Activity Feed"
@@ -1 +1 @@
1
- {"version":3,"file":"TeamPage.js","names":[],"sources":["../../../../src/timecampus/pages/team/TeamPage.tsx"],"sourcesContent":["import { Users, Clock, TrendingUp } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { StatCard } from \"../../components/StatCard\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport { useGetTimeEntryStatsQuery } from \"@/generated/wspace-operations\";\n\nexport function TeamPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useGetTimeEntryStatsQuery({\n skip: !workspaceId,\n });\n\n const stats = data?.timeEntryStats;\n\n if (loading) {\n return (\n <PageLayout\n title=\"Team Overview\"\n description=\"Monitor team performance and activity\"\n >\n <LoadingSkeleton variant=\"card\" count={4} />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Team Overview\"\n description=\"Monitor team performance and activity\"\n >\n <div className=\"rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400\">\n Failed to load team data. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n const totalH = Math.floor(stats?.totalHours ?? 0);\n const totalM = Math.round(((stats?.totalHours ?? 0) - totalH) * 60);\n const billablePercent = stats?.totalHours\n ? Math.round(((stats.billableHours ?? 0) / stats.totalHours) * 100)\n : 0;\n\n return (\n <PageLayout\n title=\"Team Overview\"\n description=\"Monitor team performance and activity\"\n >\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n title=\"Total Entries\"\n value={String(stats?.totalEntries ?? 0)}\n icon={<Users className=\"h-5 w-5\" />}\n />\n <StatCard\n title=\"Active Timers\"\n value={String(stats?.activeTimers ?? 0)}\n icon={<Users className=\"h-5 w-5\" />}\n iconBgColor=\"bg-emerald-100 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400\"\n />\n <StatCard\n title=\"Total Hours\"\n value={`${totalH}h ${totalM}m`}\n icon={<Clock className=\"h-5 w-5\" />}\n trend={{ value: stats?.billableHours ?? 0, label: \"billable hours\" }}\n />\n <StatCard\n title=\"Billable Rate\"\n value={`${billablePercent}%`}\n icon={<TrendingUp className=\"h-5 w-5\" />}\n trend={{ value: billablePercent, label: \"of total hours\" }}\n />\n </div>\n\n <div className=\"rounded-xl border border-border-subtle bg-bg-surface p-6\">\n <h3 className=\"mb-4 text-sm font-semibold text-text-primary\">\n Team Activity Feed\n </h3>\n <div className=\"flex h-48 items-center justify-center rounded-lg border border-dashed border-border-subtle\">\n <p className=\"text-sm text-text-secondary\">\n Team activity timeline will render here\n </p>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,IAAW;CACzB,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAA0B,EACzD,MAAM,CAAC,GACR,CAAC,EAEI,IAAQ,GAAM;AAEpB,KAAI,EACF,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD;GAAiB,SAAQ;GAAO,OAAO;GAAK,CAAA;EACjC,CAAA;AAIjB,KAAI,EACF,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAA+H;GAExI,CAAA;EACK,CAAA;CAIjB,IAAM,IAAS,KAAK,MAAM,GAAO,cAAc,EAAE,EAC3C,IAAS,KAAK,QAAQ,GAAO,cAAc,KAAK,KAAU,GAAG,EAC7D,IAAkB,GAAO,aAC3B,KAAK,OAAQ,EAAM,iBAAiB,KAAK,EAAM,aAAc,IAAI,GACjE;AAEJ,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAFd,CAIE,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,OAAO,GAAO,gBAAgB,EAAE;KACvC,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,OAAO,GAAO,gBAAgB,EAAE;KACvC,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,aAAY;KACZ,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,GAAG,EAAO,IAAI,EAAO;KAC5B,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,OAAO;MAAE,OAAO,GAAO,iBAAiB;MAAG,OAAO;MAAkB;KACpE,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,GAAG,EAAgB;KAC1B,MAAM,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA;KACxC,OAAO;MAAE,OAAO;MAAiB,OAAO;MAAkB;KAC1D,CAAA;IACE;MAEN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cAA+C;IAExD,CAAA,EACL,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAEvC,CAAA;IACA,CAAA,CACF;KACK"}
1
+ {"version":3,"file":"TeamPage.js","names":[],"sources":["../../../../src/timecampus/pages/team/TeamPage.tsx"],"sourcesContent":["import { Users, Clock, TrendingUp } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { StatCard } from \"../../components/StatCard\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport { useGetTimeEntryStatsQuery } from \"@/generated/wspace-operations\";\n\nexport function TeamPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useGetTimeEntryStatsQuery({\n skip: !workspaceId,\n });\n\n const stats = data?.timeEntryStats;\n\n if (loading) {\n return (\n <PageLayout\n title=\"Team Overview\"\n description=\"Monitor team performance and activity\"\n >\n <LoadingSkeleton variant=\"card\" count={4} />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Team Overview\"\n description=\"Monitor team performance and activity\"\n >\n <div className=\"rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text\">\n Failed to load team data. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n const totalH = Math.floor(stats?.totalHours ?? 0);\n const totalM = Math.round(((stats?.totalHours ?? 0) - totalH) * 60);\n const billablePercent = stats?.totalHours\n ? Math.round(((stats.billableHours ?? 0) / stats.totalHours) * 100)\n : 0;\n\n return (\n <PageLayout\n title=\"Team Overview\"\n description=\"Monitor team performance and activity\"\n >\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n title=\"Total Entries\"\n value={String(stats?.totalEntries ?? 0)}\n icon={<Users className=\"h-5 w-5\" />}\n />\n <StatCard\n title=\"Active Timers\"\n value={String(stats?.activeTimers ?? 0)}\n icon={<Users className=\"h-5 w-5\" />}\n iconBgColor=\"bg-status-success-bg text-status-success-text\"\n />\n <StatCard\n title=\"Total Hours\"\n value={`${totalH}h ${totalM}m`}\n icon={<Clock className=\"h-5 w-5\" />}\n trend={{ value: stats?.billableHours ?? 0, label: \"billable hours\" }}\n />\n <StatCard\n title=\"Billable Rate\"\n value={`${billablePercent}%`}\n icon={<TrendingUp className=\"h-5 w-5\" />}\n trend={{ value: billablePercent, label: \"of total hours\" }}\n />\n </div>\n\n <div className=\"rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6\">\n <h3 className=\"mb-4 text-sm font-semibold text-text-primary\">\n Team Activity Feed\n </h3>\n <div className=\"flex h-48 items-center justify-center rounded-lg border border-dashed border-border-subtle\">\n <p className=\"text-sm text-text-secondary\">\n Team activity timeline will render here\n </p>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,IAAW;CACzB,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAA0B,EACzD,MAAM,CAAC,GACR,CAAC,EAEI,IAAQ,GAAM;AAEpB,KAAI,EACF,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD;GAAiB,SAAQ;GAAO,OAAO;GAAK,CAAA;EACjC,CAAA;AAIjB,KAAI,EACF,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAAoG;GAE7G,CAAA;EACK,CAAA;CAIjB,IAAM,IAAS,KAAK,MAAM,GAAO,cAAc,EAAE,EAC3C,IAAS,KAAK,QAAQ,GAAO,cAAc,KAAK,KAAU,GAAG,EAC7D,IAAkB,GAAO,aAC3B,KAAK,OAAQ,EAAM,iBAAiB,KAAK,EAAM,aAAc,IAAI,GACjE;AAEJ,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAFd,CAIE,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,OAAO,GAAO,gBAAgB,EAAE;KACvC,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,OAAO,GAAO,gBAAgB,EAAE;KACvC,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,aAAY;KACZ,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,GAAG,EAAO,IAAI,EAAO;KAC5B,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,OAAO;MAAE,OAAO,GAAO,iBAAiB;MAAG,OAAO;MAAkB;KACpE,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,GAAG,EAAgB;KAC1B,MAAM,kBAAC,GAAD,EAAY,WAAU,WAAY,CAAA;KACxC,OAAO;MAAE,OAAO;MAAiB,OAAO;MAAkB;KAC1D,CAAA;IACE;MAEN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cAA+C;IAExD,CAAA,EACL,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,KAAD;KAAG,WAAU;eAA8B;KAEvC,CAAA;IACA,CAAA,CACF;KACK"}
@@ -1,60 +1,60 @@
1
1
  import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
2
2
  import { formatRelativeTime as t } from "../../utils/helpers.js";
3
- import { PageLayout as n } from "../../components/PageLayout.js";
4
- import { StatCard as r } from "../../components/StatCard.js";
5
- import { LoadingSkeleton as i } from "../../components/LoadingSkeleton.js";
6
- import { useGetTimeEntryStatsQuery as a, useListWorkPatternsQuery as o } from "../../../generated/wspace-operations.js";
3
+ import { StatCard as n } from "../../components/StatCard.js";
4
+ import { LoadingSkeleton as r } from "../../components/LoadingSkeleton.js";
5
+ import { useGetTimeEntryStatsQuery as i, useListWorkPatternsQuery as a } from "../../../generated/wspace-operations.js";
6
+ import { PageLayout as o } from "../../components/PageLayout.js";
7
7
  import { Activity as s, CheckCircle as c, Clock as l, Users as u } from "lucide-react";
8
8
  import { jsx as d, jsxs as f } from "react/jsx-runtime";
9
9
  //#region src/timecampus/pages/team-activity/TeamActivityPage.tsx
10
10
  function p() {
11
- let { workspaceId: p = "" } = e(), { data: m, loading: h, error: g } = a(), { data: _, loading: v, error: y } = o({ variables: { limit: 10 } }), b = m?.timeEntryStats, x = _?.workPatterns ?? [];
12
- return h && v ? /* @__PURE__ */ d(n, {
11
+ let { workspaceId: p = "" } = e(), { data: m, loading: h, error: g } = i(), { data: _, loading: v, error: y } = a({ variables: { limit: 10 } }), b = m?.timeEntryStats, x = _?.workPatterns ?? [];
12
+ return h && v ? /* @__PURE__ */ d(o, {
13
13
  title: "Team Activity",
14
14
  description: "Real-time team activity feed",
15
- children: /* @__PURE__ */ d(i, {
15
+ children: /* @__PURE__ */ d(r, {
16
16
  variant: "list",
17
17
  count: 5
18
18
  })
19
- }) : g && y ? /* @__PURE__ */ d(n, {
19
+ }) : g && y ? /* @__PURE__ */ d(o, {
20
20
  title: "Team Activity",
21
21
  description: "Real-time team activity feed",
22
22
  children: /* @__PURE__ */ d("div", {
23
- className: "rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400",
23
+ className: "rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text",
24
24
  children: "Failed to load team activity data. Please try again later."
25
25
  })
26
- }) : /* @__PURE__ */ f(n, {
26
+ }) : /* @__PURE__ */ f(o, {
27
27
  title: "Team Activity",
28
28
  description: "Real-time team activity feed",
29
29
  children: [/* @__PURE__ */ f("div", {
30
30
  className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4",
31
31
  children: [
32
- /* @__PURE__ */ d(r, {
32
+ /* @__PURE__ */ d(n, {
33
33
  title: "Active Timers",
34
34
  value: String(b?.activeTimers ?? 0),
35
35
  icon: /* @__PURE__ */ d(u, { className: "h-5 w-5" })
36
36
  }),
37
- /* @__PURE__ */ d(r, {
37
+ /* @__PURE__ */ d(n, {
38
38
  title: "Total Entries",
39
39
  value: String(b?.totalEntries ?? 0),
40
40
  icon: /* @__PURE__ */ d(c, { className: "h-5 w-5" }),
41
41
  description: "Today"
42
42
  }),
43
- /* @__PURE__ */ d(r, {
43
+ /* @__PURE__ */ d(n, {
44
44
  title: "Team Hours",
45
45
  value: `${Math.round(b?.totalHours ?? 0)}h`,
46
46
  icon: /* @__PURE__ */ d(l, { className: "h-5 w-5" }),
47
47
  description: "Total tracked"
48
48
  }),
49
- /* @__PURE__ */ d(r, {
49
+ /* @__PURE__ */ d(n, {
50
50
  title: "Billable Hours",
51
51
  value: `${Math.round(b?.billableHours ?? 0)}h`,
52
52
  icon: /* @__PURE__ */ d(s, { className: "h-5 w-5" }),
53
- iconBgColor: "bg-emerald-100 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400"
53
+ iconBgColor: "bg-status-success-bg text-status-success-text"
54
54
  })
55
55
  ]
56
56
  }), /* @__PURE__ */ f("div", {
57
- className: "rounded-xl border border-border-subtle bg-bg-surface p-6",
57
+ className: "rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6",
58
58
  children: [/* @__PURE__ */ d("h3", {
59
59
  className: "mb-4 text-sm font-semibold text-text-primary",
60
60
  children: "Activity Feed"
@@ -1 +1 @@
1
- {"version":3,"file":"TeamActivityPage.js","names":[],"sources":["../../../../src/timecampus/pages/team-activity/TeamActivityPage.tsx"],"sourcesContent":["import { Activity, Users, Clock, CheckCircle } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { StatCard } from \"../../components/StatCard\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { formatRelativeTime } from \"../../utils/helpers\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useGetTimeEntryStatsQuery,\n useListWorkPatternsQuery,\n type WorkPatternFieldsFragment,\n} from \"@/generated/wspace-operations\";\n\nexport function TeamActivityPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const {\n data: statsData,\n loading: statsLoading,\n error: statsError,\n } = useGetTimeEntryStatsQuery();\n const {\n data: patternsData,\n loading: patternsLoading,\n error: patternsError,\n } = useListWorkPatternsQuery({ variables: { limit: 10 } });\n\n const stats = statsData?.timeEntryStats;\n const patterns = patternsData?.workPatterns ?? [];\n\n if (statsLoading && patternsLoading) {\n return (\n <PageLayout\n title=\"Team Activity\"\n description=\"Real-time team activity feed\"\n >\n <LoadingSkeleton variant=\"list\" count={5} />\n </PageLayout>\n );\n }\n\n if (statsError && patternsError) {\n return (\n <PageLayout\n title=\"Team Activity\"\n description=\"Real-time team activity feed\"\n >\n <div className=\"rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400\">\n Failed to load team activity data. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Team Activity\"\n description=\"Real-time team activity feed\"\n >\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n title=\"Active Timers\"\n value={String(stats?.activeTimers ?? 0)}\n icon={<Users className=\"h-5 w-5\" />}\n />\n <StatCard\n title=\"Total Entries\"\n value={String(stats?.totalEntries ?? 0)}\n icon={<CheckCircle className=\"h-5 w-5\" />}\n description=\"Today\"\n />\n <StatCard\n title=\"Team Hours\"\n value={`${Math.round(stats?.totalHours ?? 0)}h`}\n icon={<Clock className=\"h-5 w-5\" />}\n description=\"Total tracked\"\n />\n <StatCard\n title=\"Billable Hours\"\n value={`${Math.round(stats?.billableHours ?? 0)}h`}\n icon={<Activity className=\"h-5 w-5\" />}\n iconBgColor=\"bg-emerald-100 text-emerald-600 dark:bg-emerald-900/30 dark:text-emerald-400\"\n />\n </div>\n\n <div className=\"rounded-xl border border-border-subtle bg-bg-surface p-6\">\n <h3 className=\"mb-4 text-sm font-semibold text-text-primary\">\n Activity Feed\n </h3>\n <div className=\"space-y-4\">\n {patterns.length === 0 && !patternsLoading && (\n <div className=\"text-center text-sm text-text-secondary\">\n No recent activity data available.\n </div>\n )}\n {patterns.map((pattern: WorkPatternFieldsFragment) => (\n <div key={pattern.id} className=\"flex items-start gap-3\">\n <div className=\"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-action-primary-bg/10\">\n <Activity className=\"h-4 w-4 text-primary\" />\n </div>\n <div className=\"flex-1\">\n <p className=\"text-sm text-text-primary\">\n <span className=\"font-medium\">{pattern.userId}</span>{\" \"}\n {pattern.deepWorkSessions > 0\n ? \"Completed deep work session\"\n : \"Logged work pattern\"}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {pattern.focusHours.toFixed(1)}h focus &middot;{\" \"}\n {pattern.meetingHours.toFixed(1)}h meetings &middot;{\" \"}\n {pattern.productivityScore\n ? `${pattern.productivityScore}% productivity`\n : pattern.date}{\" \"}\n &middot; {formatRelativeTime(pattern.createdAt)}\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;AAYA,SAAgB,IAAmB;CACjC,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EACJ,MAAM,GACN,SAAS,GACT,OAAO,MACL,GAA2B,EACzB,EACJ,MAAM,GACN,SAAS,GACT,OAAO,MACL,EAAyB,EAAE,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC,EAEpD,IAAQ,GAAW,gBACnB,IAAW,GAAc,gBAAgB,EAAE;AA0BjD,QAxBI,KAAgB,IAEhB,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD;GAAiB,SAAQ;GAAO,OAAO;GAAK,CAAA;EACjC,CAAA,GAIb,KAAc,IAEd,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAA+H;GAExI,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAFd,CAIE,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,OAAO,GAAO,gBAAgB,EAAE;KACvC,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,OAAO,GAAO,gBAAgB,EAAE;KACvC,MAAM,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA;KACzC,aAAY;KACZ,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,GAAG,KAAK,MAAM,GAAO,cAAc,EAAE,CAAC;KAC7C,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,aAAY;KACZ,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,GAAG,KAAK,MAAM,GAAO,iBAAiB,EAAE,CAAC;KAChD,MAAM,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;KACtC,aAAY;KACZ,CAAA;IACE;MAEN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cAA+C;IAExD,CAAA,EACL,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,EAAS,WAAW,KAAK,CAAC,KACzB,kBAAC,OAAD;KAAK,WAAU;eAA0C;KAEnD,CAAA,EAEP,EAAS,KAAK,MACb,kBAAC,OAAD;KAAsB,WAAU;eAAhC,CACE,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD,EAAU,WAAU,wBAAyB,CAAA;MACzC,CAAA,EACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAb;QACE,kBAAC,QAAD;SAAM,WAAU;mBAAe,EAAQ;SAAc,CAAA;QAAC;QACrD,EAAQ,mBAAmB,IACxB,gCACA;QACF;UACJ,kBAAC,KAAD;OAAG,WAAU;iBAAb;QACG,EAAQ,WAAW,QAAQ,EAAE;QAAC;QAAiB;QAC/C,EAAQ,aAAa,QAAQ,EAAE;QAAC;QAAoB;QACpD,EAAQ,oBACL,GAAG,EAAQ,kBAAkB,kBAC7B,EAAQ;QAAM;QAAI;QACZ,EAAmB,EAAQ,UAAU;QAC7C;SACA;QACF;OApBI,EAAQ,GAoBZ,CACN,CACE;MACF;KACK"}
1
+ {"version":3,"file":"TeamActivityPage.js","names":[],"sources":["../../../../src/timecampus/pages/team-activity/TeamActivityPage.tsx"],"sourcesContent":["import { Activity, Users, Clock, CheckCircle } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { StatCard } from \"../../components/StatCard\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { formatRelativeTime } from \"../../utils/helpers\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useGetTimeEntryStatsQuery,\n useListWorkPatternsQuery,\n type WorkPatternFieldsFragment,\n} from \"@/generated/wspace-operations\";\n\nexport function TeamActivityPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const {\n data: statsData,\n loading: statsLoading,\n error: statsError,\n } = useGetTimeEntryStatsQuery();\n const {\n data: patternsData,\n loading: patternsLoading,\n error: patternsError,\n } = useListWorkPatternsQuery({ variables: { limit: 10 } });\n\n const stats = statsData?.timeEntryStats;\n const patterns = patternsData?.workPatterns ?? [];\n\n if (statsLoading && patternsLoading) {\n return (\n <PageLayout\n title=\"Team Activity\"\n description=\"Real-time team activity feed\"\n >\n <LoadingSkeleton variant=\"list\" count={5} />\n </PageLayout>\n );\n }\n\n if (statsError && patternsError) {\n return (\n <PageLayout\n title=\"Team Activity\"\n description=\"Real-time team activity feed\"\n >\n <div className=\"rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text\">\n Failed to load team activity data. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Team Activity\"\n description=\"Real-time team activity feed\"\n >\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-4\">\n <StatCard\n title=\"Active Timers\"\n value={String(stats?.activeTimers ?? 0)}\n icon={<Users className=\"h-5 w-5\" />}\n />\n <StatCard\n title=\"Total Entries\"\n value={String(stats?.totalEntries ?? 0)}\n icon={<CheckCircle className=\"h-5 w-5\" />}\n description=\"Today\"\n />\n <StatCard\n title=\"Team Hours\"\n value={`${Math.round(stats?.totalHours ?? 0)}h`}\n icon={<Clock className=\"h-5 w-5\" />}\n description=\"Total tracked\"\n />\n <StatCard\n title=\"Billable Hours\"\n value={`${Math.round(stats?.billableHours ?? 0)}h`}\n icon={<Activity className=\"h-5 w-5\" />}\n iconBgColor=\"bg-status-success-bg text-status-success-text\"\n />\n </div>\n\n <div className=\"rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6\">\n <h3 className=\"mb-4 text-sm font-semibold text-text-primary\">\n Activity Feed\n </h3>\n <div className=\"space-y-4\">\n {patterns.length === 0 && !patternsLoading && (\n <div className=\"text-center text-sm text-text-secondary\">\n No recent activity data available.\n </div>\n )}\n {patterns.map((pattern: WorkPatternFieldsFragment) => (\n <div key={pattern.id} className=\"flex items-start gap-3\">\n <div className=\"mt-0.5 flex h-8 w-8 shrink-0 items-center justify-center rounded-full bg-action-primary-bg/10\">\n <Activity className=\"h-4 w-4 text-primary\" />\n </div>\n <div className=\"flex-1\">\n <p className=\"text-sm text-text-primary\">\n <span className=\"font-medium\">{pattern.userId}</span>{\" \"}\n {pattern.deepWorkSessions > 0\n ? \"Completed deep work session\"\n : \"Logged work pattern\"}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {pattern.focusHours.toFixed(1)}h focus &middot;{\" \"}\n {pattern.meetingHours.toFixed(1)}h meetings &middot;{\" \"}\n {pattern.productivityScore\n ? `${pattern.productivityScore}% productivity`\n : pattern.date}{\" \"}\n &middot; {formatRelativeTime(pattern.createdAt)}\n </p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;AAYA,SAAgB,IAAmB;CACjC,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EACJ,MAAM,GACN,SAAS,GACT,OAAO,MACL,GAA2B,EACzB,EACJ,MAAM,GACN,SAAS,GACT,OAAO,MACL,EAAyB,EAAE,WAAW,EAAE,OAAO,IAAI,EAAE,CAAC,EAEpD,IAAQ,GAAW,gBACnB,IAAW,GAAc,gBAAgB,EAAE;AA0BjD,QAxBI,KAAgB,IAEhB,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD;GAAiB,SAAQ;GAAO,OAAO;GAAK,CAAA;EACjC,CAAA,GAIb,KAAc,IAEd,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAAoG;GAE7G,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAFd,CAIE,kBAAC,OAAD;GAAK,WAAU;aAAf;IACE,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,OAAO,GAAO,gBAAgB,EAAE;KACvC,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,OAAO,GAAO,gBAAgB,EAAE;KACvC,MAAM,kBAAC,GAAD,EAAa,WAAU,WAAY,CAAA;KACzC,aAAY;KACZ,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,GAAG,KAAK,MAAM,GAAO,cAAc,EAAE,CAAC;KAC7C,MAAM,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA;KACnC,aAAY;KACZ,CAAA;IACF,kBAAC,GAAD;KACE,OAAM;KACN,OAAO,GAAG,KAAK,MAAM,GAAO,iBAAiB,EAAE,CAAC;KAChD,MAAM,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA;KACtC,aAAY;KACZ,CAAA;IACE;MAEN,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,MAAD;IAAI,WAAU;cAA+C;IAExD,CAAA,EACL,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,EAAS,WAAW,KAAK,CAAC,KACzB,kBAAC,OAAD;KAAK,WAAU;eAA0C;KAEnD,CAAA,EAEP,EAAS,KAAK,MACb,kBAAC,OAAD;KAAsB,WAAU;eAAhC,CACE,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD,EAAU,WAAU,wBAAyB,CAAA;MACzC,CAAA,EACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAb;QACE,kBAAC,QAAD;SAAM,WAAU;mBAAe,EAAQ;SAAc,CAAA;QAAC;QACrD,EAAQ,mBAAmB,IACxB,gCACA;QACF;UACJ,kBAAC,KAAD;OAAG,WAAU;iBAAb;QACG,EAAQ,WAAW,QAAQ,EAAE;QAAC;QAAiB;QAC/C,EAAQ,aAAa,QAAQ,EAAE;QAAC;QAAoB;QACpD,EAAQ,oBACL,GAAG,EAAQ,kBAAkB,kBAC7B,EAAQ;QAAM;QAAI;QACZ,EAAmB,EAAQ,UAAU;QAC7C;SACA;QACF;OApBI,EAAQ,GAoBZ,CACN,CACE;MACF;KACK"}
@@ -1,14 +1,14 @@
1
1
  import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
2
- import { PageLayout as t } from "../../components/PageLayout.js";
3
- import { LoadingSkeleton as n } from "../../components/LoadingSkeleton.js";
4
- import { useGetConfigurationByKeyQuery as r, useSetConfigurationMutation as i } from "../../../generated/wspace-operations.js";
2
+ import { LoadingSkeleton as t } from "../../components/LoadingSkeleton.js";
3
+ import { useGetConfigurationByKeyQuery as n, useSetConfigurationMutation as r } from "../../../generated/wspace-operations.js";
4
+ import { PageLayout as i } from "../../components/PageLayout.js";
5
5
  import { useEffect as a, useState as o } from "react";
6
6
  import { Settings as s } from "lucide-react";
7
7
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
8
  //#region src/timecampus/pages/team-activity/TeamActivitySettingsPage.tsx
9
9
  var u = "team-activity.settings";
10
10
  function d() {
11
- let { workspaceId: d = "" } = e(), { data: f, loading: p, error: m } = r({ variables: { key: u } }), [h, { loading: g }] = i(), _ = f?.configurationByKey?.value ?? {}, [v, y] = o(!0), [b, x] = o(!0), [S, C] = o(!0), [w, T] = o(!0);
11
+ let { workspaceId: d = "" } = e(), { data: f, loading: p, error: m } = n({ variables: { key: u } }), [h, { loading: g }] = r(), _ = f?.configurationByKey?.value ?? {}, [v, y] = o(!0), [b, x] = o(!0), [S, C] = o(!0), [w, T] = o(!0);
12
12
  return a(() => {
13
13
  _ && (y(_.showTimerEvents ?? !0), x(_.showTaskCompletions ?? !0), C(_.showCheckIns ?? !0), T(_.realTimeUpdates ?? !0));
14
14
  }, [
@@ -16,24 +16,24 @@ function d() {
16
16
  _.showTaskCompletions,
17
17
  _.showCheckIns,
18
18
  _.realTimeUpdates
19
- ]), p ? /* @__PURE__ */ c(t, {
19
+ ]), p ? /* @__PURE__ */ c(i, {
20
20
  title: "Team Activity Settings",
21
21
  description: "Configure team activity tracking",
22
- children: /* @__PURE__ */ c(n, { variant: "detail" })
23
- }) : m ? /* @__PURE__ */ c(t, {
22
+ children: /* @__PURE__ */ c(t, { variant: "detail" })
23
+ }) : m ? /* @__PURE__ */ c(i, {
24
24
  title: "Team Activity Settings",
25
25
  description: "Configure team activity tracking",
26
26
  children: /* @__PURE__ */ c("div", {
27
- className: "rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400",
27
+ className: "rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text",
28
28
  children: "Failed to load activity settings. Please try again later."
29
29
  })
30
- }) : /* @__PURE__ */ c(t, {
30
+ }) : /* @__PURE__ */ c(i, {
31
31
  title: "Team Activity Settings",
32
32
  description: "Configure team activity tracking",
33
33
  children: /* @__PURE__ */ l("div", {
34
34
  className: "mx-auto max-w-2xl space-y-6",
35
35
  children: [/* @__PURE__ */ l("div", {
36
- className: "rounded-xl border border-border-subtle bg-bg-surface p-6",
36
+ className: "rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6",
37
37
  children: [/* @__PURE__ */ l("h3", {
38
38
  className: "mb-4 flex items-center gap-2 text-sm font-semibold text-text-primary",
39
39
  children: [/* @__PURE__ */ c(s, { className: "h-4 w-4" }), "Activity Feed Settings"]
@@ -1 +1 @@
1
- {"version":3,"file":"TeamActivitySettingsPage.js","names":[],"sources":["../../../../src/timecampus/pages/team-activity/TeamActivitySettingsPage.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\nimport { Settings } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useGetConfigurationByKeyQuery,\n useSetConfigurationMutation,\n} from \"@/generated/wspace-operations\";\n\nconst CONFIG_KEY = \"team-activity.settings\";\n\nexport function TeamActivitySettingsPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useGetConfigurationByKeyQuery({\n variables: { key: CONFIG_KEY },\n });\n\n const [setConfiguration, { loading: saving }] = useSetConfigurationMutation();\n\n const configValue = (data?.configurationByKey?.value ?? {}) as Record<\n string,\n boolean\n >;\n\n const [showTimerEvents, setShowTimerEvents] = useState(true);\n const [showTaskCompletions, setShowTaskCompletions] = useState(true);\n const [showCheckIns, setShowCheckIns] = useState(true);\n const [realTimeUpdates, setRealTimeUpdates] = useState(true);\n\n useEffect(() => {\n if (configValue) {\n setShowTimerEvents(configValue.showTimerEvents ?? true);\n setShowTaskCompletions(configValue.showTaskCompletions ?? true);\n setShowCheckIns(configValue.showCheckIns ?? true);\n setRealTimeUpdates(configValue.realTimeUpdates ?? true);\n }\n }, [\n configValue.showTimerEvents,\n configValue.showTaskCompletions,\n configValue.showCheckIns,\n configValue.realTimeUpdates,\n ]);\n\n const handleSave = async () => {\n await setConfiguration({\n variables: {\n input: {\n key: CONFIG_KEY,\n value: {\n showTimerEvents,\n showTaskCompletions,\n showCheckIns,\n realTimeUpdates,\n },\n description: \"Team activity feed settings\",\n scope: \"USER\" as never,\n },\n },\n });\n };\n\n if (loading) {\n return (\n <PageLayout\n title=\"Team Activity Settings\"\n description=\"Configure team activity tracking\"\n >\n <LoadingSkeleton variant=\"detail\" />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Team Activity Settings\"\n description=\"Configure team activity tracking\"\n >\n <div className=\"rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-600 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400\">\n Failed to load activity settings. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Team Activity Settings\"\n description=\"Configure team activity tracking\"\n >\n <div className=\"mx-auto max-w-2xl space-y-6\">\n <div className=\"rounded-xl border border-border-subtle bg-bg-surface p-6\">\n <h3 className=\"mb-4 flex items-center gap-2 text-sm font-semibold text-text-primary\">\n <Settings className=\"h-4 w-4\" />\n Activity Feed Settings\n </h3>\n <div className=\"space-y-3\">\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">Show timer events</span>\n <input\n type=\"checkbox\"\n checked={showTimerEvents}\n onChange={(e) => setShowTimerEvents(e.target.checked)}\n className=\"h-4 w-4 rounded border-border-subtle\"\n />\n </label>\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">\n Show task completions\n </span>\n <input\n type=\"checkbox\"\n checked={showTaskCompletions}\n onChange={(e) => setShowTaskCompletions(e.target.checked)}\n className=\"h-4 w-4 rounded border-border-subtle\"\n />\n </label>\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">Show check-ins</span>\n <input\n type=\"checkbox\"\n checked={showCheckIns}\n onChange={(e) => setShowCheckIns(e.target.checked)}\n className=\"h-4 w-4 rounded border-border-subtle\"\n />\n </label>\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">Real-time updates</span>\n <input\n type=\"checkbox\"\n checked={realTimeUpdates}\n onChange={(e) => setRealTimeUpdates(e.target.checked)}\n className=\"h-4 w-4 rounded border-border-subtle\"\n />\n </label>\n </div>\n </div>\n <div className=\"flex justify-end\">\n <button\n onClick={handleSave}\n disabled={saving}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {saving ? \"Saving...\" : \"Save Settings\"}\n </button>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAUA,IAAM,IAAa;AAEnB,SAAgB,IAA2B;CACzC,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAA8B,EAC7D,WAAW,EAAE,KAAK,GAAY,EAC/B,CAAC,EAEI,CAAC,GAAkB,EAAE,SAAS,OAAY,GAA6B,EAEvE,IAAe,GAAM,oBAAoB,SAAS,EAAE,EAKpD,CAAC,GAAiB,KAAsB,EAAS,GAAK,EACtD,CAAC,GAAqB,KAA0B,EAAS,GAAK,EAC9D,CAAC,GAAc,KAAmB,EAAS,GAAK,EAChD,CAAC,GAAiB,KAAsB,EAAS,GAAK;AA0D5D,QAxDA,QAAgB;AACd,EAAI,MACF,EAAmB,EAAY,mBAAmB,GAAK,EACvD,EAAuB,EAAY,uBAAuB,GAAK,EAC/D,EAAgB,EAAY,gBAAgB,GAAK,EACjD,EAAmB,EAAY,mBAAmB,GAAK;IAExD;EACD,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACb,CAAC,EAoBE,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD,EAAiB,SAAQ,UAAW,CAAA;EACzB,CAAA,GAIb,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAA+H;GAExI,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,MAAD;KAAI,WAAU;eAAd,CACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA,EAAA,yBAE7B;QACL,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA4B;QAAwB,CAAA,EACpE,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAmB,EAAE,OAAO,QAAQ;QACrD,WAAU;QACV,CAAA,CACI;;MACR,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA4B;QAErC,CAAA,EACP,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAuB,EAAE,OAAO,QAAQ;QACzD,WAAU;QACV,CAAA,CACI;;MACR,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA4B;QAAqB,CAAA,EACjE,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAgB,EAAE,OAAO,QAAQ;QAClD,WAAU;QACV,CAAA,CACI;;MACR,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA4B;QAAwB,CAAA,EACpE,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAmB,EAAE,OAAO,QAAQ;QACrD,WAAU;QACV,CAAA,CACI;;MACJ;OACF;OACN,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,UAAD;KACE,SAhGS,YAAY;AAC7B,YAAM,EAAiB,EACrB,WAAW,EACT,OAAO;OACL,KAAK;OACL,OAAO;QACL;QACA;QACA;QACA;QACD;OACD,aAAa;OACb,OAAO;OACR,EACF,EACF,CAAC;;KAkFM,UAAU;KACV,WAAU;eAET,IAAS,cAAc;KACjB,CAAA;IACL,CAAA,CACF;;EACK,CAAA"}
1
+ {"version":3,"file":"TeamActivitySettingsPage.js","names":[],"sources":["../../../../src/timecampus/pages/team-activity/TeamActivitySettingsPage.tsx"],"sourcesContent":["import { useState, useEffect } from \"react\";\nimport { Settings } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useGetConfigurationByKeyQuery,\n useSetConfigurationMutation,\n} from \"@/generated/wspace-operations\";\n\nconst CONFIG_KEY = \"team-activity.settings\";\n\nexport function TeamActivitySettingsPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useGetConfigurationByKeyQuery({\n variables: { key: CONFIG_KEY },\n });\n\n const [setConfiguration, { loading: saving }] = useSetConfigurationMutation();\n\n const configValue = (data?.configurationByKey?.value ?? {}) as Record<\n string,\n boolean\n >;\n\n const [showTimerEvents, setShowTimerEvents] = useState(true);\n const [showTaskCompletions, setShowTaskCompletions] = useState(true);\n const [showCheckIns, setShowCheckIns] = useState(true);\n const [realTimeUpdates, setRealTimeUpdates] = useState(true);\n\n useEffect(() => {\n if (configValue) {\n setShowTimerEvents(configValue.showTimerEvents ?? true);\n setShowTaskCompletions(configValue.showTaskCompletions ?? true);\n setShowCheckIns(configValue.showCheckIns ?? true);\n setRealTimeUpdates(configValue.realTimeUpdates ?? true);\n }\n }, [\n configValue.showTimerEvents,\n configValue.showTaskCompletions,\n configValue.showCheckIns,\n configValue.realTimeUpdates,\n ]);\n\n const handleSave = async () => {\n await setConfiguration({\n variables: {\n input: {\n key: CONFIG_KEY,\n value: {\n showTimerEvents,\n showTaskCompletions,\n showCheckIns,\n realTimeUpdates,\n },\n description: \"Team activity feed settings\",\n scope: \"USER\" as never,\n },\n },\n });\n };\n\n if (loading) {\n return (\n <PageLayout\n title=\"Team Activity Settings\"\n description=\"Configure team activity tracking\"\n >\n <LoadingSkeleton variant=\"detail\" />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Team Activity Settings\"\n description=\"Configure team activity tracking\"\n >\n <div className=\"rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text\">\n Failed to load activity settings. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Team Activity Settings\"\n description=\"Configure team activity tracking\"\n >\n <div className=\"mx-auto max-w-2xl space-y-6\">\n <div className=\"rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6\">\n <h3 className=\"mb-4 flex items-center gap-2 text-sm font-semibold text-text-primary\">\n <Settings className=\"h-4 w-4\" />\n Activity Feed Settings\n </h3>\n <div className=\"space-y-3\">\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">\n Show timer events\n </span>\n <input\n type=\"checkbox\"\n checked={showTimerEvents}\n onChange={(e) => setShowTimerEvents(e.target.checked)}\n className=\"h-4 w-4 rounded border-border-subtle\"\n />\n </label>\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">\n Show task completions\n </span>\n <input\n type=\"checkbox\"\n checked={showTaskCompletions}\n onChange={(e) => setShowTaskCompletions(e.target.checked)}\n className=\"h-4 w-4 rounded border-border-subtle\"\n />\n </label>\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">Show check-ins</span>\n <input\n type=\"checkbox\"\n checked={showCheckIns}\n onChange={(e) => setShowCheckIns(e.target.checked)}\n className=\"h-4 w-4 rounded border-border-subtle\"\n />\n </label>\n <label className=\"flex items-center justify-between\">\n <span className=\"text-sm text-text-primary\">\n Real-time updates\n </span>\n <input\n type=\"checkbox\"\n checked={realTimeUpdates}\n onChange={(e) => setRealTimeUpdates(e.target.checked)}\n className=\"h-4 w-4 rounded border-border-subtle\"\n />\n </label>\n </div>\n </div>\n <div className=\"flex justify-end\">\n <button\n onClick={handleSave}\n disabled={saving}\n className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90 disabled:opacity-50\"\n >\n {saving ? \"Saving...\" : \"Save Settings\"}\n </button>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAUA,IAAM,IAAa;AAEnB,SAAgB,IAA2B;CACzC,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAA8B,EAC7D,WAAW,EAAE,KAAK,GAAY,EAC/B,CAAC,EAEI,CAAC,GAAkB,EAAE,SAAS,OAAY,GAA6B,EAEvE,IAAe,GAAM,oBAAoB,SAAS,EAAE,EAKpD,CAAC,GAAiB,KAAsB,EAAS,GAAK,EACtD,CAAC,GAAqB,KAA0B,EAAS,GAAK,EAC9D,CAAC,GAAc,KAAmB,EAAS,GAAK,EAChD,CAAC,GAAiB,KAAsB,EAAS,GAAK;AA0D5D,QAxDA,QAAgB;AACd,EAAI,MACF,EAAmB,EAAY,mBAAmB,GAAK,EACvD,EAAuB,EAAY,uBAAuB,GAAK,EAC/D,EAAgB,EAAY,gBAAgB,GAAK,EACjD,EAAmB,EAAY,mBAAmB,GAAK;IAExD;EACD,EAAY;EACZ,EAAY;EACZ,EAAY;EACZ,EAAY;EACb,CAAC,EAoBE,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD,EAAiB,SAAQ,UAAW,CAAA;EACzB,CAAA,GAIb,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAAoG;GAE7G,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,MAAD;KAAI,WAAU;eAAd,CACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA,EAAA,yBAE7B;QACL,kBAAC,OAAD;KAAK,WAAU;eAAf;MACE,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA4B;QAErC,CAAA,EACP,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAmB,EAAE,OAAO,QAAQ;QACrD,WAAU;QACV,CAAA,CACI;;MACR,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA4B;QAErC,CAAA,EACP,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAuB,EAAE,OAAO,QAAQ;QACzD,WAAU;QACV,CAAA,CACI;;MACR,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA4B;QAAqB,CAAA,EACjE,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAgB,EAAE,OAAO,QAAQ;QAClD,WAAU;QACV,CAAA,CACI;;MACR,kBAAC,SAAD;OAAO,WAAU;iBAAjB,CACE,kBAAC,QAAD;QAAM,WAAU;kBAA4B;QAErC,CAAA,EACP,kBAAC,SAAD;QACE,MAAK;QACL,SAAS;QACT,WAAW,MAAM,EAAmB,EAAE,OAAO,QAAQ;QACrD,WAAU;QACV,CAAA,CACI;;MACJ;OACF;OACN,kBAAC,OAAD;IAAK,WAAU;cACb,kBAAC,UAAD;KACE,SApGS,YAAY;AAC7B,YAAM,EAAiB,EACrB,WAAW,EACT,OAAO;OACL,KAAK;OACL,OAAO;QACL;QACA;QACA;QACA;QACD;OACD,aAAa;OACb,OAAO;OACR,EACF,EACF,CAAC;;KAsFM,UAAU;KACV,WAAU;eAET,IAAS,cAAc;KACjB,CAAA;IACL,CAAA,CACF;;EACK,CAAA"}
@@ -1,13 +1,13 @@
1
1
  import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
2
- import { PageLayout as t } from "../../components/PageLayout.js";
3
- import { LoadingSkeleton as n } from "../../components/LoadingSkeleton.js";
4
- import { useGetConfigurationQuery as r } from "../../../generated/wspace-operations.js";
2
+ import { LoadingSkeleton as t } from "../../components/LoadingSkeleton.js";
3
+ import { useGetConfigurationQuery as n } from "../../../generated/wspace-operations.js";
4
+ import { PageLayout as r } from "../../components/PageLayout.js";
5
5
  import { CheckCircle as i, Loader2 as a, Sparkles as o } from "lucide-react";
6
6
  import { useParams as s } from "react-router-dom";
7
7
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
8
8
  //#region src/timecampus/pages/templates/TemplateApplicationPage.tsx
9
9
  function u() {
10
- let { applicationId: u } = s(), { workspaceId: d = "" } = e(), { data: f, loading: p, error: m } = r({
10
+ let { applicationId: u } = s(), { workspaceId: d = "" } = e(), { data: f, loading: p, error: m } = n({
11
11
  variables: { id: u ?? "" },
12
12
  skip: !u
13
13
  }), h = (f?.configuration?.value ?? {}).applicationSteps ?? [
@@ -32,24 +32,24 @@ function u() {
32
32
  status: "pending"
33
33
  }
34
34
  ];
35
- return p ? /* @__PURE__ */ c(t, {
35
+ return p ? /* @__PURE__ */ c(r, {
36
36
  title: "Applying Template",
37
37
  description: "Loading...",
38
- children: /* @__PURE__ */ c(n, { variant: "detail" })
39
- }) : m ? /* @__PURE__ */ c(t, {
38
+ children: /* @__PURE__ */ c(t, { variant: "detail" })
39
+ }) : m ? /* @__PURE__ */ c(r, {
40
40
  title: "Applying Template",
41
41
  description: `Application ID: ${u}`,
42
42
  children: /* @__PURE__ */ c("div", {
43
- className: "rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400",
43
+ className: "rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text",
44
44
  children: "Failed to load template application data. Please try again later."
45
45
  })
46
- }) : /* @__PURE__ */ c(t, {
46
+ }) : /* @__PURE__ */ c(r, {
47
47
  title: "Applying Template",
48
48
  description: `Application ID: ${u}`,
49
49
  children: /* @__PURE__ */ c("div", {
50
50
  className: "mx-auto max-w-lg",
51
51
  children: /* @__PURE__ */ l("div", {
52
- className: "rounded-xl border border-border-subtle bg-bg-surface p-6 text-center",
52
+ className: "rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6 text-center",
53
53
  children: [
54
54
  /* @__PURE__ */ c("div", {
55
55
  className: "flex h-16 w-16 mx-auto items-center justify-center rounded-full bg-action-primary-bg/10",
@@ -67,7 +67,7 @@ function u() {
67
67
  className: "mt-6 space-y-3 text-left",
68
68
  children: h.map((e) => /* @__PURE__ */ l("div", {
69
69
  className: "flex items-center gap-3 rounded-lg border border-border-subtle p-3",
70
- children: [e.status === "completed" ? /* @__PURE__ */ c(i, { className: "h-5 w-5 text-emerald-500" }) : e.status === "in-progress" ? /* @__PURE__ */ c(a, { className: "h-5 w-5 text-primary animate-spin" }) : /* @__PURE__ */ c("div", { className: "h-5 w-5 rounded-full border-2 border-muted" }), /* @__PURE__ */ c("span", {
70
+ children: [e.status === "completed" ? /* @__PURE__ */ c(i, { className: "h-5 w-5 text-status-success-text" }) : e.status === "in-progress" ? /* @__PURE__ */ c(a, { className: "h-5 w-5 text-primary animate-spin" }) : /* @__PURE__ */ c("div", { className: "h-5 w-5 rounded-full border-2 border-muted" }), /* @__PURE__ */ c("span", {
71
71
  className: `text-sm ${e.status === "completed" ? "text-text-secondary" : "text-text-primary"}`,
72
72
  children: e.label
73
73
  })]
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateApplicationPage.js","names":[],"sources":["../../../../src/timecampus/pages/templates/TemplateApplicationPage.tsx"],"sourcesContent":["import { useParams } from \"react-router-dom\";\nimport { Sparkles, CheckCircle, Loader2 } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport { useGetConfigurationQuery } from \"@/generated/wspace-operations\";\n\nexport function TemplateApplicationPage() {\n const { applicationId } = useParams<{ applicationId: string }>();\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useGetConfigurationQuery({\n variables: { id: applicationId ?? \"\" },\n skip: !applicationId,\n });\n\n const config = data?.configuration;\n const val = (config?.value as Record<string, unknown>) ?? {};\n\n // Application steps from configuration or defaults\n const configuredSteps = val.applicationSteps as\n | Array<{ label: string; status: string }>\n | undefined;\n const steps = configuredSteps ?? [\n { label: \"Project structure\", status: \"pending\" },\n { label: \"Time categories\", status: \"pending\" },\n { label: \"Team roles\", status: \"pending\" },\n { label: \"Dashboard widgets\", status: \"pending\" },\n { label: \"Workflows\", status: \"pending\" },\n ];\n\n if (loading) {\n return (\n <PageLayout title=\"Applying Template\" description=\"Loading...\">\n <LoadingSkeleton variant=\"detail\" />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Applying Template\"\n description={`Application ID: ${applicationId}`}\n >\n <div className=\"rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400\">\n Failed to load template application data. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Applying Template\"\n description={`Application ID: ${applicationId}`}\n >\n <div className=\"mx-auto max-w-lg\">\n <div className=\"rounded-xl border border-border-subtle bg-bg-surface p-6 text-center\">\n <div className=\"flex h-16 w-16 mx-auto items-center justify-center rounded-full bg-action-primary-bg/10\">\n <Sparkles className=\"h-8 w-8 text-primary\" />\n </div>\n <h2 className=\"mt-4 text-lg font-semibold text-text-primary\">\n Setting up your workspace\n </h2>\n <p className=\"mt-1 text-sm text-text-secondary\">\n Applying the template configuration...\n </p>\n\n <div className=\"mt-6 space-y-3 text-left\">\n {steps.map((step) => (\n <div\n key={step.label}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle p-3\"\n >\n {step.status === \"completed\" ? (\n <CheckCircle className=\"h-5 w-5 text-emerald-500\" />\n ) : step.status === \"in-progress\" ? (\n <Loader2 className=\"h-5 w-5 text-primary animate-spin\" />\n ) : (\n <div className=\"h-5 w-5 rounded-full border-2 border-muted\" />\n )}\n <span\n className={`text-sm ${step.status === \"completed\" ? \"text-text-secondary\" : \"text-text-primary\"}`}\n >\n {step.label}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,IAA0B;CACxC,IAAM,EAAE,qBAAkB,GAAsC,EAC1D,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAAyB;EACxD,WAAW,EAAE,IAAI,KAAiB,IAAI;EACtC,MAAM,CAAC;EACR,CAAC,EASI,KAPS,GAAM,eACA,SAAqC,EAAE,EAGhC,oBAGK;EAC/B;GAAE,OAAO;GAAqB,QAAQ;GAAW;EACjD;GAAE,OAAO;GAAmB,QAAQ;GAAW;EAC/C;GAAE,OAAO;GAAc,QAAQ;GAAW;EAC1C;GAAE,OAAO;GAAqB,QAAQ;GAAW;EACjD;GAAE,OAAO;GAAa,QAAQ;GAAW;EAC1C;AAuBD,QArBI,IAEA,kBAAC,GAAD;EAAY,OAAM;EAAoB,aAAY;YAChD,kBAAC,GAAD,EAAiB,SAAQ,UAAW,CAAA;EACzB,CAAA,GAIb,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAa,mBAAmB;YAEhC,kBAAC,OAAD;GAAK,WAAU;aAA+H;GAExI,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAa,mBAAmB;YAEhC,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD,EAAU,WAAU,wBAAyB,CAAA;MACzC,CAAA;KACN,kBAAC,MAAD;MAAI,WAAU;gBAA+C;MAExD,CAAA;KACL,kBAAC,KAAD;MAAG,WAAU;gBAAmC;MAE5C,CAAA;KAEJ,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAM,KAAK,MACV,kBAAC,OAAD;OAEE,WAAU;iBAFZ,CAIG,EAAK,WAAW,cACf,kBAAC,GAAD,EAAa,WAAU,4BAA6B,CAAA,GAClD,EAAK,WAAW,gBAClB,kBAAC,GAAD,EAAS,WAAU,qCAAsC,CAAA,GAEzD,kBAAC,OAAD,EAAK,WAAU,8CAA+C,CAAA,EAEhE,kBAAC,QAAD;QACE,WAAW,WAAW,EAAK,WAAW,cAAc,wBAAwB;kBAE3E,EAAK;QACD,CAAA,CACH;SAfC,EAAK,MAeN,CACN;MACE,CAAA;KACF;;GACF,CAAA;EACK,CAAA"}
1
+ {"version":3,"file":"TemplateApplicationPage.js","names":[],"sources":["../../../../src/timecampus/pages/templates/TemplateApplicationPage.tsx"],"sourcesContent":["import { useParams } from \"react-router-dom\";\nimport { Sparkles, CheckCircle, Loader2 } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport { useGetConfigurationQuery } from \"@/generated/wspace-operations\";\n\nexport function TemplateApplicationPage() {\n const { applicationId } = useParams<{ applicationId: string }>();\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useGetConfigurationQuery({\n variables: { id: applicationId ?? \"\" },\n skip: !applicationId,\n });\n\n const config = data?.configuration;\n const val = (config?.value as Record<string, unknown>) ?? {};\n\n // Application steps from configuration or defaults\n const configuredSteps = val.applicationSteps as\n | Array<{ label: string; status: string }>\n | undefined;\n const steps = configuredSteps ?? [\n { label: \"Project structure\", status: \"pending\" },\n { label: \"Time categories\", status: \"pending\" },\n { label: \"Team roles\", status: \"pending\" },\n { label: \"Dashboard widgets\", status: \"pending\" },\n { label: \"Workflows\", status: \"pending\" },\n ];\n\n if (loading) {\n return (\n <PageLayout title=\"Applying Template\" description=\"Loading...\">\n <LoadingSkeleton variant=\"detail\" />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Applying Template\"\n description={`Application ID: ${applicationId}`}\n >\n <div className=\"rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text\">\n Failed to load template application data. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Applying Template\"\n description={`Application ID: ${applicationId}`}\n >\n <div className=\"mx-auto max-w-lg\">\n <div className=\"rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6 text-center\">\n <div className=\"flex h-16 w-16 mx-auto items-center justify-center rounded-full bg-action-primary-bg/10\">\n <Sparkles className=\"h-8 w-8 text-primary\" />\n </div>\n <h2 className=\"mt-4 text-lg font-semibold text-text-primary\">\n Setting up your workspace\n </h2>\n <p className=\"mt-1 text-sm text-text-secondary\">\n Applying the template configuration...\n </p>\n\n <div className=\"mt-6 space-y-3 text-left\">\n {steps.map((step) => (\n <div\n key={step.label}\n className=\"flex items-center gap-3 rounded-lg border border-border-subtle p-3\"\n >\n {step.status === \"completed\" ? (\n <CheckCircle className=\"h-5 w-5 text-status-success-text\" />\n ) : step.status === \"in-progress\" ? (\n <Loader2 className=\"h-5 w-5 text-primary animate-spin\" />\n ) : (\n <div className=\"h-5 w-5 rounded-full border-2 border-muted\" />\n )}\n <span\n className={`text-sm ${step.status === \"completed\" ? \"text-text-secondary\" : \"text-text-primary\"}`}\n >\n {step.label}\n </span>\n </div>\n ))}\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,IAA0B;CACxC,IAAM,EAAE,qBAAkB,GAAsC,EAC1D,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAAyB;EACxD,WAAW,EAAE,IAAI,KAAiB,IAAI;EACtC,MAAM,CAAC;EACR,CAAC,EASI,KAPS,GAAM,eACA,SAAqC,EAAE,EAGhC,oBAGK;EAC/B;GAAE,OAAO;GAAqB,QAAQ;GAAW;EACjD;GAAE,OAAO;GAAmB,QAAQ;GAAW;EAC/C;GAAE,OAAO;GAAc,QAAQ;GAAW;EAC1C;GAAE,OAAO;GAAqB,QAAQ;GAAW;EACjD;GAAE,OAAO;GAAa,QAAQ;GAAW;EAC1C;AAuBD,QArBI,IAEA,kBAAC,GAAD;EAAY,OAAM;EAAoB,aAAY;YAChD,kBAAC,GAAD,EAAiB,SAAQ,UAAW,CAAA;EACzB,CAAA,GAIb,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAa,mBAAmB;YAEhC,kBAAC,OAAD;GAAK,WAAU;aAAoG;GAE7G,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAa,mBAAmB;YAEhC,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,GAAD,EAAU,WAAU,wBAAyB,CAAA;MACzC,CAAA;KACN,kBAAC,MAAD;MAAI,WAAU;gBAA+C;MAExD,CAAA;KACL,kBAAC,KAAD;MAAG,WAAU;gBAAmC;MAE5C,CAAA;KAEJ,kBAAC,OAAD;MAAK,WAAU;gBACZ,EAAM,KAAK,MACV,kBAAC,OAAD;OAEE,WAAU;iBAFZ,CAIG,EAAK,WAAW,cACf,kBAAC,GAAD,EAAa,WAAU,oCAAqC,CAAA,GAC1D,EAAK,WAAW,gBAClB,kBAAC,GAAD,EAAS,WAAU,qCAAsC,CAAA,GAEzD,kBAAC,OAAD,EAAK,WAAU,8CAA+C,CAAA,EAEhE,kBAAC,QAAD;QACE,WAAW,WAAW,EAAK,WAAW,cAAc,wBAAwB;kBAE3E,EAAK;QACD,CAAA,CACH;SAfC,EAAK,MAeN,CACN;MACE,CAAA;KACF;;GACF,CAAA;EACK,CAAA"}
@@ -1,21 +1,21 @@
1
1
  import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
2
- import { PageLayout as t } from "../../components/PageLayout.js";
3
- import { LoadingSkeleton as n } from "../../components/LoadingSkeleton.js";
4
- import { useGetConfigurationQuery as r } from "../../../generated/wspace-operations.js";
2
+ import { LoadingSkeleton as t } from "../../components/LoadingSkeleton.js";
3
+ import { useGetConfigurationQuery as n } from "../../../generated/wspace-operations.js";
4
+ import { PageLayout as r } from "../../components/PageLayout.js";
5
5
  import { ArrowLeft as i, CheckCircle as a, Sparkles as o, Star as s, Users as c } from "lucide-react";
6
6
  import { useParams as l } from "react-router-dom";
7
7
  import { jsx as u, jsxs as d } from "react/jsx-runtime";
8
8
  //#region src/timecampus/pages/templates/TemplateDetailPage.tsx
9
9
  function f() {
10
- let { id: f } = l(), { workspaceId: p = "" } = e(), { data: m, loading: h, error: g } = r({
10
+ let { id: f } = l(), { workspaceId: p = "" } = e(), { data: m, loading: h, error: g } = n({
11
11
  variables: { id: f ?? "" },
12
12
  skip: !f
13
13
  }), _ = m?.configuration, v = _?.value ?? {}, y = v.name ?? _?.key?.replace("template.", "") ?? "Template", b = _?.description ?? v.description ?? "A pre-built workspace template for time tracking workflows.", x = v.rating ?? 0, S = v.teamSize ?? "-", C = v.features ?? [];
14
- return h ? /* @__PURE__ */ u(t, {
14
+ return h ? /* @__PURE__ */ u(r, {
15
15
  title: "Template Details",
16
16
  description: "Loading...",
17
- children: /* @__PURE__ */ u(n, { variant: "detail" })
18
- }) : g || !_ ? /* @__PURE__ */ u(t, {
17
+ children: /* @__PURE__ */ u(t, { variant: "detail" })
18
+ }) : g || !_ ? /* @__PURE__ */ u(r, {
19
19
  title: "Template Details",
20
20
  description: `Template ID: ${f}`,
21
21
  actions: /* @__PURE__ */ d("button", {
@@ -23,10 +23,10 @@ function f() {
23
23
  children: [/* @__PURE__ */ u(i, { className: "h-4 w-4" }), "Back to Templates"]
24
24
  }),
25
25
  children: /* @__PURE__ */ u("div", {
26
- className: "rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400",
26
+ className: "rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text",
27
27
  children: g ? "Failed to load template details. Please try again later." : "Template configuration not found."
28
28
  })
29
- }) : /* @__PURE__ */ u(t, {
29
+ }) : /* @__PURE__ */ u(r, {
30
30
  title: "Template Details",
31
31
  description: `Template ID: ${f}`,
32
32
  actions: /* @__PURE__ */ d("button", {
@@ -36,7 +36,7 @@ function f() {
36
36
  children: /* @__PURE__ */ u("div", {
37
37
  className: "mx-auto max-w-2xl",
38
38
  children: /* @__PURE__ */ d("div", {
39
- className: "rounded-xl border border-border-subtle bg-bg-surface p-6",
39
+ className: "rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6",
40
40
  children: [
41
41
  /* @__PURE__ */ d("div", {
42
42
  className: "flex items-start gap-4",
@@ -58,7 +58,7 @@ function f() {
58
58
  className: "mt-2 flex items-center gap-3 text-sm text-text-secondary",
59
59
  children: [/* @__PURE__ */ d("div", {
60
60
  className: "flex items-center gap-1",
61
- children: [/* @__PURE__ */ u(s, { className: "h-4 w-4 fill-amber-400 text-amber-400" }), /* @__PURE__ */ u("span", { children: x })]
61
+ children: [/* @__PURE__ */ u(s, { className: "h-4 w-4 fill-amber-400 text-status-warning-text" }), /* @__PURE__ */ u("span", { children: x })]
62
62
  }), /* @__PURE__ */ d("div", {
63
63
  className: "flex items-center gap-1",
64
64
  children: [/* @__PURE__ */ u(c, { className: "h-4 w-4" }), /* @__PURE__ */ d("span", { children: [S, " members"] })]
@@ -76,7 +76,7 @@ function f() {
76
76
  className: "mt-2 space-y-2",
77
77
  children: C.map((e) => /* @__PURE__ */ d("li", {
78
78
  className: "flex items-center gap-2 text-sm text-text-secondary",
79
- children: [/* @__PURE__ */ u(a, { className: "h-4 w-4 text-emerald-500" }), e]
79
+ children: [/* @__PURE__ */ u(a, { className: "h-4 w-4 text-status-success-text" }), e]
80
80
  }, e))
81
81
  })]
82
82
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"TemplateDetailPage.js","names":[],"sources":["../../../../src/timecampus/pages/templates/TemplateDetailPage.tsx"],"sourcesContent":["import { useParams } from \"react-router-dom\";\nimport { Sparkles, ArrowLeft, Star, Users, CheckCircle } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport { useGetConfigurationQuery } from \"@/generated/wspace-operations\";\n\nexport function TemplateDetailPage() {\n const { id } = useParams<{ id: string }>();\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useGetConfigurationQuery({\n variables: { id: id ?? \"\" },\n skip: !id,\n });\n\n const config = data?.configuration;\n const val = (config?.value as Record<string, unknown>) ?? {};\n const name =\n (val.name as string) ?? config?.key?.replace(\"template.\", \"\") ?? \"Template\";\n const description =\n config?.description ??\n (val.description as string) ??\n \"A pre-built workspace template for time tracking workflows.\";\n const rating = (val.rating as number) ?? 0;\n const teamSize = (val.teamSize as string) ?? \"-\";\n const features = (val.features as string[]) ?? [];\n\n if (loading) {\n return (\n <PageLayout title=\"Template Details\" description=\"Loading...\">\n <LoadingSkeleton variant=\"detail\" />\n </PageLayout>\n );\n }\n\n if (error || !config) {\n return (\n <PageLayout\n title=\"Template Details\"\n description={`Template ID: ${id}`}\n actions={\n <button className=\"inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\">\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Templates\n </button>\n }\n >\n <div className=\"rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400\">\n {error\n ? \"Failed to load template details. Please try again later.\"\n : \"Template configuration not found.\"}\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Template Details\"\n description={`Template ID: ${id}`}\n actions={\n <button className=\"inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\">\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Templates\n </button>\n }\n >\n <div className=\"mx-auto max-w-2xl\">\n <div className=\"rounded-xl border border-border-subtle bg-bg-surface p-6\">\n <div className=\"flex items-start gap-4\">\n <div className=\"flex h-16 w-16 items-center justify-center rounded-xl bg-action-primary-bg/10\">\n <Sparkles className=\"h-8 w-8 text-primary\" />\n </div>\n <div className=\"flex-1\">\n <h2 className=\"text-lg font-semibold text-text-primary\">{name}</h2>\n <p className=\"text-sm text-text-secondary\">{description}</p>\n <div className=\"mt-2 flex items-center gap-3 text-sm text-text-secondary\">\n <div className=\"flex items-center gap-1\">\n <Star className=\"h-4 w-4 fill-amber-400 text-amber-400\" />\n <span>{rating}</span>\n </div>\n <div className=\"flex items-center gap-1\">\n <Users className=\"h-4 w-4\" />\n <span>{teamSize} members</span>\n </div>\n </div>\n </div>\n </div>\n\n {features.length > 0 && (\n <div className=\"mt-6\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n Features\n </h3>\n <ul className=\"mt-2 space-y-2\">\n {features.map((feature) => (\n <li\n key={feature}\n className=\"flex items-center gap-2 text-sm text-text-secondary\"\n >\n <CheckCircle className=\"h-4 w-4 text-emerald-500\" />\n {feature}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n <div className=\"mt-6 flex justify-end\">\n <button className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\">\n Apply Template\n </button>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,IAAqB;CACnC,IAAM,EAAE,UAAO,GAA2B,EACpC,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAAyB;EACxD,WAAW,EAAE,IAAI,KAAM,IAAI;EAC3B,MAAM,CAAC;EACR,CAAC,EAEI,IAAS,GAAM,eACf,IAAO,GAAQ,SAAqC,EAAE,EACtD,IACH,EAAI,QAAmB,GAAQ,KAAK,QAAQ,aAAa,GAAG,IAAI,YAC7D,IACJ,GAAQ,eACP,EAAI,eACL,+DACI,IAAU,EAAI,UAAqB,GACnC,IAAY,EAAI,YAAuB,KACvC,IAAY,EAAI,YAAyB,EAAE;AA+BjD,QA7BI,IAEA,kBAAC,GAAD;EAAY,OAAM;EAAmB,aAAY;YAC/C,kBAAC,GAAD,EAAiB,SAAQ,UAAW,CAAA;EACzB,CAAA,GAIb,KAAS,CAAC,IAEV,kBAAC,GAAD;EACE,OAAM;EACN,aAAa,gBAAgB;EAC7B,SACE,kBAAC,UAAD;GAAQ,WAAU;aAAlB,CACE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAAA,oBAE1B;;YAGX,kBAAC,OAAD;GAAK,WAAU;aACZ,IACG,6DACA;GACA,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAa,gBAAgB;EAC7B,SACE,kBAAC,UAAD;GAAQ,WAAU;aAAlB,CACE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAAA,oBAE1B;;YAGX,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,GAAD,EAAU,WAAU,wBAAyB,CAAA;OACzC,CAAA,EACN,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,MAAD;SAAI,WAAU;mBAA2C;SAAU,CAAA;QACnE,kBAAC,KAAD;SAAG,WAAU;mBAA+B;SAAgB,CAAA;QAC5D,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,GAAD,EAAM,WAAU,yCAA0C,CAAA,EAC1D,kBAAC,QAAD,EAAA,UAAO,GAAc,CAAA,CACjB;aACN,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAC7B,kBAAC,QAAD,EAAA,UAAA,CAAO,GAAS,WAAe,EAAA,CAAA,CAC3B;YACF;;QACF;SACF;;KAEL,EAAS,SAAS,KACjB,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,MAAD;OAAI,WAAU;iBAA0C;OAEnD,CAAA,EACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAS,KAAK,MACb,kBAAC,MAAD;QAEE,WAAU;kBAFZ,CAIE,kBAAC,GAAD,EAAa,WAAU,4BAA6B,CAAA,EACnD,EACE;UALE,EAKF,CACL;OACC,CAAA,CACD;;KAGR,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,UAAD;OAAQ,WAAU;iBAAuH;OAEhI,CAAA;MACL,CAAA;KACF;;GACF,CAAA;EACK,CAAA"}
1
+ {"version":3,"file":"TemplateDetailPage.js","names":[],"sources":["../../../../src/timecampus/pages/templates/TemplateDetailPage.tsx"],"sourcesContent":["import { useParams } from \"react-router-dom\";\nimport { Sparkles, ArrowLeft, Star, Users, CheckCircle } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport { useGetConfigurationQuery } from \"@/generated/wspace-operations\";\n\nexport function TemplateDetailPage() {\n const { id } = useParams<{ id: string }>();\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useGetConfigurationQuery({\n variables: { id: id ?? \"\" },\n skip: !id,\n });\n\n const config = data?.configuration;\n const val = (config?.value as Record<string, unknown>) ?? {};\n const name =\n (val.name as string) ?? config?.key?.replace(\"template.\", \"\") ?? \"Template\";\n const description =\n config?.description ??\n (val.description as string) ??\n \"A pre-built workspace template for time tracking workflows.\";\n const rating = (val.rating as number) ?? 0;\n const teamSize = (val.teamSize as string) ?? \"-\";\n const features = (val.features as string[]) ?? [];\n\n if (loading) {\n return (\n <PageLayout title=\"Template Details\" description=\"Loading...\">\n <LoadingSkeleton variant=\"detail\" />\n </PageLayout>\n );\n }\n\n if (error || !config) {\n return (\n <PageLayout\n title=\"Template Details\"\n description={`Template ID: ${id}`}\n actions={\n <button className=\"inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\">\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Templates\n </button>\n }\n >\n <div className=\"rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text\">\n {error\n ? \"Failed to load template details. Please try again later.\"\n : \"Template configuration not found.\"}\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Template Details\"\n description={`Template ID: ${id}`}\n actions={\n <button className=\"inline-flex items-center gap-1.5 rounded-md border border-border-subtle px-3 py-2 text-sm font-medium text-text-primary hover:bg-bg-sunken/50\">\n <ArrowLeft className=\"h-4 w-4\" />\n Back to Templates\n </button>\n }\n >\n <div className=\"mx-auto max-w-2xl\">\n <div className=\"rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6\">\n <div className=\"flex items-start gap-4\">\n <div className=\"flex h-16 w-16 items-center justify-center rounded-xl bg-action-primary-bg/10\">\n <Sparkles className=\"h-8 w-8 text-primary\" />\n </div>\n <div className=\"flex-1\">\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {name}\n </h2>\n <p className=\"text-sm text-text-secondary\">{description}</p>\n <div className=\"mt-2 flex items-center gap-3 text-sm text-text-secondary\">\n <div className=\"flex items-center gap-1\">\n <Star className=\"h-4 w-4 fill-amber-400 text-status-warning-text\" />\n <span>{rating}</span>\n </div>\n <div className=\"flex items-center gap-1\">\n <Users className=\"h-4 w-4\" />\n <span>{teamSize} members</span>\n </div>\n </div>\n </div>\n </div>\n\n {features.length > 0 && (\n <div className=\"mt-6\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n Features\n </h3>\n <ul className=\"mt-2 space-y-2\">\n {features.map((feature) => (\n <li\n key={feature}\n className=\"flex items-center gap-2 text-sm text-text-secondary\"\n >\n <CheckCircle className=\"h-4 w-4 text-status-success-text\" />\n {feature}\n </li>\n ))}\n </ul>\n </div>\n )}\n\n <div className=\"mt-6 flex justify-end\">\n <button className=\"rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\">\n Apply Template\n </button>\n </div>\n </div>\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;AAOA,SAAgB,IAAqB;CACnC,IAAM,EAAE,UAAO,GAA2B,EACpC,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAAyB;EACxD,WAAW,EAAE,IAAI,KAAM,IAAI;EAC3B,MAAM,CAAC;EACR,CAAC,EAEI,IAAS,GAAM,eACf,IAAO,GAAQ,SAAqC,EAAE,EACtD,IACH,EAAI,QAAmB,GAAQ,KAAK,QAAQ,aAAa,GAAG,IAAI,YAC7D,IACJ,GAAQ,eACP,EAAI,eACL,+DACI,IAAU,EAAI,UAAqB,GACnC,IAAY,EAAI,YAAuB,KACvC,IAAY,EAAI,YAAyB,EAAE;AA+BjD,QA7BI,IAEA,kBAAC,GAAD;EAAY,OAAM;EAAmB,aAAY;YAC/C,kBAAC,GAAD,EAAiB,SAAQ,UAAW,CAAA;EACzB,CAAA,GAIb,KAAS,CAAC,IAEV,kBAAC,GAAD;EACE,OAAM;EACN,aAAa,gBAAgB;EAC7B,SACE,kBAAC,UAAD;GAAQ,WAAU;aAAlB,CACE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAAA,oBAE1B;;YAGX,kBAAC,OAAD;GAAK,WAAU;aACZ,IACG,6DACA;GACA,CAAA;EACK,CAAA,GAKf,kBAAC,GAAD;EACE,OAAM;EACN,aAAa,gBAAgB;EAC7B,SACE,kBAAC,UAAD;GAAQ,WAAU;aAAlB,CACE,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA,EAAA,oBAE1B;;YAGX,kBAAC,OAAD;GAAK,WAAU;aACb,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,GAAD,EAAU,WAAU,wBAAyB,CAAA;OACzC,CAAA,EACN,kBAAC,OAAD;OAAK,WAAU;iBAAf;QACE,kBAAC,MAAD;SAAI,WAAU;mBACX;SACE,CAAA;QACL,kBAAC,KAAD;SAAG,WAAU;mBAA+B;SAAgB,CAAA;QAC5D,kBAAC,OAAD;SAAK,WAAU;mBAAf,CACE,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,GAAD,EAAM,WAAU,mDAAoD,CAAA,EACpE,kBAAC,QAAD,EAAA,UAAO,GAAc,CAAA,CACjB;aACN,kBAAC,OAAD;UAAK,WAAU;oBAAf,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAC7B,kBAAC,QAAD,EAAA,UAAA,CAAO,GAAS,WAAe,EAAA,CAAA,CAC3B;YACF;;QACF;SACF;;KAEL,EAAS,SAAS,KACjB,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,MAAD;OAAI,WAAU;iBAA0C;OAEnD,CAAA,EACL,kBAAC,MAAD;OAAI,WAAU;iBACX,EAAS,KAAK,MACb,kBAAC,MAAD;QAEE,WAAU;kBAFZ,CAIE,kBAAC,GAAD,EAAa,WAAU,oCAAqC,CAAA,EAC3D,EACE;UALE,EAKF,CACL;OACC,CAAA,CACD;;KAGR,kBAAC,OAAD;MAAK,WAAU;gBACb,kBAAC,UAAD;OAAQ,WAAU;iBAAuH;OAEhI,CAAA;MACL,CAAA;KACF;;GACF,CAAA;EACK,CAAA"}
@@ -1,27 +1,27 @@
1
1
  import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
2
- import { PageLayout as t } from "../../components/PageLayout.js";
3
- import { LoadingSkeleton as n } from "../../components/LoadingSkeleton.js";
4
- import { useListConfigurationsQuery as r } from "../../../generated/wspace-operations.js";
2
+ import { LoadingSkeleton as t } from "../../components/LoadingSkeleton.js";
3
+ import { useListConfigurationsQuery as n } from "../../../generated/wspace-operations.js";
4
+ import { PageLayout as r } from "../../components/PageLayout.js";
5
5
  import { Sparkles as i, Star as a, Users as o } from "lucide-react";
6
6
  import { jsx as s, jsxs as c } from "react/jsx-runtime";
7
7
  //#region src/timecampus/pages/templates/TemplatesPage.tsx
8
8
  function l() {
9
- let { workspaceId: l = "" } = e(), { data: u, loading: d, error: f } = r({ variables: { scope: "WORKSPACE" } }), p = (u?.configurations ?? []).filter((e) => e.key.startsWith("template."));
10
- return d ? /* @__PURE__ */ s(t, {
9
+ let { workspaceId: l = "" } = e(), { data: u, loading: d, error: f } = n({ variables: { scope: "WORKSPACE" } }), p = (u?.configurations ?? []).filter((e) => e.key.startsWith("template."));
10
+ return d ? /* @__PURE__ */ s(r, {
11
11
  title: "Templates",
12
12
  description: "Pre-built workspace templates for different workflows",
13
- children: /* @__PURE__ */ s(n, {
13
+ children: /* @__PURE__ */ s(t, {
14
14
  variant: "card",
15
15
  count: 6
16
16
  })
17
- }) : f ? /* @__PURE__ */ s(t, {
17
+ }) : f ? /* @__PURE__ */ s(r, {
18
18
  title: "Templates",
19
19
  description: "Pre-built workspace templates for different workflows",
20
20
  children: /* @__PURE__ */ s("div", {
21
- className: "rounded-lg border border-red-200 bg-red-50 p-4 text-sm text-red-700 dark:border-red-800 dark:bg-red-900/20 dark:text-red-400",
21
+ className: "rounded-lg border border-status-error-bg/40 bg-status-error-bg p-4 text-sm text-status-error-text",
22
22
  children: "Failed to load template configurations. Please try again later."
23
23
  })
24
- }) : /* @__PURE__ */ s(t, {
24
+ }) : /* @__PURE__ */ s(r, {
25
25
  title: "Templates",
26
26
  description: "Pre-built workspace templates for different workflows",
27
27
  children: /* @__PURE__ */ s("div", {
@@ -32,7 +32,7 @@ function l() {
32
32
  }) : p.map((e) => {
33
33
  let t = e.value, n = t.name ?? e.key.replace("template.", ""), r = t.category ?? "General", l = t.industry ?? "Any", u = t.rating ?? 0, d = t.teamSize ?? "-", f = t.downloads ?? 0;
34
34
  return /* @__PURE__ */ c("div", {
35
- className: "rounded-xl border border-border-subtle bg-bg-surface p-5 transition-colors hover:bg-bg-sunken/50 cursor-pointer",
35
+ className: "rounded-xl border border-border-seam bg-gloss-card shadow-pop p-5 transition-colors hover:bg-bg-sunken/50 cursor-pointer",
36
36
  children: [/* @__PURE__ */ c("div", {
37
37
  className: "flex items-start gap-3",
38
38
  children: [/* @__PURE__ */ s("div", {
@@ -58,7 +58,7 @@ function l() {
58
58
  className: "flex items-center gap-3",
59
59
  children: [/* @__PURE__ */ c("div", {
60
60
  className: "flex items-center gap-1",
61
- children: [/* @__PURE__ */ s(a, { className: "h-3 w-3 fill-amber-400 text-amber-400" }), /* @__PURE__ */ s("span", { children: u })]
61
+ children: [/* @__PURE__ */ s(a, { className: "h-3 w-3 fill-amber-400 text-status-warning-text" }), /* @__PURE__ */ s("span", { children: u })]
62
62
  }), /* @__PURE__ */ c("div", {
63
63
  className: "flex items-center gap-1",
64
64
  children: [/* @__PURE__ */ s(o, { className: "h-3 w-3" }), /* @__PURE__ */ s("span", { children: d })]