@burdenoff/microfe-timecampus 2026.608.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.
- package/dist/timecampus/components/ErrorBoundary.js +4 -4
- package/dist/timecampus/components/ErrorBoundary.js.map +1 -1
- package/dist/timecampus/components/LoadingSkeleton.js +8 -8
- package/dist/timecampus/components/LoadingSkeleton.js.map +1 -1
- package/dist/timecampus/components/PageLayout.js +17 -13
- package/dist/timecampus/components/PageLayout.js.map +1 -1
- package/dist/timecampus/components/StatCard.js +22 -19
- package/dist/timecampus/components/StatCard.js.map +1 -1
- package/dist/timecampus/pages/HomePage.js +183 -163
- package/dist/timecampus/pages/HomePage.js.map +1 -1
- package/dist/timecampus/pages/applets/AppletStorePage.js +17 -17
- package/dist/timecampus/pages/applets/AppletStorePage.js.map +1 -1
- package/dist/timecampus/pages/applets/InstalledAppletsPage.js +18 -18
- package/dist/timecampus/pages/applets/InstalledAppletsPage.js.map +1 -1
- package/dist/timecampus/pages/application-usage/ApplicationUsagePage.js +28 -28
- package/dist/timecampus/pages/application-usage/ApplicationUsagePage.js.map +1 -1
- package/dist/timecampus/pages/application-usage/ApplicationUsageSettingsPage.js +19 -19
- package/dist/timecampus/pages/application-usage/ApplicationUsageSettingsPage.js.map +1 -1
- package/dist/timecampus/pages/channels/ChannelsPage.js +15 -15
- package/dist/timecampus/pages/channels/ChannelsPage.js.map +1 -1
- package/dist/timecampus/pages/client-portal/ClientPortalPage.js +22 -22
- package/dist/timecampus/pages/client-portal/ClientPortalPage.js.map +1 -1
- package/dist/timecampus/pages/dashboard/AnalyticsPage.js +20 -20
- package/dist/timecampus/pages/dashboard/AnalyticsPage.js.map +1 -1
- package/dist/timecampus/pages/dashboard/ReportsPage.js +20 -20
- package/dist/timecampus/pages/dashboard/ReportsPage.js.map +1 -1
- package/dist/timecampus/pages/email-tracking/EmailAnalyticsPage.js +18 -18
- package/dist/timecampus/pages/email-tracking/EmailAnalyticsPage.js.map +1 -1
- package/dist/timecampus/pages/email-tracking/EmailSettingsPage.js +22 -22
- package/dist/timecampus/pages/email-tracking/EmailSettingsPage.js.map +1 -1
- package/dist/timecampus/pages/email-tracking/EmailTrackingPage.js +14 -14
- package/dist/timecampus/pages/email-tracking/EmailTrackingPage.js.map +1 -1
- package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js +22 -22
- package/dist/timecampus/pages/expense-tracking/ExpenseTrackingPage.js.map +1 -1
- package/dist/timecampus/pages/focus-score/FocusScorePage.js +27 -27
- package/dist/timecampus/pages/focus-score/FocusScorePage.js.map +1 -1
- package/dist/timecampus/pages/focus-score/FocusScoreSettingsPage.js +19 -19
- package/dist/timecampus/pages/focus-score/FocusScoreSettingsPage.js.map +1 -1
- package/dist/timecampus/pages/geofencing/GeofencingPage.js +16 -16
- package/dist/timecampus/pages/geofencing/GeofencingPage.js.map +1 -1
- package/dist/timecampus/pages/geofencing/GeofencingSettingsPage.js +18 -18
- package/dist/timecampus/pages/geofencing/GeofencingSettingsPage.js.map +1 -1
- package/dist/timecampus/pages/industry-solutions/IndustrySolutionsPage.js +16 -16
- package/dist/timecampus/pages/industry-solutions/IndustrySolutionsPage.js.map +1 -1
- package/dist/timecampus/pages/location-tracking/LocationPrivacySettingsPage.js +21 -21
- package/dist/timecampus/pages/location-tracking/LocationPrivacySettingsPage.js.map +1 -1
- package/dist/timecampus/pages/location-tracking/LocationTrackingPage.js +22 -22
- package/dist/timecampus/pages/location-tracking/LocationTrackingPage.js.map +1 -1
- package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js +18 -18
- package/dist/timecampus/pages/meetings/MeetingAnalyticsPage.js.map +1 -1
- package/dist/timecampus/pages/meetings/MeetingCreatePage.js +16 -16
- package/dist/timecampus/pages/meetings/MeetingCreatePage.js.map +1 -1
- package/dist/timecampus/pages/meetings/MeetingDetailPage.js +29 -29
- package/dist/timecampus/pages/meetings/MeetingDetailPage.js.map +1 -1
- package/dist/timecampus/pages/meetings/MeetingsPage.js +20 -20
- package/dist/timecampus/pages/meetings/MeetingsPage.js.map +1 -1
- package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.js +23 -23
- package/dist/timecampus/pages/pomodoro/PomodoroAnalyticsPage.js.map +1 -1
- package/dist/timecampus/pages/pomodoro/PomodoroPage.js +23 -23
- package/dist/timecampus/pages/pomodoro/PomodoroPage.js.map +1 -1
- package/dist/timecampus/pages/pomodoro/PomodoroSettingsPage.js +30 -30
- package/dist/timecampus/pages/pomodoro/PomodoroSettingsPage.js.map +1 -1
- package/dist/timecampus/pages/projects/ProjectCreatePage.js +19 -19
- package/dist/timecampus/pages/projects/ProjectCreatePage.js.map +1 -1
- package/dist/timecampus/pages/projects/ProjectDetailPage.js +23 -23
- package/dist/timecampus/pages/projects/ProjectDetailPage.js.map +1 -1
- package/dist/timecampus/pages/projects/ProjectsPage.js +20 -20
- package/dist/timecampus/pages/projects/ProjectsPage.js.map +1 -1
- package/dist/timecampus/pages/projects/TasksPage.js +15 -15
- package/dist/timecampus/pages/projects/TasksPage.js.map +1 -1
- package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.js +25 -25
- package/dist/timecampus/pages/resource-planning/ResourcePlanningPage.js.map +1 -1
- package/dist/timecampus/pages/team/TeamAnalyticsPage.js +19 -19
- package/dist/timecampus/pages/team/TeamAnalyticsPage.js.map +1 -1
- package/dist/timecampus/pages/team/TeamMembersPage.js +21 -21
- package/dist/timecampus/pages/team/TeamMembersPage.js.map +1 -1
- package/dist/timecampus/pages/team/TeamPage.js +19 -19
- package/dist/timecampus/pages/team/TeamPage.js.map +1 -1
- package/dist/timecampus/pages/team-activity/TeamActivityPage.js +21 -21
- package/dist/timecampus/pages/team-activity/TeamActivityPage.js.map +1 -1
- package/dist/timecampus/pages/team-activity/TeamActivitySettingsPage.js +20 -20
- package/dist/timecampus/pages/team-activity/TeamActivitySettingsPage.js.map +1 -1
- package/dist/timecampus/pages/templates/TemplateApplicationPage.js +16 -16
- package/dist/timecampus/pages/templates/TemplateApplicationPage.js.map +1 -1
- package/dist/timecampus/pages/templates/TemplateDetailPage.js +21 -21
- package/dist/timecampus/pages/templates/TemplateDetailPage.js.map +1 -1
- package/dist/timecampus/pages/templates/TemplatesPage.js +16 -16
- package/dist/timecampus/pages/templates/TemplatesPage.js.map +1 -1
- package/dist/timecampus/pages/time/TimeEntriesPage.js +25 -25
- package/dist/timecampus/pages/time/TimeEntriesPage.js.map +1 -1
- package/dist/timecampus/pages/time/TimeTrackingPage.js +24 -24
- package/dist/timecampus/pages/time/TimeTrackingPage.js.map +1 -1
- package/dist/timecampus/pages/time/TimerPage.js +20 -20
- package/dist/timecampus/pages/time/TimerPage.js.map +1 -1
- package/dist/timecampus/pages/time-approval/TimeApprovalPage.js +27 -27
- package/dist/timecampus/pages/time-approval/TimeApprovalPage.js.map +1 -1
- package/dist/timecampus/pages/widgets/WidgetDetailPage.js +20 -20
- package/dist/timecampus/pages/widgets/WidgetDetailPage.js.map +1 -1
- package/dist/timecampus/pages/widgets/WidgetsPage.js +18 -18
- package/dist/timecampus/pages/widgets/WidgetsPage.js.map +1 -1
- package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js +23 -23
- package/dist/timecampus/pages/work-patterns/WorkPatternsPage.js.map +1 -1
- package/dist/timecampus/pages/work-patterns/WorkPatternsSettingsPage.js +19 -19
- package/dist/timecampus/pages/work-patterns/WorkPatternsSettingsPage.js.map +1 -1
- package/dist/timecampus/pages/workflows/WorkflowsPage.js +17 -17
- package/dist/timecampus/pages/workflows/WorkflowsPage.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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 } =
|
|
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,26 +16,26 @@ function d() {
|
|
|
16
16
|
_.showTaskCompletions,
|
|
17
17
|
_.showCheckIns,
|
|
18
18
|
_.realTimeUpdates
|
|
19
|
-
]), p ? /* @__PURE__ */ c(
|
|
19
|
+
]), p ? /* @__PURE__ */ c(i, {
|
|
20
20
|
title: "Team Activity Settings",
|
|
21
21
|
description: "Configure team activity tracking",
|
|
22
|
-
children: /* @__PURE__ */ c(
|
|
23
|
-
}) : m ? /* @__PURE__ */ c(
|
|
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-
|
|
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(
|
|
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 bg-card p-6",
|
|
36
|
+
className: "rounded-xl border border-border-seam bg-gloss-card shadow-pop p-6",
|
|
37
37
|
children: [/* @__PURE__ */ l("h3", {
|
|
38
|
-
className: "mb-4 flex items-center gap-2 text-sm font-semibold text-
|
|
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"]
|
|
40
40
|
}), /* @__PURE__ */ l("div", {
|
|
41
41
|
className: "space-y-3",
|
|
@@ -43,49 +43,49 @@ function d() {
|
|
|
43
43
|
/* @__PURE__ */ l("label", {
|
|
44
44
|
className: "flex items-center justify-between",
|
|
45
45
|
children: [/* @__PURE__ */ c("span", {
|
|
46
|
-
className: "text-sm text-
|
|
46
|
+
className: "text-sm text-text-primary",
|
|
47
47
|
children: "Show timer events"
|
|
48
48
|
}), /* @__PURE__ */ c("input", {
|
|
49
49
|
type: "checkbox",
|
|
50
50
|
checked: v,
|
|
51
51
|
onChange: (e) => y(e.target.checked),
|
|
52
|
-
className: "h-4 w-4 rounded border-border"
|
|
52
|
+
className: "h-4 w-4 rounded border-border-subtle"
|
|
53
53
|
})]
|
|
54
54
|
}),
|
|
55
55
|
/* @__PURE__ */ l("label", {
|
|
56
56
|
className: "flex items-center justify-between",
|
|
57
57
|
children: [/* @__PURE__ */ c("span", {
|
|
58
|
-
className: "text-sm text-
|
|
58
|
+
className: "text-sm text-text-primary",
|
|
59
59
|
children: "Show task completions"
|
|
60
60
|
}), /* @__PURE__ */ c("input", {
|
|
61
61
|
type: "checkbox",
|
|
62
62
|
checked: b,
|
|
63
63
|
onChange: (e) => x(e.target.checked),
|
|
64
|
-
className: "h-4 w-4 rounded border-border"
|
|
64
|
+
className: "h-4 w-4 rounded border-border-subtle"
|
|
65
65
|
})]
|
|
66
66
|
}),
|
|
67
67
|
/* @__PURE__ */ l("label", {
|
|
68
68
|
className: "flex items-center justify-between",
|
|
69
69
|
children: [/* @__PURE__ */ c("span", {
|
|
70
|
-
className: "text-sm text-
|
|
70
|
+
className: "text-sm text-text-primary",
|
|
71
71
|
children: "Show check-ins"
|
|
72
72
|
}), /* @__PURE__ */ c("input", {
|
|
73
73
|
type: "checkbox",
|
|
74
74
|
checked: S,
|
|
75
75
|
onChange: (e) => C(e.target.checked),
|
|
76
|
-
className: "h-4 w-4 rounded border-border"
|
|
76
|
+
className: "h-4 w-4 rounded border-border-subtle"
|
|
77
77
|
})]
|
|
78
78
|
}),
|
|
79
79
|
/* @__PURE__ */ l("label", {
|
|
80
80
|
className: "flex items-center justify-between",
|
|
81
81
|
children: [/* @__PURE__ */ c("span", {
|
|
82
|
-
className: "text-sm text-
|
|
82
|
+
className: "text-sm text-text-primary",
|
|
83
83
|
children: "Real-time updates"
|
|
84
84
|
}), /* @__PURE__ */ c("input", {
|
|
85
85
|
type: "checkbox",
|
|
86
86
|
checked: w,
|
|
87
87
|
onChange: (e) => T(e.target.checked),
|
|
88
|
-
className: "h-4 w-4 rounded border-border"
|
|
88
|
+
className: "h-4 w-4 rounded border-border-subtle"
|
|
89
89
|
})]
|
|
90
90
|
})
|
|
91
91
|
]
|
|
@@ -107,7 +107,7 @@ function d() {
|
|
|
107
107
|
} } });
|
|
108
108
|
},
|
|
109
109
|
disabled: g,
|
|
110
|
-
className: "rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-
|
|
110
|
+
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",
|
|
111
111
|
children: g ? "Saving..." : "Save Settings"
|
|
112
112
|
})
|
|
113
113
|
})]
|
|
@@ -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-
|
|
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 {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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 } =
|
|
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,43 +32,43 @@ function u() {
|
|
|
32
32
|
status: "pending"
|
|
33
33
|
}
|
|
34
34
|
];
|
|
35
|
-
return p ? /* @__PURE__ */ c(
|
|
35
|
+
return p ? /* @__PURE__ */ c(r, {
|
|
36
36
|
title: "Applying Template",
|
|
37
37
|
description: "Loading...",
|
|
38
|
-
children: /* @__PURE__ */ c(
|
|
39
|
-
}) : m ? /* @__PURE__ */ c(
|
|
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-
|
|
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(
|
|
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 bg-card 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
|
-
className: "flex h-16 w-16 mx-auto items-center justify-center rounded-full bg-primary/10",
|
|
55
|
+
className: "flex h-16 w-16 mx-auto items-center justify-center rounded-full bg-action-primary-bg/10",
|
|
56
56
|
children: /* @__PURE__ */ c(o, { className: "h-8 w-8 text-primary" })
|
|
57
57
|
}),
|
|
58
58
|
/* @__PURE__ */ c("h2", {
|
|
59
|
-
className: "mt-4 text-lg font-semibold text-
|
|
59
|
+
className: "mt-4 text-lg font-semibold text-text-primary",
|
|
60
60
|
children: "Setting up your workspace"
|
|
61
61
|
}),
|
|
62
62
|
/* @__PURE__ */ c("p", {
|
|
63
|
-
className: "mt-1 text-sm text-
|
|
63
|
+
className: "mt-1 text-sm text-text-secondary",
|
|
64
64
|
children: "Applying the template configuration..."
|
|
65
65
|
}),
|
|
66
66
|
/* @__PURE__ */ c("div", {
|
|
67
67
|
className: "mt-6 space-y-3 text-left",
|
|
68
68
|
children: h.map((e) => /* @__PURE__ */ l("div", {
|
|
69
|
-
className: "flex items-center gap-3 rounded-lg border border-border p-3",
|
|
70
|
-
children: [e.status === "completed" ? /* @__PURE__ */ c(i, { className: "h-5 w-5 text-
|
|
71
|
-
className: `text-sm ${e.status === "completed" ? "text-
|
|
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-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
|
+
className: `text-sm ${e.status === "completed" ? "text-text-secondary" : "text-text-primary"}`,
|
|
72
72
|
children: e.label
|
|
73
73
|
})]
|
|
74
74
|
}, e.label))
|
|
@@ -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-
|
|
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,64 +1,64 @@
|
|
|
1
1
|
import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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 } =
|
|
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(
|
|
14
|
+
return h ? /* @__PURE__ */ u(r, {
|
|
15
15
|
title: "Template Details",
|
|
16
16
|
description: "Loading...",
|
|
17
|
-
children: /* @__PURE__ */ u(
|
|
18
|
-
}) : g || !_ ? /* @__PURE__ */ u(
|
|
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", {
|
|
22
|
-
className: "inline-flex items-center gap-1.5 rounded-md border border-border px-3 py-2 text-sm font-medium text-
|
|
22
|
+
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",
|
|
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-
|
|
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(
|
|
29
|
+
}) : /* @__PURE__ */ u(r, {
|
|
30
30
|
title: "Template Details",
|
|
31
31
|
description: `Template ID: ${f}`,
|
|
32
32
|
actions: /* @__PURE__ */ d("button", {
|
|
33
|
-
className: "inline-flex items-center gap-1.5 rounded-md border border-border px-3 py-2 text-sm font-medium text-
|
|
33
|
+
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",
|
|
34
34
|
children: [/* @__PURE__ */ u(i, { className: "h-4 w-4" }), "Back to Templates"]
|
|
35
35
|
}),
|
|
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 bg-card 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",
|
|
43
43
|
children: [/* @__PURE__ */ u("div", {
|
|
44
|
-
className: "flex h-16 w-16 items-center justify-center rounded-xl bg-primary/10",
|
|
44
|
+
className: "flex h-16 w-16 items-center justify-center rounded-xl bg-action-primary-bg/10",
|
|
45
45
|
children: /* @__PURE__ */ u(o, { className: "h-8 w-8 text-primary" })
|
|
46
46
|
}), /* @__PURE__ */ d("div", {
|
|
47
47
|
className: "flex-1",
|
|
48
48
|
children: [
|
|
49
49
|
/* @__PURE__ */ u("h2", {
|
|
50
|
-
className: "text-lg font-semibold text-
|
|
50
|
+
className: "text-lg font-semibold text-text-primary",
|
|
51
51
|
children: y
|
|
52
52
|
}),
|
|
53
53
|
/* @__PURE__ */ u("p", {
|
|
54
|
-
className: "text-sm text-
|
|
54
|
+
className: "text-sm text-text-secondary",
|
|
55
55
|
children: b
|
|
56
56
|
}),
|
|
57
57
|
/* @__PURE__ */ d("div", {
|
|
58
|
-
className: "mt-2 flex items-center gap-3 text-sm text-
|
|
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-
|
|
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"] })]
|
|
@@ -70,20 +70,20 @@ function f() {
|
|
|
70
70
|
C.length > 0 && /* @__PURE__ */ d("div", {
|
|
71
71
|
className: "mt-6",
|
|
72
72
|
children: [/* @__PURE__ */ u("h3", {
|
|
73
|
-
className: "text-sm font-semibold text-
|
|
73
|
+
className: "text-sm font-semibold text-text-primary",
|
|
74
74
|
children: "Features"
|
|
75
75
|
}), /* @__PURE__ */ u("ul", {
|
|
76
76
|
className: "mt-2 space-y-2",
|
|
77
77
|
children: C.map((e) => /* @__PURE__ */ d("li", {
|
|
78
|
-
className: "flex items-center gap-2 text-sm text-
|
|
79
|
-
children: [/* @__PURE__ */ u(a, { className: "h-4 w-4 text-
|
|
78
|
+
className: "flex items-center gap-2 text-sm text-text-secondary",
|
|
79
|
+
children: [/* @__PURE__ */ u(a, { className: "h-4 w-4 text-status-success-text" }), e]
|
|
80
80
|
}, e))
|
|
81
81
|
})]
|
|
82
82
|
}),
|
|
83
83
|
/* @__PURE__ */ u("div", {
|
|
84
84
|
className: "mt-6 flex justify-end",
|
|
85
85
|
children: /* @__PURE__ */ u("button", {
|
|
86
|
-
className: "rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-
|
|
86
|
+
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",
|
|
87
87
|
children: "Apply Template"
|
|
88
88
|
})
|
|
89
89
|
})
|
|
@@ -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 px-3 py-2 text-sm font-medium text-
|
|
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,50 +1,50 @@
|
|
|
1
1
|
import { useTimeCampus as e } from "../../providers/TimeCampusProvider.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
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 } =
|
|
10
|
-
return d ? /* @__PURE__ */ s(
|
|
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(
|
|
13
|
+
children: /* @__PURE__ */ s(t, {
|
|
14
14
|
variant: "card",
|
|
15
15
|
count: 6
|
|
16
16
|
})
|
|
17
|
-
}) : f ? /* @__PURE__ */ s(
|
|
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-
|
|
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(
|
|
24
|
+
}) : /* @__PURE__ */ s(r, {
|
|
25
25
|
title: "Templates",
|
|
26
26
|
description: "Pre-built workspace templates for different workflows",
|
|
27
27
|
children: /* @__PURE__ */ s("div", {
|
|
28
28
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3",
|
|
29
29
|
children: p.length === 0 ? /* @__PURE__ */ s("div", {
|
|
30
|
-
className: "col-span-full p-8 text-center text-sm text-
|
|
30
|
+
className: "col-span-full p-8 text-center text-sm text-text-secondary",
|
|
31
31
|
children: "No templates configured yet. Templates are stored as workspace configurations with the \"template.\" key prefix."
|
|
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 bg-card p-5 transition-colors hover:bg-
|
|
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", {
|
|
39
|
-
className: "flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10",
|
|
39
|
+
className: "flex h-12 w-12 items-center justify-center rounded-xl bg-action-primary-bg/10",
|
|
40
40
|
children: /* @__PURE__ */ s(i, { className: "h-6 w-6 text-primary" })
|
|
41
41
|
}), /* @__PURE__ */ c("div", {
|
|
42
42
|
className: "flex-1",
|
|
43
43
|
children: [/* @__PURE__ */ s("p", {
|
|
44
|
-
className: "text-sm font-semibold text-
|
|
44
|
+
className: "text-sm font-semibold text-text-primary",
|
|
45
45
|
children: n
|
|
46
46
|
}), /* @__PURE__ */ c("p", {
|
|
47
|
-
className: "text-xs text-
|
|
47
|
+
className: "text-xs text-text-secondary",
|
|
48
48
|
children: [
|
|
49
49
|
r,
|
|
50
50
|
" · ",
|
|
@@ -53,12 +53,12 @@ function l() {
|
|
|
53
53
|
})]
|
|
54
54
|
})]
|
|
55
55
|
}), /* @__PURE__ */ c("div", {
|
|
56
|
-
className: "mt-3 flex items-center justify-between text-xs text-
|
|
56
|
+
className: "mt-3 flex items-center justify-between text-xs text-text-secondary",
|
|
57
57
|
children: [/* @__PURE__ */ c("div", {
|
|
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-
|
|
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 })]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TemplatesPage.js","names":[],"sources":["../../../../src/timecampus/pages/templates/TemplatesPage.tsx"],"sourcesContent":["import { Sparkles, Star, Users } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useListConfigurationsQuery,\n type ConfigurationFieldsFragment,\n} from \"@/generated/wspace-operations\";\n\nexport function TemplatesPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useListConfigurationsQuery({\n variables: { scope: \"WORKSPACE\" as any },\n });\n\n const configurations = data?.configurations ?? [];\n\n // Filter configurations that represent templates (key starts with 'template.')\n const templates = configurations.filter((c: ConfigurationFieldsFragment) =>\n c.key.startsWith(\"template.\"),\n );\n\n if (loading) {\n return (\n <PageLayout\n title=\"Templates\"\n description=\"Pre-built workspace templates for different workflows\"\n >\n <LoadingSkeleton variant=\"card\" count={6} />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Templates\"\n description=\"Pre-built workspace templates for different workflows\"\n >\n <div className=\"rounded-lg border border-
|
|
1
|
+
{"version":3,"file":"TemplatesPage.js","names":[],"sources":["../../../../src/timecampus/pages/templates/TemplatesPage.tsx"],"sourcesContent":["import { Sparkles, Star, Users } from \"lucide-react\";\nimport { PageLayout } from \"../../components/PageLayout\";\nimport { LoadingSkeleton } from \"../../components/LoadingSkeleton\";\nimport { useTimeCampus } from \"../../providers/TimeCampusProvider\";\nimport {\n useListConfigurationsQuery,\n type ConfigurationFieldsFragment,\n} from \"@/generated/wspace-operations\";\n\nexport function TemplatesPage() {\n const { workspaceId = \"\" } = useTimeCampus();\n\n const { data, loading, error } = useListConfigurationsQuery({\n variables: { scope: \"WORKSPACE\" as any },\n });\n\n const configurations = data?.configurations ?? [];\n\n // Filter configurations that represent templates (key starts with 'template.')\n const templates = configurations.filter((c: ConfigurationFieldsFragment) =>\n c.key.startsWith(\"template.\"),\n );\n\n if (loading) {\n return (\n <PageLayout\n title=\"Templates\"\n description=\"Pre-built workspace templates for different workflows\"\n >\n <LoadingSkeleton variant=\"card\" count={6} />\n </PageLayout>\n );\n }\n\n if (error) {\n return (\n <PageLayout\n title=\"Templates\"\n description=\"Pre-built workspace templates for different workflows\"\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 configurations. Please try again later.\n </div>\n </PageLayout>\n );\n }\n\n return (\n <PageLayout\n title=\"Templates\"\n description=\"Pre-built workspace templates for different workflows\"\n >\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {templates.length === 0 ? (\n <div className=\"col-span-full p-8 text-center text-sm text-text-secondary\">\n No templates configured yet. Templates are stored as workspace\n configurations with the \"template.\" key prefix.\n </div>\n ) : (\n templates.map((template: ConfigurationFieldsFragment) => {\n const val = template.value as Record<string, unknown>;\n const name =\n (val.name as string) ?? template.key.replace(\"template.\", \"\");\n const category = (val.category as string) ?? \"General\";\n const industry = (val.industry as string) ?? \"Any\";\n const rating = (val.rating as number) ?? 0;\n const teamSize = (val.teamSize as string) ?? \"-\";\n const downloads = (val.downloads as number) ?? 0;\n\n return (\n <div\n key={template.id}\n className=\"rounded-xl border border-border-seam bg-gloss-card shadow-pop p-5 transition-colors hover:bg-bg-sunken/50 cursor-pointer\"\n >\n <div className=\"flex items-start gap-3\">\n <div className=\"flex h-12 w-12 items-center justify-center rounded-xl bg-action-primary-bg/10\">\n <Sparkles className=\"h-6 w-6 text-primary\" />\n </div>\n <div className=\"flex-1\">\n <p className=\"text-sm font-semibold text-text-primary\">\n {name}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {category} · {industry}\n </p>\n </div>\n </div>\n <div className=\"mt-3 flex items-center justify-between text-xs text-text-secondary\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex items-center gap-1\">\n <Star className=\"h-3 w-3 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-3 w-3\" />\n <span>{teamSize}</span>\n </div>\n </div>\n <span>{downloads} uses</span>\n </div>\n </div>\n );\n })\n )}\n </div>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;AASA,SAAgB,IAAgB;CAC9B,IAAM,EAAE,iBAAc,OAAO,GAAe,EAEtC,EAAE,SAAM,YAAS,aAAU,EAA2B,EAC1D,WAAW,EAAE,OAAO,aAAoB,EACzC,CAAC,EAKI,KAHiB,GAAM,kBAAkB,EAAE,EAGhB,QAAQ,MACvC,EAAE,IAAI,WAAW,YAAY,CAC9B;AA0BD,QAxBI,IAEA,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;YAEZ,kBAAC,GAAD;GAAiB,SAAQ;GAAO,OAAO;GAAK,CAAA;EACjC,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;aACZ,EAAU,WAAW,IACpB,kBAAC,OAAD;IAAK,WAAU;cAA4D;IAGrE,CAAA,GAEN,EAAU,KAAK,MAA0C;IACvD,IAAM,IAAM,EAAS,OACf,IACH,EAAI,QAAmB,EAAS,IAAI,QAAQ,aAAa,GAAG,EACzD,IAAY,EAAI,YAAuB,WACvC,IAAY,EAAI,YAAuB,OACvC,IAAU,EAAI,UAAqB,GACnC,IAAY,EAAI,YAAuB,KACvC,IAAa,EAAI,aAAwB;AAE/C,WACE,kBAAC,OAAD;KAEE,WAAU;eAFZ,CAIE,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,CACE,kBAAC,KAAD;QAAG,WAAU;kBACV;QACC,CAAA,EACJ,kBAAC,KAAD;QAAG,WAAU;kBAAb;SACG;SAAS;SAAW;SACnB;UACA;SACF;SACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD,EAAM,WAAU,mDAAoD,CAAA,EACpE,kBAAC,QAAD,EAAA,UAAO,GAAc,CAAA,CACjB;WACN,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAC7B,kBAAC,QAAD,EAAA,UAAO,GAAgB,CAAA,CACnB;UACF;UACN,kBAAC,QAAD,EAAA,UAAA,CAAO,GAAU,QAAY,EAAA,CAAA,CACzB;QACF;OA7BC,EAAS,GA6BV;KAER;GAEA,CAAA;EACK,CAAA"}
|