@devalok/shilp-sutra-karm 0.16.1 → 0.18.0
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/_chunks/chat-panel.js +271 -236
- package/dist/_chunks/kanban-board.js +1114 -1078
- package/dist/_chunks/markdown-components.js +35 -0
- package/dist/_chunks/project-card.js +51 -51
- package/dist/_chunks/render-adjustment-type.js +2044 -2037
- package/dist/_chunks/sidebar-scratchpad.js +510 -0
- package/dist/_chunks/task-detail-panel.js +773 -751
- package/dist/admin/adjustments/approved-adjustments.d.ts +2 -1
- package/dist/admin/adjustments/approved-adjustments.d.ts.map +1 -1
- package/dist/admin/adjustments/index.d.ts +1 -0
- package/dist/admin/break/break-admin-skeleton.d.ts +2 -1
- package/dist/admin/break/break-admin-skeleton.d.ts.map +1 -1
- package/dist/admin/break/break-admin.d.ts +2 -1
- package/dist/admin/break/break-admin.d.ts.map +1 -1
- package/dist/admin/break/break-balance.d.ts +2 -1
- package/dist/admin/break/break-balance.d.ts.map +1 -1
- package/dist/admin/break/breaks.d.ts +2 -1
- package/dist/admin/break/breaks.d.ts.map +1 -1
- package/dist/admin/break/delete-break.d.ts +2 -1
- package/dist/admin/break/delete-break.d.ts.map +1 -1
- package/dist/admin/break/edit-break-balance.d.ts +2 -1
- package/dist/admin/break/edit-break-balance.d.ts.map +1 -1
- package/dist/admin/break/edit-break.d.ts +2 -1
- package/dist/admin/break/edit-break.d.ts.map +1 -1
- package/dist/admin/break/header.d.ts +2 -1
- package/dist/admin/break/header.d.ts.map +1 -1
- package/dist/admin/break/index.d.ts +1 -0
- package/dist/admin/break/leave-request.d.ts +2 -1
- package/dist/admin/break/leave-request.d.ts.map +1 -1
- package/dist/admin/break/use-break-date-picker.d.ts +1 -0
- package/dist/admin/dashboard/admin-dashboard.d.ts +7 -6
- package/dist/admin/dashboard/admin-dashboard.d.ts.map +1 -1
- package/dist/admin/dashboard/associate-detail.d.ts +2 -1
- package/dist/admin/dashboard/associate-detail.d.ts.map +1 -1
- package/dist/admin/dashboard/attendance-overview.d.ts +2 -1
- package/dist/admin/dashboard/attendance-overview.d.ts.map +1 -1
- package/dist/admin/dashboard/break-request.d.ts +2 -1
- package/dist/admin/dashboard/break-request.d.ts.map +1 -1
- package/dist/admin/dashboard/calendar.d.ts +2 -1
- package/dist/admin/dashboard/calendar.d.ts.map +1 -1
- package/dist/admin/dashboard/correction-list.d.ts +2 -1
- package/dist/admin/dashboard/correction-list.d.ts.map +1 -1
- package/dist/admin/dashboard/dashboard-header.d.ts +2 -1
- package/dist/admin/dashboard/dashboard-header.d.ts.map +1 -1
- package/dist/admin/dashboard/dashboard-skeleton.d.ts +2 -1
- package/dist/admin/dashboard/dashboard-skeleton.d.ts.map +1 -1
- package/dist/admin/dashboard/index.d.ts +1 -0
- package/dist/admin/dashboard/leave-requests.d.ts +2 -1
- package/dist/admin/dashboard/leave-requests.d.ts.map +1 -1
- package/dist/admin/dashboard/render-date.d.ts +2 -1
- package/dist/admin/dashboard/render-date.d.ts.map +1 -1
- package/dist/admin/dashboard/use-calendar-navigation.d.ts +1 -0
- package/dist/admin/dashboard/use-calendar-navigation.d.ts.map +1 -1
- package/dist/admin/dashboard/use-leave-request-interaction.d.ts +1 -0
- package/dist/admin/icons.d.ts +1 -0
- package/dist/admin/index.d.ts +1 -0
- package/dist/admin/types.d.ts +1 -0
- package/dist/admin/utils/date-range-utils.d.ts +1 -0
- package/dist/admin/utils/date-utils.d.ts +1 -0
- package/dist/admin/utils/emoji-utils.d.ts +1 -0
- package/dist/admin/utils/render-adjustment-type.d.ts +1 -0
- package/dist/admin/utils/render-status.d.ts +1 -0
- package/dist/board/board-column.d.ts +2 -1
- package/dist/board/board-column.d.ts.map +1 -1
- package/dist/board/board-constants.d.ts +6 -5
- package/dist/board/board-constants.d.ts.map +1 -1
- package/dist/board/board-context.d.ts +2 -1
- package/dist/board/board-context.d.ts.map +1 -1
- package/dist/board/board-toolbar.d.ts +4 -3
- package/dist/board/board-toolbar.d.ts.map +1 -1
- package/dist/board/board-types.d.ts +1 -0
- package/dist/board/board-utils.d.ts +1 -0
- package/dist/board/bulk-action-bar.d.ts +4 -3
- package/dist/board/bulk-action-bar.d.ts.map +1 -1
- package/dist/board/column-empty.d.ts +4 -6
- package/dist/board/column-empty.d.ts.map +1 -1
- package/dist/board/column-header.d.ts +4 -5
- package/dist/board/column-header.d.ts.map +1 -1
- package/dist/board/index.d.ts +1 -0
- package/dist/board/kanban-board.d.ts +1 -0
- package/dist/board/kanban-board.d.ts.map +1 -1
- package/dist/board/task-card.d.ts +5 -4
- package/dist/board/task-card.d.ts.map +1 -1
- package/dist/board/task-context-menu.d.ts +3 -4
- package/dist/board/task-context-menu.d.ts.map +1 -1
- package/dist/board/use-board-filters.d.ts +1 -0
- package/dist/board/use-board-keyboard.d.ts +1 -0
- package/dist/chat/chat-input.d.ts +2 -1
- package/dist/chat/chat-input.d.ts.map +1 -1
- package/dist/chat/chat-panel.d.ts +2 -1
- package/dist/chat/chat-panel.d.ts.map +1 -1
- package/dist/chat/conversation-list.d.ts +2 -1
- package/dist/chat/conversation-list.d.ts.map +1 -1
- package/dist/chat/index.d.ts +1 -0
- package/dist/chat/markdown-components.d.ts +1 -0
- package/dist/chat/message-list.d.ts +2 -1
- package/dist/chat/message-list.d.ts.map +1 -1
- package/dist/chat/streaming-text.d.ts +4 -1
- package/dist/chat/streaming-text.d.ts.map +1 -1
- package/dist/client/accent-provider.d.ts +1 -0
- package/dist/client/client-portal-header.d.ts +1 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/project-card.d.ts +1 -0
- package/dist/dashboard/attendance-cta.d.ts +2 -1
- package/dist/dashboard/attendance-cta.d.ts.map +1 -1
- package/dist/dashboard/daily-brief.d.ts +2 -2
- package/dist/dashboard/daily-brief.d.ts.map +1 -1
- package/dist/dashboard/index.d.ts +1 -0
- package/dist/dashboard/index.js +5 -267
- package/dist/dashboard/scratchpad-widget.d.ts +2 -2
- package/dist/dashboard/scratchpad-widget.d.ts.map +1 -1
- package/dist/dashboard/sidebar-scratchpad.d.ts +2 -2
- package/dist/dashboard/sidebar-scratchpad.d.ts.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +211 -103
- package/dist/page-skeletons.d.ts +3 -2
- package/dist/page-skeletons.d.ts.map +1 -1
- package/dist/shell/karm-command-registry.d.ts +4 -0
- package/dist/shell/karm-command-registry.d.ts.map +1 -0
- package/dist/tasks/activity-tab.d.ts +2 -2
- package/dist/tasks/activity-tab.d.ts.map +1 -1
- package/dist/tasks/conversation-tab.d.ts +2 -2
- package/dist/tasks/conversation-tab.d.ts.map +1 -1
- package/dist/tasks/files-tab.d.ts +2 -2
- package/dist/tasks/files-tab.d.ts.map +1 -1
- package/dist/tasks/index.d.ts +1 -0
- package/dist/tasks/review-tab.d.ts +2 -2
- package/dist/tasks/review-tab.d.ts.map +1 -1
- package/dist/tasks/subtasks-tab.d.ts +2 -2
- package/dist/tasks/subtasks-tab.d.ts.map +1 -1
- package/dist/tasks/task-constants.d.ts +1 -0
- package/dist/tasks/task-detail-panel.d.ts +2 -1
- package/dist/tasks/task-detail-panel.d.ts.map +1 -1
- package/dist/tasks/task-properties.d.ts +2 -2
- package/dist/tasks/task-properties.d.ts.map +1 -1
- package/dist/tasks/task-utils.d.ts +9 -0
- package/dist/tasks/task-utils.d.ts.map +1 -0
- package/dist/utils/use-composed-ref.d.ts +1 -0
- package/package.json +80 -78
- package/dist/_chunks/daily-brief.js +0 -226
|
@@ -1,236 +1,268 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import * as
|
|
4
|
-
import { useRef as
|
|
5
|
-
import { Sheet as
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
"a",
|
|
31
|
-
{
|
|
32
|
-
href: l,
|
|
33
|
-
target: "_blank",
|
|
34
|
-
rel: "noopener noreferrer",
|
|
35
|
-
className: "text-interactive underline hover:text-interactive-hover",
|
|
36
|
-
...d,
|
|
37
|
-
children: a
|
|
38
|
-
}
|
|
39
|
-
);
|
|
40
|
-
}
|
|
41
|
-
}, P = y.forwardRef(
|
|
42
|
-
function({ text: a }, d) {
|
|
43
|
-
return /* @__PURE__ */ t("div", { ref: d, "aria-live": "polite", children: [
|
|
44
|
-
/* @__PURE__ */ e(T, { components: H, children: a }),
|
|
45
|
-
/* @__PURE__ */ e("span", { className: "inline-block h-4 w-2 animate-pulse bg-text-secondary ml-ds-01" })
|
|
2
|
+
import { jsxs as s, jsx as e, Fragment as X } from "react/jsx-runtime";
|
|
3
|
+
import * as w from "react";
|
|
4
|
+
import { useRef as R, useEffect as Y, useState as P, useCallback as T } from "react";
|
|
5
|
+
import { Sheet as _, SheetContent as J, SheetTitle as Q } from "@devalok/shilp-sutra/ui/sheet";
|
|
6
|
+
import { AnimatePresence as W, motion as g } from "framer-motion";
|
|
7
|
+
import { cn as x } from "@devalok/shilp-sutra/ui/lib/utils";
|
|
8
|
+
import { springs as v } from "@devalok/shilp-sutra/ui/lib/motion";
|
|
9
|
+
import { u as Z } from "./use-composed-ref.js";
|
|
10
|
+
import { m as A } from "./markdown-components.js";
|
|
11
|
+
import { M as L } from "./vendor.js";
|
|
12
|
+
import { IconRobot as C, IconAlertCircle as $, IconUser as O, IconSquare as S, IconSend as ee, IconMessagePlus as E, IconMessage as se, IconArchive as ae, IconTrash as re, IconChevronDown as te, IconHistory as ie, IconX as le } from "@tabler/icons-react";
|
|
13
|
+
import { Button as D } from "@devalok/shilp-sutra/ui/button";
|
|
14
|
+
import { formatRelativeTime as de } from "@devalok/shilp-sutra/ui/lib/date-utils";
|
|
15
|
+
import { DropdownMenu as ce, DropdownMenuTrigger as ne, DropdownMenuContent as oe, DropdownMenuItem as me } from "@devalok/shilp-sutra/ui";
|
|
16
|
+
const H = w.forwardRef(
|
|
17
|
+
function({ text: l, isComplete: d = !1, className: i, ...f }, c) {
|
|
18
|
+
return /* @__PURE__ */ s("div", { ref: c, className: x(i), ...f, "aria-live": "off", children: [
|
|
19
|
+
/* @__PURE__ */ e(L, { components: A, children: l }),
|
|
20
|
+
!d && /* @__PURE__ */ e("span", { className: "inline-block h-4 w-2 animate-pulse bg-surface-fg-muted ml-ds-01" }),
|
|
21
|
+
/* @__PURE__ */ e(
|
|
22
|
+
"span",
|
|
23
|
+
{
|
|
24
|
+
className: "sr-only",
|
|
25
|
+
"aria-live": "polite",
|
|
26
|
+
"aria-atomic": "true",
|
|
27
|
+
children: d ? l : ""
|
|
28
|
+
}
|
|
29
|
+
)
|
|
46
30
|
] });
|
|
47
31
|
}
|
|
48
32
|
);
|
|
49
|
-
|
|
50
|
-
const
|
|
33
|
+
H.displayName = "StreamingText";
|
|
34
|
+
const K = w.forwardRef(
|
|
51
35
|
function({
|
|
52
|
-
messages:
|
|
36
|
+
messages: l,
|
|
53
37
|
isStreaming: d = !1,
|
|
54
|
-
streamingText:
|
|
55
|
-
isLoadingMessages:
|
|
38
|
+
streamingText: i = "",
|
|
39
|
+
isLoadingMessages: f = !1,
|
|
56
40
|
emptyTitle: c = "Karm AI",
|
|
57
|
-
emptyDescription:
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
/* @__PURE__ */ e("
|
|
68
|
-
|
|
69
|
-
/* @__PURE__ */ e("
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
41
|
+
emptyDescription: u = "Ask me about tasks, projects, attendance, or anything else.",
|
|
42
|
+
className: o,
|
|
43
|
+
...m
|
|
44
|
+
}, n) {
|
|
45
|
+
const h = R(null), t = Z(h, n);
|
|
46
|
+
return Y(() => {
|
|
47
|
+
const a = h.current;
|
|
48
|
+
a && (a.scrollTop = a.scrollHeight);
|
|
49
|
+
}, [l, i]), f ? /* @__PURE__ */ e("div", { ref: n, className: x("flex flex-1 items-center justify-center", o), ...m, children: /* @__PURE__ */ s("div", { className: "flex flex-col items-center gap-ds-03", children: [
|
|
50
|
+
/* @__PURE__ */ e("div", { className: "h-ds-xs w-ds-xs animate-spin rounded-ds-full border-2 border-surface-border border-t-transparent" }),
|
|
51
|
+
/* @__PURE__ */ e("p", { className: "text-ds-sm text-surface-fg-subtle", children: "Loading messages..." })
|
|
52
|
+
] }) }) : l.length === 0 && !d ? /* @__PURE__ */ e("div", { ref: n, className: x("flex flex-1 items-center justify-center p-ds-06", o), ...m, children: /* @__PURE__ */ s("div", { className: "flex flex-col items-center gap-ds-04 text-center", children: [
|
|
53
|
+
/* @__PURE__ */ e("div", { className: "flex h-ds-lg w-ds-lg items-center justify-center rounded-ds-full bg-surface-3", children: /* @__PURE__ */ e(C, { className: "h-ico-lg w-ico-lg text-surface-fg-muted" }) }),
|
|
54
|
+
/* @__PURE__ */ e("h3", { className: "text-ds-base text-surface-fg", children: c }),
|
|
55
|
+
/* @__PURE__ */ e("p", { className: "text-ds-sm max-w-[280px] text-surface-fg-subtle", children: u })
|
|
56
|
+
] }) }) : /* @__PURE__ */ e("div", { ref: t, className: x("no-scrollbar flex-1 overflow-y-auto p-ds-05", o), ...m, children: /* @__PURE__ */ e("div", { className: "flex flex-col gap-ds-05", role: "log", "aria-label": "Chat messages", children: /* @__PURE__ */ s(W, { initial: !1, children: [
|
|
57
|
+
l.map((a) => a.role === "SYSTEM" ? /* @__PURE__ */ e(
|
|
58
|
+
g.div,
|
|
59
|
+
{
|
|
60
|
+
initial: { opacity: 0, y: 10 },
|
|
61
|
+
animate: { opacity: 1, y: 0 },
|
|
62
|
+
transition: v.snappy,
|
|
63
|
+
className: "flex justify-center",
|
|
64
|
+
children: /* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03 rounded-ds-lg bg-error-3 px-ds-04 py-ds-03", children: [
|
|
65
|
+
/* @__PURE__ */ e($, { className: "h-ico-sm w-ico-sm shrink-0 text-error-11" }),
|
|
66
|
+
/* @__PURE__ */ e("p", { className: "text-ds-sm text-error-11", children: a.content })
|
|
67
|
+
] })
|
|
68
|
+
},
|
|
69
|
+
a.id
|
|
70
|
+
) : a.role === "USER" ? /* @__PURE__ */ e(
|
|
71
|
+
g.div,
|
|
72
|
+
{
|
|
73
|
+
initial: { opacity: 0, y: 10 },
|
|
74
|
+
animate: { opacity: 1, y: 0 },
|
|
75
|
+
transition: v.snappy,
|
|
76
|
+
className: "flex justify-end",
|
|
77
|
+
children: /* @__PURE__ */ s("div", { className: "flex max-w-[85%] items-start gap-ds-03", children: [
|
|
78
|
+
/* @__PURE__ */ e("div", { className: "rounded-ds-2xl rounded-br-ds-sm bg-accent-9 px-ds-04 py-ds-03 text-accent-fg", children: /* @__PURE__ */ e("p", { className: "text-ds-md whitespace-pre-wrap", children: a.content }) }),
|
|
79
|
+
/* @__PURE__ */ e("div", { className: "flex h-ds-xs-plus w-ds-xs-plus shrink-0 items-center justify-center rounded-ds-full bg-surface-3", children: /* @__PURE__ */ e(O, { className: "h-ico-sm w-ico-sm text-surface-fg-muted" }) })
|
|
80
|
+
] })
|
|
81
|
+
},
|
|
82
|
+
a.id
|
|
83
|
+
) : /* @__PURE__ */ e(
|
|
84
|
+
g.div,
|
|
85
|
+
{
|
|
86
|
+
initial: { opacity: 0, y: 10 },
|
|
87
|
+
animate: { opacity: 1, y: 0 },
|
|
88
|
+
transition: v.snappy,
|
|
89
|
+
className: "flex justify-start",
|
|
90
|
+
children: /* @__PURE__ */ s("div", { className: "flex max-w-[85%] items-start gap-ds-03", children: [
|
|
91
|
+
/* @__PURE__ */ e("div", { className: "flex h-ds-xs-plus w-ds-xs-plus shrink-0 items-center justify-center rounded-ds-full bg-surface-3", children: /* @__PURE__ */ e(C, { className: "h-ico-sm w-ico-sm text-surface-fg-muted" }) }),
|
|
92
|
+
/* @__PURE__ */ e("div", { className: "rounded-ds-2xl rounded-bl-ds-sm bg-surface-3 px-ds-04 py-ds-03", children: /* @__PURE__ */ e("div", { className: "text-ds-md text-surface-fg", children: /* @__PURE__ */ e(L, { components: A, children: a.content }) }) })
|
|
93
|
+
] })
|
|
94
|
+
},
|
|
95
|
+
a.id
|
|
96
|
+
)),
|
|
97
|
+
d && i && /* @__PURE__ */ e(
|
|
98
|
+
g.div,
|
|
99
|
+
{
|
|
100
|
+
initial: { opacity: 0, y: 10 },
|
|
101
|
+
animate: { opacity: 1, y: 0 },
|
|
102
|
+
transition: v.snappy,
|
|
103
|
+
className: "flex justify-start",
|
|
104
|
+
children: /* @__PURE__ */ s("div", { className: "flex max-w-[85%] items-start gap-ds-03", children: [
|
|
105
|
+
/* @__PURE__ */ e("div", { className: "flex h-ds-xs-plus w-ds-xs-plus shrink-0 items-center justify-center rounded-ds-full bg-surface-3", children: /* @__PURE__ */ e(C, { className: "h-ico-sm w-ico-sm text-surface-fg-muted" }) }),
|
|
106
|
+
/* @__PURE__ */ e("div", { className: "rounded-ds-2xl rounded-bl-ds-sm bg-surface-3 px-ds-04 py-ds-03", children: /* @__PURE__ */ e("div", { className: "text-ds-md text-surface-fg", children: /* @__PURE__ */ e(H, { text: i }) }) })
|
|
107
|
+
] })
|
|
108
|
+
},
|
|
109
|
+
"streaming-text"
|
|
110
|
+
),
|
|
111
|
+
d && !i && /* @__PURE__ */ e(
|
|
112
|
+
g.div,
|
|
113
|
+
{
|
|
114
|
+
initial: { opacity: 0, y: 10 },
|
|
115
|
+
animate: { opacity: 1, y: 0 },
|
|
116
|
+
transition: v.snappy,
|
|
117
|
+
className: "flex justify-start",
|
|
118
|
+
children: /* @__PURE__ */ s("div", { className: "flex max-w-[85%] items-start gap-ds-03", children: [
|
|
119
|
+
/* @__PURE__ */ e("div", { className: "flex h-ds-xs-plus w-ds-xs-plus shrink-0 items-center justify-center rounded-ds-full bg-surface-3", children: /* @__PURE__ */ e(C, { className: "h-ico-sm w-ico-sm text-surface-fg-muted" }) }),
|
|
120
|
+
/* @__PURE__ */ e("div", { className: "rounded-ds-2xl rounded-bl-ds-sm bg-surface-3 px-ds-04 py-ds-03", children: /* @__PURE__ */ e("div", { className: "flex items-center gap-ds-02b py-ds-02", children: [0, 1, 2].map((a) => /* @__PURE__ */ e(
|
|
121
|
+
g.span,
|
|
122
|
+
{
|
|
123
|
+
className: "h-2 w-2 rounded-ds-full bg-surface-fg-subtle",
|
|
124
|
+
animate: { y: [0, -4, 0] },
|
|
125
|
+
transition: { duration: 0.6, repeat: 1 / 0, delay: a * 0.15 }
|
|
126
|
+
},
|
|
127
|
+
a
|
|
128
|
+
)) }) })
|
|
129
|
+
] })
|
|
130
|
+
},
|
|
131
|
+
"streaming-dots"
|
|
132
|
+
)
|
|
133
|
+
] }) }) });
|
|
94
134
|
}
|
|
95
135
|
);
|
|
96
|
-
|
|
97
|
-
const
|
|
136
|
+
K.displayName = "MessageList";
|
|
137
|
+
const U = w.forwardRef(
|
|
98
138
|
function({
|
|
99
|
-
onSubmit:
|
|
139
|
+
onSubmit: l,
|
|
100
140
|
onCancel: d,
|
|
101
|
-
isStreaming:
|
|
102
|
-
placeholder:
|
|
103
|
-
disclaimer: c = "AI responses may be inaccurate. Verify important information."
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
(
|
|
113
|
-
|
|
141
|
+
isStreaming: i = !1,
|
|
142
|
+
placeholder: f = "Ask Karm AI...",
|
|
143
|
+
disclaimer: c = "AI responses may be inaccurate. Verify important information.",
|
|
144
|
+
className: u,
|
|
145
|
+
...o
|
|
146
|
+
}, m) {
|
|
147
|
+
const [n, h] = P(""), t = R(null), a = T(() => {
|
|
148
|
+
const r = t.current;
|
|
149
|
+
r && (r.style.height = "auto", r.style.height = Math.min(r.scrollHeight, 160) + "px");
|
|
150
|
+
}, []), y = T(() => {
|
|
151
|
+
const r = n.trim();
|
|
152
|
+
!r || i || (h(""), t.current && (t.current.style.height = "auto"), l(r));
|
|
153
|
+
}, [n, i, l]), N = T(
|
|
154
|
+
(r) => {
|
|
155
|
+
r.key === "Enter" && !r.shiftKey && (r.preventDefault(), y());
|
|
114
156
|
},
|
|
115
|
-
[
|
|
157
|
+
[y]
|
|
116
158
|
);
|
|
117
|
-
return /* @__PURE__ */
|
|
118
|
-
/* @__PURE__ */
|
|
159
|
+
return /* @__PURE__ */ s("div", { ref: m, className: x("border-t border-surface-border-strong bg-surface-1 p-ds-04", u), ...o, children: [
|
|
160
|
+
/* @__PURE__ */ s("div", { className: "flex items-end gap-ds-03 rounded-ds-xl border border-surface-border-strong bg-surface-3 px-ds-04 py-ds-03", children: [
|
|
119
161
|
/* @__PURE__ */ e(
|
|
120
162
|
"textarea",
|
|
121
163
|
{
|
|
122
|
-
ref:
|
|
123
|
-
value:
|
|
124
|
-
onChange: (
|
|
125
|
-
h(
|
|
164
|
+
ref: t,
|
|
165
|
+
value: n,
|
|
166
|
+
onChange: (r) => {
|
|
167
|
+
h(r.target.value), a();
|
|
126
168
|
},
|
|
127
|
-
onKeyDown:
|
|
128
|
-
placeholder:
|
|
169
|
+
onKeyDown: N,
|
|
170
|
+
placeholder: f,
|
|
129
171
|
"aria-label": "Type a message",
|
|
130
|
-
disabled:
|
|
172
|
+
disabled: i,
|
|
131
173
|
rows: 1,
|
|
132
|
-
className: "text-ds-md no-scrollbar max-h-[160px] min-h-ds-xs flex-1 resize-none bg-transparent text-
|
|
174
|
+
className: "text-ds-md no-scrollbar max-h-[160px] min-h-ds-xs flex-1 resize-none bg-transparent text-surface-fg placeholder:text-surface-fg-subtle focus:outline-none disabled:opacity-action-disabled"
|
|
133
175
|
}
|
|
134
176
|
),
|
|
135
|
-
|
|
177
|
+
i ? /* @__PURE__ */ e(D, { variant: "solid", color: "error", size: "icon-sm", className: "h-ds-sm w-ds-sm shrink-0 rounded-ds-lg", onClick: d, "aria-label": "Stop generating", children: /* @__PURE__ */ e(S, { className: "h-ico-sm w-ico-sm" }) }) : /* @__PURE__ */ e(D, { size: "icon-sm", className: "h-ds-sm w-ds-sm shrink-0 rounded-ds-lg", onClick: y, disabled: !n.trim(), "aria-label": "Send message", children: /* @__PURE__ */ e(ee, { className: "h-ico-sm w-ico-sm" }) })
|
|
136
178
|
] }),
|
|
137
|
-
c && /* @__PURE__ */ e("p", { className: "text-ds-sm mt-ds-02b text-center text-
|
|
179
|
+
c && /* @__PURE__ */ e("p", { className: "text-ds-sm mt-ds-02b text-center text-surface-fg-subtle", children: c })
|
|
138
180
|
] });
|
|
139
181
|
}
|
|
140
182
|
);
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
const a = new Date(s), l = (/* @__PURE__ */ new Date()).getTime() - a.getTime(), m = Math.floor(l / 6e4);
|
|
144
|
-
if (m < 1) return "Just now";
|
|
145
|
-
if (m < 60) return `${m}m ago`;
|
|
146
|
-
const c = Math.floor(m / 60);
|
|
147
|
-
if (c < 24) return `${c}h ago`;
|
|
148
|
-
const x = Math.floor(c / 24);
|
|
149
|
-
return x < 7 ? `${x}d ago` : a.toLocaleDateString("en-IN", {
|
|
150
|
-
day: "numeric",
|
|
151
|
-
month: "short"
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
const K = y.forwardRef(
|
|
183
|
+
U.displayName = "ChatInput";
|
|
184
|
+
const z = w.forwardRef(
|
|
155
185
|
function({
|
|
156
|
-
conversations:
|
|
186
|
+
conversations: l,
|
|
157
187
|
activeConversationId: d,
|
|
158
|
-
isLoading:
|
|
159
|
-
onSelect:
|
|
188
|
+
isLoading: i = !1,
|
|
189
|
+
onSelect: f,
|
|
160
190
|
onNewChat: c,
|
|
161
|
-
onArchive:
|
|
162
|
-
onDelete: o
|
|
191
|
+
onArchive: u,
|
|
192
|
+
onDelete: o,
|
|
193
|
+
className: m,
|
|
194
|
+
...n
|
|
163
195
|
}, h) {
|
|
164
|
-
return /* @__PURE__ */
|
|
165
|
-
/* @__PURE__ */
|
|
166
|
-
/* @__PURE__ */ e("h3", { className: "text-ds-md font-semibold text-
|
|
167
|
-
/* @__PURE__ */
|
|
196
|
+
return /* @__PURE__ */ s("div", { ref: h, className: x("flex flex-1 flex-col overflow-hidden", m), ...n, children: [
|
|
197
|
+
/* @__PURE__ */ s("div", { className: "flex items-center justify-between border-b border-surface-border-strong px-ds-05 py-ds-04", children: [
|
|
198
|
+
/* @__PURE__ */ e("h3", { className: "text-ds-md font-semibold text-surface-fg", children: "Conversations" }),
|
|
199
|
+
/* @__PURE__ */ s(
|
|
168
200
|
"button",
|
|
169
201
|
{
|
|
170
202
|
onClick: c,
|
|
171
|
-
className: "flex items-center gap-ds-02b rounded-ds-lg px-ds-03 py-ds-02b text-
|
|
203
|
+
className: "flex items-center gap-ds-02b rounded-ds-lg px-ds-03 py-ds-02b text-surface-fg-muted transition-colors hover:bg-surface-2",
|
|
172
204
|
children: [
|
|
173
|
-
/* @__PURE__ */ e(
|
|
205
|
+
/* @__PURE__ */ e(E, { className: "h-ico-sm w-ico-sm" }),
|
|
174
206
|
/* @__PURE__ */ e("span", { className: "text-ds-sm", children: "New Chat" })
|
|
175
207
|
]
|
|
176
208
|
}
|
|
177
209
|
)
|
|
178
210
|
] }),
|
|
179
|
-
/* @__PURE__ */ e("div", { className: "no-scrollbar flex-1 overflow-y-auto", children:
|
|
180
|
-
/* @__PURE__ */ e(
|
|
181
|
-
/* @__PURE__ */ e("p", { className: "text-ds-md text-
|
|
182
|
-
] }) : /* @__PURE__ */ e("div", { className: "flex flex-col", children:
|
|
211
|
+
/* @__PURE__ */ e("div", { className: "no-scrollbar flex-1 overflow-y-auto", children: i ? /* @__PURE__ */ e("div", { className: "flex items-center justify-center py-12", children: /* @__PURE__ */ e("div", { className: "h-ico-md w-ico-md animate-spin rounded-ds-full border-2 border-surface-border border-t-transparent" }) }) : l.length === 0 ? /* @__PURE__ */ s("div", { className: "flex flex-col items-center justify-center gap-ds-03 py-12", children: [
|
|
212
|
+
/* @__PURE__ */ e(se, { className: "h-ds-sm w-ds-sm text-surface-fg-subtle" }),
|
|
213
|
+
/* @__PURE__ */ e("p", { className: "text-ds-md text-surface-fg-subtle", children: "No conversations yet" })
|
|
214
|
+
] }) : /* @__PURE__ */ e("div", { className: "flex flex-col", children: l.map((t) => /* @__PURE__ */ s(
|
|
183
215
|
"div",
|
|
184
216
|
{
|
|
185
|
-
className:
|
|
186
|
-
"group flex items-center gap-ds-04 border-b border-border
|
|
187
|
-
d ===
|
|
217
|
+
className: x(
|
|
218
|
+
"group flex items-center gap-ds-04 border-b border-surface-border px-ds-05 py-ds-04 transition-colors hover:bg-surface-2",
|
|
219
|
+
d === t.id && "bg-surface-2"
|
|
188
220
|
),
|
|
189
221
|
children: [
|
|
190
|
-
/* @__PURE__ */
|
|
222
|
+
/* @__PURE__ */ s(
|
|
191
223
|
"button",
|
|
192
224
|
{
|
|
193
|
-
onClick: () =>
|
|
225
|
+
onClick: () => f(t.id),
|
|
194
226
|
className: "flex min-w-0 flex-1 flex-col gap-ds-01 text-left",
|
|
195
227
|
children: [
|
|
196
|
-
/* @__PURE__ */ e("p", { className: "text-ds-md truncate text-
|
|
197
|
-
/* @__PURE__ */ e("p", { className: "text-ds-sm text-
|
|
228
|
+
/* @__PURE__ */ e("p", { className: "text-ds-md truncate text-surface-fg", children: t.title || "Untitled conversation" }),
|
|
229
|
+
/* @__PURE__ */ e("p", { className: "text-ds-sm text-surface-fg-subtle", children: de(t.updatedAt) })
|
|
198
230
|
]
|
|
199
231
|
}
|
|
200
232
|
),
|
|
201
|
-
/* @__PURE__ */
|
|
202
|
-
|
|
233
|
+
/* @__PURE__ */ s("div", { className: "flex shrink-0 items-center gap-ds-02 opacity-0 transition-opacity group-hover:opacity-100", children: [
|
|
234
|
+
u && /* @__PURE__ */ e(
|
|
203
235
|
"button",
|
|
204
236
|
{
|
|
205
|
-
onClick: (
|
|
206
|
-
|
|
237
|
+
onClick: (a) => {
|
|
238
|
+
a.stopPropagation(), u(t.id);
|
|
207
239
|
},
|
|
208
|
-
className: "flex h-ds-xs-plus w-ds-xs-plus items-center justify-center rounded-ds-md text-
|
|
240
|
+
className: "flex h-ds-xs-plus w-ds-xs-plus items-center justify-center rounded-ds-md text-surface-fg-subtle transition-colors hover:bg-surface-3 hover:text-surface-fg-muted",
|
|
209
241
|
"aria-label": "Archive conversation",
|
|
210
|
-
children: /* @__PURE__ */ e(
|
|
242
|
+
children: /* @__PURE__ */ e(ae, { className: "h-ico-sm w-ico-sm" })
|
|
211
243
|
}
|
|
212
244
|
),
|
|
213
245
|
o && /* @__PURE__ */ e(
|
|
214
246
|
"button",
|
|
215
247
|
{
|
|
216
|
-
onClick: (
|
|
217
|
-
|
|
248
|
+
onClick: (a) => {
|
|
249
|
+
a.stopPropagation(), o(t.id);
|
|
218
250
|
},
|
|
219
|
-
className: "flex h-ds-xs-plus w-ds-xs-plus items-center justify-center rounded-ds-md text-
|
|
251
|
+
className: "flex h-ds-xs-plus w-ds-xs-plus items-center justify-center rounded-ds-md text-surface-fg-subtle transition-colors hover:bg-error-3 hover:text-error-11",
|
|
220
252
|
"aria-label": "Delete conversation",
|
|
221
|
-
children: /* @__PURE__ */ e(
|
|
253
|
+
children: /* @__PURE__ */ e(re, { className: "h-ico-sm w-ico-sm" })
|
|
222
254
|
}
|
|
223
255
|
)
|
|
224
256
|
] })
|
|
225
257
|
]
|
|
226
258
|
},
|
|
227
|
-
|
|
259
|
+
t.id
|
|
228
260
|
)) }) })
|
|
229
261
|
] });
|
|
230
262
|
}
|
|
231
263
|
);
|
|
232
|
-
|
|
233
|
-
const
|
|
264
|
+
z.displayName = "ConversationList";
|
|
265
|
+
const fe = [
|
|
234
266
|
{ id: "devadoot", name: "Devadoot", desc: "General Assistant" },
|
|
235
267
|
{ id: "prahari", name: "Prahari", desc: "Attendance & Time" },
|
|
236
268
|
{ id: "sutradhar", name: "Sutradhar", desc: "Tasks & Projects" },
|
|
@@ -238,126 +270,129 @@ const ie = [
|
|
|
238
270
|
{ id: "vidwan", name: "Vidwan", desc: "Knowledge Expert" },
|
|
239
271
|
{ id: "sanchalak", name: "Sanchalak", desc: "Manager Advisor" },
|
|
240
272
|
{ id: "dwar-palak", name: "Dwar-Palak", desc: "Access Control" }
|
|
241
|
-
],
|
|
273
|
+
], ue = w.forwardRef(
|
|
242
274
|
function({
|
|
243
|
-
isOpen:
|
|
275
|
+
isOpen: l,
|
|
244
276
|
onOpenChange: d,
|
|
245
|
-
messages:
|
|
246
|
-
conversations:
|
|
247
|
-
agents: c =
|
|
248
|
-
selectedAgentId:
|
|
277
|
+
messages: i,
|
|
278
|
+
conversations: f,
|
|
279
|
+
agents: c = fe,
|
|
280
|
+
selectedAgentId: u = "devadoot",
|
|
249
281
|
activeConversationId: o,
|
|
250
|
-
isStreaming:
|
|
251
|
-
streamingText:
|
|
252
|
-
isLoadingMessages:
|
|
253
|
-
isLoadingConversations:
|
|
254
|
-
onSendMessage:
|
|
255
|
-
onCancelStream:
|
|
256
|
-
onSelectAgent:
|
|
257
|
-
onStartNewChat:
|
|
258
|
-
onSelectConversation:
|
|
259
|
-
onArchiveConversation:
|
|
260
|
-
onDeleteConversation:
|
|
282
|
+
isStreaming: m = !1,
|
|
283
|
+
streamingText: n = "",
|
|
284
|
+
isLoadingMessages: h = !1,
|
|
285
|
+
isLoadingConversations: t = !1,
|
|
286
|
+
onSendMessage: a,
|
|
287
|
+
onCancelStream: y,
|
|
288
|
+
onSelectAgent: N,
|
|
289
|
+
onStartNewChat: r,
|
|
290
|
+
onSelectConversation: I,
|
|
291
|
+
onArchiveConversation: F,
|
|
292
|
+
onDeleteConversation: G,
|
|
293
|
+
className: V,
|
|
294
|
+
...q
|
|
261
295
|
}, B) {
|
|
262
|
-
const [
|
|
263
|
-
return /* @__PURE__ */ e(
|
|
264
|
-
|
|
296
|
+
const [M, j] = P(!1), b = c.find((p) => p.id === u) ?? c[0];
|
|
297
|
+
return /* @__PURE__ */ e(_, { open: l, onOpenChange: d, children: /* @__PURE__ */ s(
|
|
298
|
+
J,
|
|
265
299
|
{
|
|
266
300
|
ref: B,
|
|
267
301
|
side: "right",
|
|
268
|
-
className: "flex w-full flex-col gap-0 border-l border-border bg-
|
|
302
|
+
className: x("flex w-full flex-col gap-0 border-l border-surface-border-strong bg-surface-1 p-0 sm:max-w-[480px] [&>button]:hidden", V),
|
|
303
|
+
...q,
|
|
269
304
|
children: [
|
|
270
|
-
/* @__PURE__ */ e(
|
|
271
|
-
/* @__PURE__ */
|
|
272
|
-
/* @__PURE__ */ e("div", { className: "flex-1", children: /* @__PURE__ */
|
|
273
|
-
/* @__PURE__ */ e(
|
|
305
|
+
/* @__PURE__ */ e(Q, { className: "sr-only", children: "AI Chat" }),
|
|
306
|
+
/* @__PURE__ */ s("div", { className: "flex items-center gap-ds-03 border-b border-surface-border-strong px-ds-05 py-ds-04", children: [
|
|
307
|
+
/* @__PURE__ */ e("div", { className: "flex-1", children: /* @__PURE__ */ s(ce, { children: [
|
|
308
|
+
/* @__PURE__ */ e(ne, { asChild: !0, children: /* @__PURE__ */ s(
|
|
274
309
|
"button",
|
|
275
310
|
{
|
|
276
|
-
className: "flex items-center gap-ds-02b rounded-ds-lg px-ds-03 py-ds-02b transition-colors hover:bg-
|
|
311
|
+
className: "flex items-center gap-ds-02b rounded-ds-lg px-ds-03 py-ds-02b transition-colors hover:bg-surface-2",
|
|
277
312
|
children: [
|
|
278
|
-
/* @__PURE__ */ e("span", { className: "text-ds-base text-
|
|
279
|
-
/* @__PURE__ */ e("span", { className: "text-ds-sm text-
|
|
280
|
-
/* @__PURE__ */ e(
|
|
313
|
+
/* @__PURE__ */ e("span", { className: "text-ds-base text-surface-fg", children: b == null ? void 0 : b.name }),
|
|
314
|
+
/* @__PURE__ */ e("span", { className: "text-ds-sm text-surface-fg-subtle", children: b == null ? void 0 : b.desc }),
|
|
315
|
+
/* @__PURE__ */ e(te, { className: "h-ico-sm w-ico-sm text-surface-fg-subtle" })
|
|
281
316
|
]
|
|
282
317
|
}
|
|
283
318
|
) }),
|
|
284
|
-
/* @__PURE__ */ e(
|
|
285
|
-
|
|
319
|
+
/* @__PURE__ */ e(oe, { align: "start", className: "w-64", children: c.map((p) => /* @__PURE__ */ e(
|
|
320
|
+
me,
|
|
286
321
|
{
|
|
287
|
-
onClick: () =>
|
|
288
|
-
className:
|
|
289
|
-
children: /* @__PURE__ */
|
|
290
|
-
/* @__PURE__ */ e("span", { className: "text-ds-md text-
|
|
291
|
-
/* @__PURE__ */ e("span", { className: "text-ds-sm text-
|
|
322
|
+
onClick: () => N == null ? void 0 : N(p.id),
|
|
323
|
+
className: u === p.id ? "bg-surface-2" : "",
|
|
324
|
+
children: /* @__PURE__ */ s("div", { className: "flex flex-col", children: [
|
|
325
|
+
/* @__PURE__ */ e("span", { className: "text-ds-md text-surface-fg", children: p.name }),
|
|
326
|
+
/* @__PURE__ */ e("span", { className: "text-ds-sm text-surface-fg-subtle", children: p.desc })
|
|
292
327
|
] })
|
|
293
328
|
},
|
|
294
|
-
|
|
329
|
+
p.id
|
|
295
330
|
)) })
|
|
296
331
|
] }) }),
|
|
297
332
|
/* @__PURE__ */ e(
|
|
298
333
|
"button",
|
|
299
334
|
{
|
|
300
335
|
onClick: () => {
|
|
301
|
-
|
|
336
|
+
r == null || r(), j(!1);
|
|
302
337
|
},
|
|
303
|
-
className: "flex h-ds-sm w-ds-sm items-center justify-center rounded-ds-lg text-
|
|
338
|
+
className: "flex h-ds-sm w-ds-sm items-center justify-center rounded-ds-lg text-surface-fg-muted transition-colors hover:bg-surface-2",
|
|
304
339
|
"aria-label": "New chat",
|
|
305
|
-
children: /* @__PURE__ */ e(
|
|
340
|
+
children: /* @__PURE__ */ e(E, { className: "h-ico-sm w-ico-sm" })
|
|
306
341
|
}
|
|
307
342
|
),
|
|
308
343
|
/* @__PURE__ */ e(
|
|
309
344
|
"button",
|
|
310
345
|
{
|
|
311
|
-
onClick: () =>
|
|
312
|
-
className:
|
|
313
|
-
"flex h-ds-sm w-ds-sm items-center justify-center rounded-ds-lg transition-colors hover:bg-
|
|
314
|
-
|
|
346
|
+
onClick: () => j(!M),
|
|
347
|
+
className: x(
|
|
348
|
+
"flex h-ds-sm w-ds-sm items-center justify-center rounded-ds-lg transition-colors hover:bg-surface-2",
|
|
349
|
+
M ? "bg-surface-2 text-surface-fg" : "text-surface-fg-muted"
|
|
315
350
|
),
|
|
316
351
|
"aria-label": "Conversation history",
|
|
317
|
-
children: /* @__PURE__ */ e(
|
|
352
|
+
children: /* @__PURE__ */ e(ie, { className: "h-ico-sm w-ico-sm" })
|
|
318
353
|
}
|
|
319
354
|
),
|
|
320
355
|
/* @__PURE__ */ e(
|
|
321
356
|
"button",
|
|
322
357
|
{
|
|
323
358
|
onClick: () => d(!1),
|
|
324
|
-
className: "flex h-ds-sm w-ds-sm items-center justify-center rounded-ds-lg text-
|
|
359
|
+
className: "flex h-ds-sm w-ds-sm items-center justify-center rounded-ds-lg text-surface-fg-muted transition-colors hover:bg-surface-2",
|
|
325
360
|
"aria-label": "Close chat",
|
|
326
|
-
children: /* @__PURE__ */ e(
|
|
361
|
+
children: /* @__PURE__ */ e(le, { className: "h-ico-sm w-ico-sm" })
|
|
327
362
|
}
|
|
328
363
|
)
|
|
329
364
|
] }),
|
|
330
|
-
|
|
331
|
-
|
|
365
|
+
M ? /* @__PURE__ */ e(
|
|
366
|
+
z,
|
|
332
367
|
{
|
|
333
|
-
conversations:
|
|
368
|
+
conversations: f,
|
|
334
369
|
activeConversationId: o,
|
|
335
|
-
isLoading:
|
|
336
|
-
onSelect: (
|
|
337
|
-
|
|
370
|
+
isLoading: t,
|
|
371
|
+
onSelect: (p) => {
|
|
372
|
+
I == null || I(p), j(!1);
|
|
338
373
|
},
|
|
339
374
|
onNewChat: () => {
|
|
340
|
-
|
|
375
|
+
r == null || r(), j(!1);
|
|
341
376
|
},
|
|
342
|
-
onArchive:
|
|
343
|
-
onDelete:
|
|
377
|
+
onArchive: F,
|
|
378
|
+
onDelete: G
|
|
344
379
|
}
|
|
345
|
-
) : /* @__PURE__ */
|
|
380
|
+
) : /* @__PURE__ */ s(X, { children: [
|
|
346
381
|
/* @__PURE__ */ e(
|
|
347
|
-
|
|
382
|
+
K,
|
|
348
383
|
{
|
|
349
|
-
messages:
|
|
350
|
-
isStreaming:
|
|
351
|
-
streamingText:
|
|
352
|
-
isLoadingMessages:
|
|
384
|
+
messages: i,
|
|
385
|
+
isStreaming: m,
|
|
386
|
+
streamingText: n,
|
|
387
|
+
isLoadingMessages: h
|
|
353
388
|
}
|
|
354
389
|
),
|
|
355
390
|
/* @__PURE__ */ e(
|
|
356
|
-
|
|
391
|
+
U,
|
|
357
392
|
{
|
|
358
|
-
onSubmit:
|
|
359
|
-
onCancel:
|
|
360
|
-
isStreaming:
|
|
393
|
+
onSubmit: a,
|
|
394
|
+
onCancel: y,
|
|
395
|
+
isStreaming: m
|
|
361
396
|
}
|
|
362
397
|
)
|
|
363
398
|
] })
|
|
@@ -366,11 +401,11 @@ const ie = [
|
|
|
366
401
|
) });
|
|
367
402
|
}
|
|
368
403
|
);
|
|
369
|
-
|
|
404
|
+
ue.displayName = "ChatPanel";
|
|
370
405
|
export {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
406
|
+
U as C,
|
|
407
|
+
K as M,
|
|
408
|
+
H as S,
|
|
409
|
+
ue as a,
|
|
410
|
+
z as b
|
|
376
411
|
};
|