@burdenoff/microfe-botmanor 2026.813.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/README.md +12 -0
- package/dist/botlit/BotlitRoutes.js +357 -0
- package/dist/botlit/BotlitRoutes.js.map +1 -0
- package/dist/botlit/BotmanorRoot.js +12 -0
- package/dist/botlit/BotmanorRoot.js.map +1 -0
- package/dist/botlit/BotmanorRootInner.js +101 -0
- package/dist/botlit/BotmanorRootInner.js.map +1 -0
- package/dist/botlit/components/Badge.js +39 -0
- package/dist/botlit/components/Badge.js.map +1 -0
- package/dist/botlit/components/Button.js +46 -0
- package/dist/botlit/components/Button.js.map +1 -0
- package/dist/botlit/components/Card.js +31 -0
- package/dist/botlit/components/Card.js.map +1 -0
- package/dist/botlit/components/ChannelSelectorSheet.js +130 -0
- package/dist/botlit/components/ChannelSelectorSheet.js.map +1 -0
- package/dist/botlit/components/EmptyState.js +35 -0
- package/dist/botlit/components/EmptyState.js.map +1 -0
- package/dist/botlit/components/ErrorState.js +33 -0
- package/dist/botlit/components/ErrorState.js.map +1 -0
- package/dist/botlit/components/Input.js +59 -0
- package/dist/botlit/components/Input.js.map +1 -0
- package/dist/botlit/components/PageLayout.js +34 -0
- package/dist/botlit/components/PageLayout.js.map +1 -0
- package/dist/botlit/components/QuotaExhaustedDialog.js +20 -0
- package/dist/botlit/components/QuotaExhaustedDialog.js.map +1 -0
- package/dist/botlit/components/RouteLoader.js +52 -0
- package/dist/botlit/components/RouteLoader.js.map +1 -0
- package/dist/botlit/components/VersionHistoryPanel.js +144 -0
- package/dist/botlit/components/VersionHistoryPanel.js.map +1 -0
- package/dist/botlit/components/WorkspaceRequired.js +70 -0
- package/dist/botlit/components/WorkspaceRequired.js.map +1 -0
- package/dist/botlit/hooks/index.js +16 -0
- package/dist/botlit/hooks/internal/mutationInput.js +16 -0
- package/dist/botlit/hooks/internal/mutationInput.js.map +1 -0
- package/dist/botlit/hooks/internal/workspaceGateway.js +99 -0
- package/dist/botlit/hooks/internal/workspaceGateway.js.map +1 -0
- package/dist/botlit/hooks/useA2A.js +184 -0
- package/dist/botlit/hooks/useA2A.js.map +1 -0
- package/dist/botlit/hooks/useAgents.js +469 -0
- package/dist/botlit/hooks/useAgents.js.map +1 -0
- package/dist/botlit/hooks/useBots.js +306 -0
- package/dist/botlit/hooks/useBots.js.map +1 -0
- package/dist/botlit/hooks/useBuckets.js +119 -0
- package/dist/botlit/hooks/useBuckets.js.map +1 -0
- package/dist/botlit/hooks/useChannels.js +213 -0
- package/dist/botlit/hooks/useChannels.js.map +1 -0
- package/dist/botlit/hooks/useConversations.js +64 -0
- package/dist/botlit/hooks/useConversations.js.map +1 -0
- package/dist/botlit/hooks/useExecutions.js +86 -0
- package/dist/botlit/hooks/useExecutions.js.map +1 -0
- package/dist/botlit/hooks/useKnowledgeBases.js +113 -0
- package/dist/botlit/hooks/useKnowledgeBases.js.map +1 -0
- package/dist/botlit/hooks/useLLMProviders.js +83 -0
- package/dist/botlit/hooks/useLLMProviders.js.map +1 -0
- package/dist/botlit/hooks/useMCPServers.js +134 -0
- package/dist/botlit/hooks/useMCPServers.js.map +1 -0
- package/dist/botlit/hooks/usePolicies.js +120 -0
- package/dist/botlit/hooks/usePolicies.js.map +1 -0
- package/dist/botlit/hooks/usePromptTemplates.js +161 -0
- package/dist/botlit/hooks/usePromptTemplates.js.map +1 -0
- package/dist/botlit/hooks/useRetrievalProfiles.js +146 -0
- package/dist/botlit/hooks/useRetrievalProfiles.js.map +1 -0
- package/dist/botlit/hooks/useSkills.js +132 -0
- package/dist/botlit/hooks/useSkills.js.map +1 -0
- package/dist/botlit/hooks/useStore.js +167 -0
- package/dist/botlit/hooks/useStore.js.map +1 -0
- package/dist/botlit/hooks/useUserPlatformConnection.js +172 -0
- package/dist/botlit/hooks/useUserPlatformConnection.js.map +1 -0
- package/dist/botlit/index.js +11 -0
- package/dist/botlit/pages/A2AAgentDetailPage.js +589 -0
- package/dist/botlit/pages/A2AAgentDetailPage.js.map +1 -0
- package/dist/botlit/pages/A2ARegistryPage.js +240 -0
- package/dist/botlit/pages/A2ARegistryPage.js.map +1 -0
- package/dist/botlit/pages/AgentBuilderPage.js +486 -0
- package/dist/botlit/pages/AgentBuilderPage.js.map +1 -0
- package/dist/botlit/pages/AgentDetailPage.js +517 -0
- package/dist/botlit/pages/AgentDetailPage.js.map +1 -0
- package/dist/botlit/pages/AgentsListPage.js +294 -0
- package/dist/botlit/pages/AgentsListPage.js.map +1 -0
- package/dist/botlit/pages/BotChannelsTab.js +530 -0
- package/dist/botlit/pages/BotChannelsTab.js.map +1 -0
- package/dist/botlit/pages/BotDetailPage.js +872 -0
- package/dist/botlit/pages/BotDetailPage.js.map +1 -0
- package/dist/botlit/pages/BotWorkflowTab.js +229 -0
- package/dist/botlit/pages/BotWorkflowTab.js.map +1 -0
- package/dist/botlit/pages/BotsListPage.js +313 -0
- package/dist/botlit/pages/BotsListPage.js.map +1 -0
- package/dist/botlit/pages/BucketsPage.js +604 -0
- package/dist/botlit/pages/BucketsPage.js.map +1 -0
- package/dist/botlit/pages/ChannelDetailPage.js +955 -0
- package/dist/botlit/pages/ChannelDetailPage.js.map +1 -0
- package/dist/botlit/pages/ChannelRoutesPage.js +218 -0
- package/dist/botlit/pages/ChannelRoutesPage.js.map +1 -0
- package/dist/botlit/pages/ChannelsPage.js +304 -0
- package/dist/botlit/pages/ChannelsPage.js.map +1 -0
- package/dist/botlit/pages/ChatPage.js +247 -0
- package/dist/botlit/pages/ChatPage.js.map +1 -0
- package/dist/botlit/pages/DashboardPage.js +318 -0
- package/dist/botlit/pages/DashboardPage.js.map +1 -0
- package/dist/botlit/pages/ExecutionDetailPage.js +313 -0
- package/dist/botlit/pages/ExecutionDetailPage.js.map +1 -0
- package/dist/botlit/pages/ExecutionsPage.js +294 -0
- package/dist/botlit/pages/ExecutionsPage.js.map +1 -0
- package/dist/botlit/pages/InstalledPackagesPage.js +619 -0
- package/dist/botlit/pages/InstalledPackagesPage.js.map +1 -0
- package/dist/botlit/pages/KnowledgeBaseDetailPage.js +473 -0
- package/dist/botlit/pages/KnowledgeBaseDetailPage.js.map +1 -0
- package/dist/botlit/pages/KnowledgeBasesPage.js +150 -0
- package/dist/botlit/pages/KnowledgeBasesPage.js.map +1 -0
- package/dist/botlit/pages/MCPServerDetailPage.js +550 -0
- package/dist/botlit/pages/MCPServerDetailPage.js.map +1 -0
- package/dist/botlit/pages/MCPServersPage.js +321 -0
- package/dist/botlit/pages/MCPServersPage.js.map +1 -0
- package/dist/botlit/pages/PoliciesPage.js +224 -0
- package/dist/botlit/pages/PoliciesPage.js.map +1 -0
- package/dist/botlit/pages/PolicyDetailPage.js +861 -0
- package/dist/botlit/pages/PolicyDetailPage.js.map +1 -0
- package/dist/botlit/pages/PromptStudioPage.js +236 -0
- package/dist/botlit/pages/PromptStudioPage.js.map +1 -0
- package/dist/botlit/pages/PromptTemplateDetailPage.js +812 -0
- package/dist/botlit/pages/PromptTemplateDetailPage.js.map +1 -0
- package/dist/botlit/pages/PromptTemplatesPage.js +269 -0
- package/dist/botlit/pages/PromptTemplatesPage.js.map +1 -0
- package/dist/botlit/pages/RetrievalProfileDetailPage.js +559 -0
- package/dist/botlit/pages/RetrievalProfileDetailPage.js.map +1 -0
- package/dist/botlit/pages/RetrievalProfilesPage.js +219 -0
- package/dist/botlit/pages/RetrievalProfilesPage.js.map +1 -0
- package/dist/botlit/pages/SettingsPage.js +655 -0
- package/dist/botlit/pages/SettingsPage.js.map +1 -0
- package/dist/botlit/pages/SkillDetailPage.js +778 -0
- package/dist/botlit/pages/SkillDetailPage.js.map +1 -0
- package/dist/botlit/pages/SkillsPage.js +206 -0
- package/dist/botlit/pages/SkillsPage.js.map +1 -0
- package/dist/botlit/pages/StorePackageDetailPage.js +462 -0
- package/dist/botlit/pages/StorePackageDetailPage.js.map +1 -0
- package/dist/botlit/pages/StorePage.js +315 -0
- package/dist/botlit/pages/StorePage.js.map +1 -0
- package/dist/botlit/providers/BotlitProvider.js +93 -0
- package/dist/botlit/providers/BotlitProvider.js.map +1 -0
- package/dist/botlit/store/botlitStore.js +101 -0
- package/dist/botlit/store/botlitStore.js.map +1 -0
- package/dist/botlit/utils/cn.js +10 -0
- package/dist/botlit/utils/cn.js.map +1 -0
- package/dist/botlit/utils/formatters.js +37 -0
- package/dist/botlit/utils/formatters.js.map +1 -0
- package/dist/botlit/utils/navigation.js +9 -0
- package/dist/botlit/utils/navigation.js.map +1 -0
- package/dist/botlit/utils/unions.js +14 -0
- package/dist/botlit/utils/unions.js.map +1 -0
- package/dist/generated/global-operations.js +66 -0
- package/dist/generated/global-operations.js.map +1 -0
- package/dist/generated/global-types.js +8 -0
- package/dist/generated/global-types.js.map +1 -0
- package/dist/generated/wspace-operations.js +1591 -0
- package/dist/generated/wspace-operations.js.map +1 -0
- package/dist/generated/wspace-types.js +12 -0
- package/dist/generated/wspace-types.js.map +1 -0
- package/dist/index.js +13 -0
- package/dist/utils/nativeBridge.js +2 -0
- package/package.json +133 -0
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
import { useBotlit as e } from "../providers/BotlitProvider.js";
|
|
2
|
+
import { useBots as t } from "../hooks/useBots.js";
|
|
3
|
+
import { useAgents as n } from "../hooks/useAgents.js";
|
|
4
|
+
import { useConversations as r } from "../hooks/useConversations.js";
|
|
5
|
+
import { formatNumber as i, formatRelativeTime as a } from "../utils/formatters.js";
|
|
6
|
+
import { PageLayout as o } from "../components/PageLayout.js";
|
|
7
|
+
import { Card as s, CardContent as c, CardHeader as l, CardTitle as u } from "../components/Card.js";
|
|
8
|
+
import { Button as d } from "../components/Button.js";
|
|
9
|
+
import { StatusBadge as f } from "../components/Badge.js";
|
|
10
|
+
import { GlassCard as p, GradientText as m, PagePurpose as h } from "@burdenoff/fe-libs/ui";
|
|
11
|
+
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
12
|
+
import { Link as y } from "react-router";
|
|
13
|
+
import { AppWindow as b, ArrowRight as x, BookOpen as S, Bot as C, Clock as w, MessageSquare as T, Plus as E, Zap as D } from "lucide-react";
|
|
14
|
+
import { useI18n as O } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
15
|
+
//#region src/botlit/pages/DashboardPage.tsx
|
|
16
|
+
var k = () => {
|
|
17
|
+
let { t: k } = O(), A = (e, t) => {
|
|
18
|
+
let n = k(e);
|
|
19
|
+
return n === e ? t : n;
|
|
20
|
+
}, { currentUser: j, navigateTo: M, getPath: N } = e(), { data: P, loading: F } = t(), { data: I, loading: L } = n(), { data: R, loading: z } = r(), B = [
|
|
21
|
+
{
|
|
22
|
+
label: A("botlit.dashboard.stats.totalBots", "Total Bots"),
|
|
23
|
+
value: P?.length || 0,
|
|
24
|
+
icon: /* @__PURE__ */ _(b, { className: "h-5 w-5" }),
|
|
25
|
+
hero: !0
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
label: A("botlit.dashboard.stats.activeAgents", "Active Agents"),
|
|
29
|
+
value: I?.filter((e) => e.status === "ACTIVE").length || 0,
|
|
30
|
+
icon: /* @__PURE__ */ _(C, { className: "h-5 w-5" }),
|
|
31
|
+
hero: !1
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
label: A("botlit.dashboard.stats.conversations", "Conversations"),
|
|
35
|
+
value: R?.length || 0,
|
|
36
|
+
icon: /* @__PURE__ */ _(T, { className: "h-5 w-5" }),
|
|
37
|
+
hero: !1
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
label: A("botlit.dashboard.stats.avgResponse", "Avg Response"),
|
|
41
|
+
value: "1.2s",
|
|
42
|
+
icon: /* @__PURE__ */ _(w, { className: "h-5 w-5" }),
|
|
43
|
+
hero: !1
|
|
44
|
+
}
|
|
45
|
+
], V = j?.name ? j.name.split(" ")[0] : "";
|
|
46
|
+
return /* @__PURE__ */ _(o, {
|
|
47
|
+
hero: !0,
|
|
48
|
+
title: /* @__PURE__ */ v(g, { children: [A("botlit.dashboard.title", "Welcome back"), V ? /* @__PURE__ */ v(g, { children: [", ", /* @__PURE__ */ _(m, { children: V })] }) : null] }),
|
|
49
|
+
description: A("botlit.dashboard.description", "Here's an overview of your AI agents and bots"),
|
|
50
|
+
actions: /* @__PURE__ */ v("div", {
|
|
51
|
+
className: "flex gap-2",
|
|
52
|
+
children: [/* @__PURE__ */ _(d, {
|
|
53
|
+
variant: "outline",
|
|
54
|
+
leftIcon: /* @__PURE__ */ _(E, { size: 16 }),
|
|
55
|
+
onClick: () => M("bots/new"),
|
|
56
|
+
children: A("botlit.dashboard.actions.newBot", "New Bot")
|
|
57
|
+
}), /* @__PURE__ */ _(d, {
|
|
58
|
+
leftIcon: /* @__PURE__ */ _(C, { size: 16 }),
|
|
59
|
+
onClick: () => M("agents/new"),
|
|
60
|
+
children: A("botlit.dashboard.actions.createAgent", "Create Agent")
|
|
61
|
+
})]
|
|
62
|
+
}),
|
|
63
|
+
children: /* @__PURE__ */ v("div", {
|
|
64
|
+
className: "space-y-6",
|
|
65
|
+
children: [
|
|
66
|
+
/* @__PURE__ */ _(h, {
|
|
67
|
+
icon: /* @__PURE__ */ _(D, { size: 18 }),
|
|
68
|
+
children: A("botlit.dashboard.purpose", "This is your home base — a quick pulse on every bot, agent and conversation in your workspace. Glance at the headline numbers, jump back into recent work, and use the quick actions below to start something new. If you are just getting started, create your first agent and connect it to a bot.")
|
|
69
|
+
}),
|
|
70
|
+
/* @__PURE__ */ _("div", {
|
|
71
|
+
className: "grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4",
|
|
72
|
+
children: B.map((e) => /* @__PURE__ */ _(s, {
|
|
73
|
+
treatment: e.hero ? "glass" : "metric",
|
|
74
|
+
glow: e.hero,
|
|
75
|
+
children: /* @__PURE__ */ _(c, {
|
|
76
|
+
className: "pt-6",
|
|
77
|
+
children: /* @__PURE__ */ v("div", {
|
|
78
|
+
className: "flex items-center gap-4",
|
|
79
|
+
children: [/* @__PURE__ */ _("div", {
|
|
80
|
+
className: "p-3 rounded-lg bg-[var(--color-accent-soft)] text-text-primary [&>svg]:text-text-primary",
|
|
81
|
+
children: e.icon
|
|
82
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
83
|
+
className: "text-2xl font-bold text-text-primary tabular-nums",
|
|
84
|
+
children: e.value
|
|
85
|
+
}), /* @__PURE__ */ _("p", {
|
|
86
|
+
className: "text-sm text-text-secondary",
|
|
87
|
+
children: e.label
|
|
88
|
+
})] })]
|
|
89
|
+
})
|
|
90
|
+
})
|
|
91
|
+
}, e.label))
|
|
92
|
+
}),
|
|
93
|
+
/* @__PURE__ */ v("div", {
|
|
94
|
+
className: "grid grid-cols-1 lg:grid-cols-2 gap-6",
|
|
95
|
+
children: [
|
|
96
|
+
/* @__PURE__ */ v(s, {
|
|
97
|
+
treatment: "insight",
|
|
98
|
+
children: [/* @__PURE__ */ v(l, {
|
|
99
|
+
className: "flex flex-row items-center justify-between",
|
|
100
|
+
children: [/* @__PURE__ */ _(u, { children: A("botlit.dashboard.recentBots.title", "Recent Bots") }), /* @__PURE__ */ _(d, {
|
|
101
|
+
variant: "ghost",
|
|
102
|
+
size: "sm",
|
|
103
|
+
rightIcon: /* @__PURE__ */ _(x, { size: 16 }),
|
|
104
|
+
onClick: () => M("bots"),
|
|
105
|
+
children: A("botlit.common.viewAll", "View All")
|
|
106
|
+
})]
|
|
107
|
+
}), /* @__PURE__ */ _(c, { children: F ? /* @__PURE__ */ _("div", {
|
|
108
|
+
className: "space-y-3",
|
|
109
|
+
children: [
|
|
110
|
+
1,
|
|
111
|
+
2,
|
|
112
|
+
3
|
|
113
|
+
].map((e) => /* @__PURE__ */ _("div", { className: "h-16 bg-bg-sunken rounded-lg motion-safe:animate-vc-shimmer" }, e))
|
|
114
|
+
}) : P && P.length > 0 ? /* @__PURE__ */ _("div", {
|
|
115
|
+
className: "space-y-3",
|
|
116
|
+
children: P.slice(0, 4).map((e) => /* @__PURE__ */ v(y, {
|
|
117
|
+
to: N(`bots/${e.id}`),
|
|
118
|
+
className: "flex items-center justify-between p-3 rounded-lg border border-border-seam hover:border-border-strong hover:bg-accent transition-colors",
|
|
119
|
+
children: [/* @__PURE__ */ v("div", {
|
|
120
|
+
className: "flex items-center gap-3",
|
|
121
|
+
children: [/* @__PURE__ */ _("span", {
|
|
122
|
+
className: "text-2xl",
|
|
123
|
+
children: e.icon || "🤖"
|
|
124
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
125
|
+
className: "font-medium text-text-primary",
|
|
126
|
+
children: e.name
|
|
127
|
+
}), /* @__PURE__ */ v("p", {
|
|
128
|
+
className: "text-xs text-text-secondary",
|
|
129
|
+
children: [
|
|
130
|
+
e.executionCount || 0,
|
|
131
|
+
" ",
|
|
132
|
+
A("botlit.common.executions", "executions")
|
|
133
|
+
]
|
|
134
|
+
})] })]
|
|
135
|
+
}), /* @__PURE__ */ _(f, { status: e.status })]
|
|
136
|
+
}, e.id))
|
|
137
|
+
}) : /* @__PURE__ */ v("div", {
|
|
138
|
+
className: "text-center py-8 text-text-secondary",
|
|
139
|
+
children: [
|
|
140
|
+
/* @__PURE__ */ _(b, { className: "h-8 w-8 mx-auto mb-2 opacity-50" }),
|
|
141
|
+
/* @__PURE__ */ _("p", { children: A("botlit.dashboard.recentBots.emptyTitle", "No bots yet") }),
|
|
142
|
+
/* @__PURE__ */ _(d, {
|
|
143
|
+
variant: "outline",
|
|
144
|
+
size: "sm",
|
|
145
|
+
className: "mt-3",
|
|
146
|
+
onClick: () => M("bots/new"),
|
|
147
|
+
children: A("botlit.dashboard.recentBots.emptyAction", "Create your first bot")
|
|
148
|
+
})
|
|
149
|
+
]
|
|
150
|
+
}) })]
|
|
151
|
+
}),
|
|
152
|
+
/* @__PURE__ */ v(s, {
|
|
153
|
+
treatment: "insight",
|
|
154
|
+
children: [/* @__PURE__ */ v(l, {
|
|
155
|
+
className: "flex flex-row items-center justify-between",
|
|
156
|
+
children: [/* @__PURE__ */ _(u, { children: A("botlit.dashboard.activeAgents.title", "Active Agents") }), /* @__PURE__ */ _(d, {
|
|
157
|
+
variant: "ghost",
|
|
158
|
+
size: "sm",
|
|
159
|
+
rightIcon: /* @__PURE__ */ _(x, { size: 16 }),
|
|
160
|
+
onClick: () => M("agents"),
|
|
161
|
+
children: A("botlit.common.viewAll", "View All")
|
|
162
|
+
})]
|
|
163
|
+
}), /* @__PURE__ */ _(c, { children: L ? /* @__PURE__ */ _("div", {
|
|
164
|
+
className: "space-y-3",
|
|
165
|
+
children: [
|
|
166
|
+
1,
|
|
167
|
+
2,
|
|
168
|
+
3
|
|
169
|
+
].map((e) => /* @__PURE__ */ _("div", { className: "h-16 bg-bg-sunken rounded-lg motion-safe:animate-vc-shimmer" }, e))
|
|
170
|
+
}) : I && I.length > 0 ? /* @__PURE__ */ _("div", {
|
|
171
|
+
className: "space-y-3",
|
|
172
|
+
children: I.filter((e) => e.status === "ACTIVE").slice(0, 4).map((e) => /* @__PURE__ */ _(y, {
|
|
173
|
+
to: N(`agents/${e.id}`),
|
|
174
|
+
className: "flex items-center justify-between p-3 rounded-lg border border-border-seam hover:border-border-strong hover:bg-accent transition-colors",
|
|
175
|
+
children: /* @__PURE__ */ v("div", {
|
|
176
|
+
className: "flex items-center gap-3",
|
|
177
|
+
children: [/* @__PURE__ */ v("span", {
|
|
178
|
+
className: "relative text-2xl",
|
|
179
|
+
children: ["🤖", /* @__PURE__ */ _("span", { className: "absolute -right-0.5 -top-0.5 size-2 rounded-full bg-status-success-text motion-safe:animate-vc-glow-pulse" })]
|
|
180
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
181
|
+
className: "font-medium text-text-primary",
|
|
182
|
+
children: e.name
|
|
183
|
+
}), /* @__PURE__ */ v("p", {
|
|
184
|
+
className: "text-xs text-text-secondary",
|
|
185
|
+
children: [
|
|
186
|
+
i(e.executionCount ?? 0),
|
|
187
|
+
" ",
|
|
188
|
+
A("botlit.common.executions", "executions")
|
|
189
|
+
]
|
|
190
|
+
})] })]
|
|
191
|
+
})
|
|
192
|
+
}, e.id))
|
|
193
|
+
}) : /* @__PURE__ */ v("div", {
|
|
194
|
+
className: "text-center py-8 text-text-secondary",
|
|
195
|
+
children: [
|
|
196
|
+
/* @__PURE__ */ _(C, { className: "h-8 w-8 mx-auto mb-2 opacity-50" }),
|
|
197
|
+
/* @__PURE__ */ _("p", { children: A("botlit.dashboard.activeAgents.emptyTitle", "No active agents") }),
|
|
198
|
+
/* @__PURE__ */ _(d, {
|
|
199
|
+
variant: "outline",
|
|
200
|
+
size: "sm",
|
|
201
|
+
className: "mt-3",
|
|
202
|
+
onClick: () => M("agents/new"),
|
|
203
|
+
children: A("botlit.dashboard.activeAgents.emptyAction", "Create your first agent")
|
|
204
|
+
})
|
|
205
|
+
]
|
|
206
|
+
}) })]
|
|
207
|
+
}),
|
|
208
|
+
/* @__PURE__ */ v(s, {
|
|
209
|
+
className: "lg:col-span-2",
|
|
210
|
+
treatment: "insight",
|
|
211
|
+
children: [/* @__PURE__ */ v(l, {
|
|
212
|
+
className: "flex flex-row items-center justify-between",
|
|
213
|
+
children: [/* @__PURE__ */ _(u, { children: A("botlit.dashboard.recentConversations.title", "Recent Conversations") }), /* @__PURE__ */ _(d, {
|
|
214
|
+
variant: "ghost",
|
|
215
|
+
size: "sm",
|
|
216
|
+
rightIcon: /* @__PURE__ */ _(x, { size: 16 }),
|
|
217
|
+
onClick: () => window.location.href = "/conversations",
|
|
218
|
+
children: A("botlit.common.viewAll", "View All")
|
|
219
|
+
})]
|
|
220
|
+
}), /* @__PURE__ */ _(c, { children: z ? /* @__PURE__ */ _("div", {
|
|
221
|
+
className: "space-y-3",
|
|
222
|
+
children: [
|
|
223
|
+
1,
|
|
224
|
+
2,
|
|
225
|
+
3
|
|
226
|
+
].map((e) => /* @__PURE__ */ _("div", { className: "h-16 bg-bg-sunken rounded-lg motion-safe:animate-vc-shimmer" }, e))
|
|
227
|
+
}) : R && R.length > 0 ? /* @__PURE__ */ _("div", {
|
|
228
|
+
className: "space-y-3",
|
|
229
|
+
children: R.slice(0, 5).map((e) => /* @__PURE__ */ v("a", {
|
|
230
|
+
href: `/conversations/${e.id}`,
|
|
231
|
+
className: "flex items-center justify-between p-3 rounded-lg border border-border-seam hover:border-border-strong hover:bg-accent transition-colors",
|
|
232
|
+
children: [/* @__PURE__ */ v("div", {
|
|
233
|
+
className: "flex items-center gap-3",
|
|
234
|
+
children: [/* @__PURE__ */ _("div", {
|
|
235
|
+
className: "p-2 rounded-full bg-action-primary-bg/10",
|
|
236
|
+
children: /* @__PURE__ */ _(T, { className: "h-4 w-4 text-primary" })
|
|
237
|
+
}), /* @__PURE__ */ v("div", { children: [/* @__PURE__ */ _("p", {
|
|
238
|
+
className: "font-medium text-text-primary",
|
|
239
|
+
children: e.title
|
|
240
|
+
}), /* @__PURE__ */ v("p", {
|
|
241
|
+
className: "text-xs text-text-secondary",
|
|
242
|
+
children: [
|
|
243
|
+
e.messages.length,
|
|
244
|
+
" ",
|
|
245
|
+
A("botlit.common.messages", "messages")
|
|
246
|
+
]
|
|
247
|
+
})] })]
|
|
248
|
+
}), /* @__PURE__ */ _("div", {
|
|
249
|
+
className: "text-xs text-text-secondary",
|
|
250
|
+
children: a(e.updatedAt)
|
|
251
|
+
})]
|
|
252
|
+
}, e.id))
|
|
253
|
+
}) : /* @__PURE__ */ v("div", {
|
|
254
|
+
className: "text-center py-8 text-text-secondary",
|
|
255
|
+
children: [
|
|
256
|
+
/* @__PURE__ */ _(T, { className: "h-8 w-8 mx-auto mb-2 opacity-50" }),
|
|
257
|
+
/* @__PURE__ */ _("p", { children: A("botlit.dashboard.recentConversations.emptyTitle", "No conversations yet") }),
|
|
258
|
+
/* @__PURE__ */ _("p", {
|
|
259
|
+
className: "text-xs mt-1",
|
|
260
|
+
children: A("botlit.dashboard.recentConversations.emptyDescription", "Start chatting with an agent to see conversations here")
|
|
261
|
+
})
|
|
262
|
+
]
|
|
263
|
+
}) })]
|
|
264
|
+
})
|
|
265
|
+
]
|
|
266
|
+
}),
|
|
267
|
+
/* @__PURE__ */ v(p, {
|
|
268
|
+
treatment: "plain",
|
|
269
|
+
className: "border-border-seam p-6",
|
|
270
|
+
children: [/* @__PURE__ */ _("h2", {
|
|
271
|
+
className: "text-lg font-semibold tracking-tight text-text-primary",
|
|
272
|
+
children: A("botlit.dashboard.quickActions.title", "Quick Actions")
|
|
273
|
+
}), /* @__PURE__ */ v("div", {
|
|
274
|
+
className: "mt-4 grid grid-cols-2 md:grid-cols-4 gap-4",
|
|
275
|
+
children: [
|
|
276
|
+
/* @__PURE__ */ v(y, {
|
|
277
|
+
to: N("bots/new"),
|
|
278
|
+
className: "flex flex-col items-center gap-2 p-4 rounded-card border border-border-seam bg-bg-surface hover:border-border-strong hover:shadow-elevation-2 transition-[box-shadow,border-color]",
|
|
279
|
+
children: [/* @__PURE__ */ _(b, { className: "h-8 w-8 text-text-secondary" }), /* @__PURE__ */ _("span", {
|
|
280
|
+
className: "text-sm font-medium",
|
|
281
|
+
children: A("botlit.dashboard.quickActions.createBot", "Create Bot")
|
|
282
|
+
})]
|
|
283
|
+
}),
|
|
284
|
+
/* @__PURE__ */ v(y, {
|
|
285
|
+
to: N("agents/new"),
|
|
286
|
+
className: "flex flex-col items-center gap-2 p-4 rounded-card border border-border-seam bg-bg-surface hover:border-border-strong hover:shadow-elevation-2 transition-[box-shadow,border-color]",
|
|
287
|
+
children: [/* @__PURE__ */ _(C, { className: "h-8 w-8 text-text-secondary" }), /* @__PURE__ */ _("span", {
|
|
288
|
+
className: "text-sm font-medium",
|
|
289
|
+
children: A("botlit.dashboard.quickActions.buildAgent", "Build Agent")
|
|
290
|
+
})]
|
|
291
|
+
}),
|
|
292
|
+
/* @__PURE__ */ v(y, {
|
|
293
|
+
to: N("knowledge/new"),
|
|
294
|
+
className: "flex flex-col items-center gap-2 p-4 rounded-card border border-border-seam bg-bg-surface hover:border-border-strong hover:shadow-elevation-2 transition-[box-shadow,border-color]",
|
|
295
|
+
children: [/* @__PURE__ */ _(S, { className: "h-8 w-8 text-text-secondary" }), /* @__PURE__ */ _("span", {
|
|
296
|
+
className: "text-sm font-medium",
|
|
297
|
+
children: A("botlit.dashboard.quickActions.addKnowledge", "Add Knowledge")
|
|
298
|
+
})]
|
|
299
|
+
}),
|
|
300
|
+
/* @__PURE__ */ v("a", {
|
|
301
|
+
href: "/conversations",
|
|
302
|
+
className: "flex flex-col items-center gap-2 p-4 rounded-card border border-border-seam bg-bg-surface hover:border-border-strong hover:shadow-elevation-2 transition-[box-shadow,border-color]",
|
|
303
|
+
children: [/* @__PURE__ */ _(D, { className: "h-8 w-8 text-text-secondary" }), /* @__PURE__ */ _("span", {
|
|
304
|
+
className: "text-sm font-medium",
|
|
305
|
+
children: A("botlit.dashboard.quickActions.quickChat", "Quick Chat")
|
|
306
|
+
})]
|
|
307
|
+
})
|
|
308
|
+
]
|
|
309
|
+
})]
|
|
310
|
+
})
|
|
311
|
+
]
|
|
312
|
+
})
|
|
313
|
+
});
|
|
314
|
+
};
|
|
315
|
+
//#endregion
|
|
316
|
+
export { k as DashboardPage };
|
|
317
|
+
|
|
318
|
+
//# sourceMappingURL=DashboardPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardPage.js","names":[],"sources":["../../../src/botlit/pages/DashboardPage.tsx"],"sourcesContent":["/**\n * Dashboard Page\n * @module botlit/pages\n */\n\nimport type { FC } from 'react';\nimport { Link } from 'react-router';\nimport {\n AppWindow,\n Bot,\n MessageSquare,\n BookOpen,\n Clock,\n Zap,\n ArrowRight,\n Plus,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { GradientText, GlassCard, PagePurpose } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { Card, CardHeader, CardTitle, CardContent } from '../components/Card';\nimport { Button } from '../components/Button';\nimport { StatusBadge } from '../components/Badge';\nimport { useBots } from '../hooks/useBots';\nimport { useAgents } from '../hooks/useAgents';\nimport { useConversations } from '../hooks/useConversations';\nimport { useBotlit } from '../providers/BotlitProvider';\nimport { formatRelativeTime, formatNumber } from '../utils/formatters';\n\nexport const DashboardPage: FC = () => {\n const { t: translate } = useI18n();\n const t = (key: string, fallback: string) => {\n const value = translate(key);\n return value === key ? fallback : value;\n };\n const { currentUser, navigateTo, getPath } = useBotlit();\n const { data: bots, loading: botsLoading } = useBots();\n const { data: agents, loading: agentsLoading } = useAgents();\n const { data: conversations, loading: conversationsLoading } = useConversations();\n\n const stats = [\n {\n label: t('botlit.dashboard.stats.totalBots', 'Total Bots'),\n value: bots?.length || 0,\n icon: <AppWindow className=\"h-5 w-5\" />,\n hero: true,\n },\n {\n label: t('botlit.dashboard.stats.activeAgents', 'Active Agents'),\n value: agents?.filter((a: { status: string }) => a.status === 'ACTIVE').length || 0,\n icon: <Bot className=\"h-5 w-5\" />,\n hero: false,\n },\n {\n label: t('botlit.dashboard.stats.conversations', 'Conversations'),\n value: conversations?.length || 0,\n icon: <MessageSquare className=\"h-5 w-5\" />,\n hero: false,\n },\n {\n label: t('botlit.dashboard.stats.avgResponse', 'Avg Response'),\n value: '1.2s',\n icon: <Clock className=\"h-5 w-5\" />,\n hero: false,\n },\n ];\n\n const firstName = currentUser?.name ? currentUser.name.split(' ')[0] : '';\n\n return (\n <PageLayout\n hero\n title={\n <>\n {t('botlit.dashboard.title', 'Welcome back')}\n {firstName ? (\n <>\n , <GradientText>{firstName}</GradientText>\n </>\n ) : null}\n </>\n }\n description={t(\n 'botlit.dashboard.description',\n \"Here's an overview of your AI agents and bots\"\n )}\n actions={\n <div className=\"flex gap-2\">\n <Button\n variant=\"outline\"\n leftIcon={<Plus size={16} />}\n onClick={() => navigateTo('bots/new')}\n >\n {t('botlit.dashboard.actions.newBot', 'New Bot')}\n </Button>\n <Button leftIcon={<Bot size={16} />} onClick={() => navigateTo('agents/new')}>\n {t('botlit.dashboard.actions.createAgent', 'Create Agent')}\n </Button>\n </div>\n }\n >\n <div className=\"space-y-6\">\n <PagePurpose icon={<Zap size={18} />}>\n {t(\n 'botlit.dashboard.purpose',\n 'This is your home base — a quick pulse on every bot, agent and conversation in your workspace. Glance at the headline numbers, jump back into recent work, and use the quick actions below to start something new. If you are just getting started, create your first agent and connect it to a bot.'\n )}\n </PagePurpose>\n\n {/* Stats Grid */}\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\n {stats.map((stat) => (\n <Card key={stat.label} treatment={stat.hero ? 'glass' : 'metric'} glow={stat.hero}>\n <CardContent className=\"pt-6\">\n <div className=\"flex items-center gap-4\">\n <div className=\"p-3 rounded-lg bg-[var(--color-accent-soft)] text-text-primary [&>svg]:text-text-primary\">\n {stat.icon}\n </div>\n <div>\n <p className=\"text-2xl font-bold text-text-primary tabular-nums\">\n {stat.value}\n </p>\n <p className=\"text-sm text-text-secondary\">{stat.label}</p>\n </div>\n </div>\n </CardContent>\n </Card>\n ))}\n </div>\n\n {/* Main Content Grid */}\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Recent Bots */}\n <Card treatment=\"insight\">\n <CardHeader className=\"flex flex-row items-center justify-between\">\n <CardTitle>{t('botlit.dashboard.recentBots.title', 'Recent Bots')}</CardTitle>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n rightIcon={<ArrowRight size={16} />}\n onClick={() => navigateTo('bots')}\n >\n {t('botlit.common.viewAll', 'View All')}\n </Button>\n </CardHeader>\n <CardContent>\n {botsLoading ? (\n <div className=\"space-y-3\">\n {[1, 2, 3].map((i) => (\n <div\n key={i}\n className=\"h-16 bg-bg-sunken rounded-lg motion-safe:animate-vc-shimmer\"\n />\n ))}\n </div>\n ) : bots && bots.length > 0 ? (\n <div className=\"space-y-3\">\n {bots.slice(0, 4).map((bot) => (\n <Link\n key={bot.id}\n to={getPath(`bots/${bot.id}`)}\n className=\"flex items-center justify-between p-3 rounded-lg border border-border-seam hover:border-border-strong hover:bg-accent transition-colors\"\n >\n <div className=\"flex items-center gap-3\">\n <span className=\"text-2xl\">{bot.icon || '🤖'}</span>\n <div>\n <p className=\"font-medium text-text-primary\">{bot.name}</p>\n <p className=\"text-xs text-text-secondary\">\n {bot.executionCount || 0} {t('botlit.common.executions', 'executions')}\n </p>\n </div>\n </div>\n <StatusBadge status={bot.status} />\n </Link>\n ))}\n </div>\n ) : (\n <div className=\"text-center py-8 text-text-secondary\">\n <AppWindow className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>{t('botlit.dashboard.recentBots.emptyTitle', 'No bots yet')}</p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"mt-3\"\n onClick={() => navigateTo('bots/new')}\n >\n {t('botlit.dashboard.recentBots.emptyAction', 'Create your first bot')}\n </Button>\n </div>\n )}\n </CardContent>\n </Card>\n\n {/* Active Agents */}\n <Card treatment=\"insight\">\n <CardHeader className=\"flex flex-row items-center justify-between\">\n <CardTitle>{t('botlit.dashboard.activeAgents.title', 'Active Agents')}</CardTitle>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n rightIcon={<ArrowRight size={16} />}\n onClick={() => navigateTo('agents')}\n >\n {t('botlit.common.viewAll', 'View All')}\n </Button>\n </CardHeader>\n <CardContent>\n {agentsLoading ? (\n <div className=\"space-y-3\">\n {[1, 2, 3].map((i) => (\n <div\n key={i}\n className=\"h-16 bg-bg-sunken rounded-lg motion-safe:animate-vc-shimmer\"\n />\n ))}\n </div>\n ) : agents && agents.length > 0 ? (\n <div className=\"space-y-3\">\n {agents\n .filter((a) => a.status === 'ACTIVE')\n .slice(0, 4)\n .map((agent) => (\n <Link\n key={agent.id}\n to={getPath(`agents/${agent.id}`)}\n className=\"flex items-center justify-between p-3 rounded-lg border border-border-seam hover:border-border-strong hover:bg-accent transition-colors\"\n >\n <div className=\"flex items-center gap-3\">\n <span className=\"relative text-2xl\">\n 🤖\n <span className=\"absolute -right-0.5 -top-0.5 size-2 rounded-full bg-status-success-text motion-safe:animate-vc-glow-pulse\" />\n </span>\n <div>\n <p className=\"font-medium text-text-primary\">{agent.name}</p>\n <p className=\"text-xs text-text-secondary\">\n {formatNumber(agent.executionCount ?? 0)}{' '}\n {t('botlit.common.executions', 'executions')}\n </p>\n </div>\n </div>\n </Link>\n ))}\n </div>\n ) : (\n <div className=\"text-center py-8 text-text-secondary\">\n <Bot className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>{t('botlit.dashboard.activeAgents.emptyTitle', 'No active agents')}</p>\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"mt-3\"\n onClick={() => navigateTo('agents/new')}\n >\n {t('botlit.dashboard.activeAgents.emptyAction', 'Create your first agent')}\n </Button>\n </div>\n )}\n </CardContent>\n </Card>\n\n {/* Recent Conversations */}\n <Card className=\"lg:col-span-2\" treatment=\"insight\">\n <CardHeader className=\"flex flex-row items-center justify-between\">\n <CardTitle>\n {t('botlit.dashboard.recentConversations.title', 'Recent Conversations')}\n </CardTitle>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n rightIcon={<ArrowRight size={16} />}\n onClick={() => (window.location.href = '/conversations')}\n >\n {t('botlit.common.viewAll', 'View All')}\n </Button>\n </CardHeader>\n <CardContent>\n {conversationsLoading ? (\n <div className=\"space-y-3\">\n {[1, 2, 3].map((i) => (\n <div\n key={i}\n className=\"h-16 bg-bg-sunken rounded-lg motion-safe:animate-vc-shimmer\"\n />\n ))}\n </div>\n ) : conversations && conversations.length > 0 ? (\n <div className=\"space-y-3\">\n {conversations.slice(0, 5).map((conv) => (\n <a\n key={conv.id}\n href={`/conversations/${conv.id}`}\n className=\"flex items-center justify-between p-3 rounded-lg border border-border-seam hover:border-border-strong hover:bg-accent transition-colors\"\n >\n <div className=\"flex items-center gap-3\">\n <div className=\"p-2 rounded-full bg-action-primary-bg/10\">\n <MessageSquare className=\"h-4 w-4 text-primary\" />\n </div>\n <div>\n <p className=\"font-medium text-text-primary\">{conv.title}</p>\n <p className=\"text-xs text-text-secondary\">\n {conv.messages.length} {t('botlit.common.messages', 'messages')}\n </p>\n </div>\n </div>\n <div className=\"text-xs text-text-secondary\">\n {formatRelativeTime(conv.updatedAt)}\n </div>\n </a>\n ))}\n </div>\n ) : (\n <div className=\"text-center py-8 text-text-secondary\">\n <MessageSquare className=\"h-8 w-8 mx-auto mb-2 opacity-50\" />\n <p>\n {t('botlit.dashboard.recentConversations.emptyTitle', 'No conversations yet')}\n </p>\n <p className=\"text-xs mt-1\">\n {t(\n 'botlit.dashboard.recentConversations.emptyDescription',\n 'Start chatting with an agent to see conversations here'\n )}\n </p>\n </div>\n )}\n </CardContent>\n </Card>\n </div>\n\n {/* Quick Actions */}\n <GlassCard treatment=\"plain\" className=\"border-border-seam p-6\">\n <h2 className=\"text-lg font-semibold tracking-tight text-text-primary\">\n {t('botlit.dashboard.quickActions.title', 'Quick Actions')}\n </h2>\n <div className=\"mt-4 grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Link\n to={getPath('bots/new')}\n className=\"flex flex-col items-center gap-2 p-4 rounded-card border border-border-seam bg-bg-surface hover:border-border-strong hover:shadow-elevation-2 transition-[box-shadow,border-color]\"\n >\n <AppWindow className=\"h-8 w-8 text-text-secondary\" />\n <span className=\"text-sm font-medium\">\n {t('botlit.dashboard.quickActions.createBot', 'Create Bot')}\n </span>\n </Link>\n <Link\n to={getPath('agents/new')}\n className=\"flex flex-col items-center gap-2 p-4 rounded-card border border-border-seam bg-bg-surface hover:border-border-strong hover:shadow-elevation-2 transition-[box-shadow,border-color]\"\n >\n <Bot className=\"h-8 w-8 text-text-secondary\" />\n <span className=\"text-sm font-medium\">\n {t('botlit.dashboard.quickActions.buildAgent', 'Build Agent')}\n </span>\n </Link>\n <Link\n to={getPath('knowledge/new')}\n className=\"flex flex-col items-center gap-2 p-4 rounded-card border border-border-seam bg-bg-surface hover:border-border-strong hover:shadow-elevation-2 transition-[box-shadow,border-color]\"\n >\n <BookOpen className=\"h-8 w-8 text-text-secondary\" />\n <span className=\"text-sm font-medium\">\n {t('botlit.dashboard.quickActions.addKnowledge', 'Add Knowledge')}\n </span>\n </Link>\n <a\n href=\"/conversations\"\n className=\"flex flex-col items-center gap-2 p-4 rounded-card border border-border-seam bg-bg-surface hover:border-border-strong hover:shadow-elevation-2 transition-[box-shadow,border-color]\"\n >\n <Zap className=\"h-8 w-8 text-text-secondary\" />\n <span className=\"text-sm font-medium\">\n {t('botlit.dashboard.quickActions.quickChat', 'Quick Chat')}\n </span>\n </a>\n </div>\n </GlassCard>\n </div>\n </PageLayout>\n );\n};\n"],"mappings":"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"}
|