@invergent/agent-chat-react 1.10.0 → 2.0.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/index.cjs +92 -31
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +89 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -228,13 +228,13 @@ var buttonVariants = classVarianceAuthority.cva(
|
|
|
228
228
|
link: "text-primary underline underline-offset-4 hover:underline"
|
|
229
229
|
},
|
|
230
230
|
size: {
|
|
231
|
-
default: "h-10 gap-1.5 px-6 has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4",
|
|
231
|
+
default: "h-11 md:h-10 gap-1.5 px-6 has-data-[icon=inline-end]:pr-4 has-data-[icon=inline-start]:pl-4",
|
|
232
232
|
xs: "h-7 gap-1 px-3 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2 [&_svg:not([class*='size-'])]:size-3",
|
|
233
|
-
sm: "h-9 gap-1 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
|
|
233
|
+
sm: "h-11 md:h-9 gap-1 px-4 has-data-[icon=inline-end]:pr-3 has-data-[icon=inline-start]:pl-3",
|
|
234
234
|
lg: "h-11 gap-1.5 px-8 has-data-[icon=inline-end]:pr-5 has-data-[icon=inline-start]:pl-5",
|
|
235
|
-
icon: "size-10",
|
|
235
|
+
icon: "size-11 md:size-10",
|
|
236
236
|
"icon-xs": "size-7 [&_svg:not([class*='size-'])]:size-3",
|
|
237
|
-
"icon-sm": "size-9",
|
|
237
|
+
"icon-sm": "size-11 md:size-9",
|
|
238
238
|
"icon-lg": "size-11"
|
|
239
239
|
}
|
|
240
240
|
},
|
|
@@ -676,7 +676,7 @@ function BrowserPane({ sessionId, state, adapter }) {
|
|
|
676
676
|
DialogContent,
|
|
677
677
|
{
|
|
678
678
|
"aria-describedby": void 0,
|
|
679
|
-
className: "flex h-
|
|
679
|
+
className: "flex h-dvh w-screen max-w-none flex-col gap-0 overflow-hidden rounded-none border-0 bg-background p-0 shadow-none ring-0 sm:max-w-none",
|
|
680
680
|
children: [
|
|
681
681
|
/* @__PURE__ */ jsxRuntime.jsxs(DialogHeader, { className: "h-10 shrink-0 flex-row items-center gap-2 border-b border-line bg-card px-4 py-0", children: [
|
|
682
682
|
/* @__PURE__ */ jsxRuntime.jsx(lucideReact.ZapIcon, { className: "size-3.5 text-muted-foreground", "aria-hidden": "true" }),
|
|
@@ -3731,7 +3731,7 @@ function Input({ className, type, ...props }) {
|
|
|
3731
3731
|
type,
|
|
3732
3732
|
"data-slot": "input",
|
|
3733
3733
|
className: cn(
|
|
3734
|
-
"h-10 w-full min-w-0 border border-transparent border-b-input bg-transparent px-0 py-1 text-base transition-[color,border-color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-b-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-b-destructive md:text-sm dark:aria-invalid:border-b-destructive/50",
|
|
3734
|
+
"h-11 md:h-10 w-full min-w-0 border border-transparent border-b-input bg-transparent px-0 py-1 text-base transition-[color,border-color] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:border-b-ring disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-b-destructive md:text-sm dark:aria-invalid:border-b-destructive/50",
|
|
3735
3735
|
className
|
|
3736
3736
|
),
|
|
3737
3737
|
...props
|
|
@@ -4574,7 +4574,7 @@ function InputGroup({ className, ...props }) {
|
|
|
4574
4574
|
"data-slot": "input-group",
|
|
4575
4575
|
role: "group",
|
|
4576
4576
|
className: cn(
|
|
4577
|
-
"group/input-group relative flex h-10 w-full min-w-0 items-center rounded-none border border-transparent border-b-input bg-transparent transition-[color,border-color] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-none has-data-[align=block-start]:rounded-none has-[[data-slot=input-group-control]:focus-visible]:border-b-ring has-[[data-slot][aria-invalid=true]]:border-b-destructive has-[textarea]:rounded-none has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:has-[[data-slot][aria-invalid=true]]:border-b-destructive/50 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3",
|
|
4577
|
+
"group/input-group relative flex h-11 md:h-10 w-full min-w-0 items-center rounded-none border border-transparent border-b-input bg-transparent transition-[color,border-color] outline-none in-data-[slot=combobox-content]:focus-within:border-inherit in-data-[slot=combobox-content]:focus-within:ring-0 has-data-[align=block-end]:rounded-none has-data-[align=block-start]:rounded-none has-[[data-slot=input-group-control]:focus-visible]:border-b-ring has-[[data-slot][aria-invalid=true]]:border-b-destructive has-[textarea]:rounded-none has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>textarea]:h-auto dark:has-[[data-slot][aria-invalid=true]]:border-b-destructive/50 has-[>[data-align=block-end]]:[&>input]:pt-3 has-[>[data-align=block-start]]:[&>input]:pb-3",
|
|
4578
4578
|
className
|
|
4579
4579
|
),
|
|
4580
4580
|
...props
|
|
@@ -7616,7 +7616,7 @@ function ChatThread({
|
|
|
7616
7616
|
] }) }),
|
|
7617
7617
|
/* @__PURE__ */ jsxRuntime.jsx(ConversationScrollButton, {})
|
|
7618
7618
|
] }),
|
|
7619
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto w-full max-w-4xl px-6 pb-5 pt-3", children: [
|
|
7619
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "mx-auto w-full max-w-4xl px-3 sm:px-6 pb-3 sm:pb-5 pt-3", children: [
|
|
7620
7620
|
retryIndicator && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "mb-2", children: /* @__PURE__ */ jsxRuntime.jsx(RetryBanner, { indicator: retryIndicator }) }),
|
|
7621
7621
|
disabled && disabledReason ? /* @__PURE__ */ jsxRuntime.jsx(
|
|
7622
7622
|
"div",
|
|
@@ -8281,7 +8281,7 @@ function RenderEntries({
|
|
|
8281
8281
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "size-4 shrink-0" }),
|
|
8282
8282
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "min-w-0 flex-1 truncate", children: entry.name }),
|
|
8283
8283
|
entry.size != null && /* @__PURE__ */ jsxRuntime.jsx("span", { className: "ml-1 shrink-0 text-xs text-muted-foreground/60", children: formatFileSize(entry.size) }),
|
|
8284
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-1 flex shrink-0 items-center gap-0 opacity-
|
|
8284
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "ml-1 flex shrink-0 items-center gap-0 opacity-100 transition-opacity md:opacity-0 md:group-hover:opacity-100", children: [
|
|
8285
8285
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
8286
8286
|
"a",
|
|
8287
8287
|
{
|
|
@@ -8716,6 +8716,9 @@ function ConfirmDialog({
|
|
|
8716
8716
|
);
|
|
8717
8717
|
}
|
|
8718
8718
|
|
|
8719
|
+
// src/agent-chat.tsx
|
|
8720
|
+
init_utils();
|
|
8721
|
+
|
|
8719
8722
|
// src/lib/sessions.ts
|
|
8720
8723
|
function isScheduledRunSession(session) {
|
|
8721
8724
|
return Boolean(
|
|
@@ -9806,6 +9809,9 @@ function parseGoalDefinition(content) {
|
|
|
9806
9809
|
const rubric = match ? args.slice(match.index + match[0].length).trim() : "";
|
|
9807
9810
|
return rubric ? { description, rubric } : { description };
|
|
9808
9811
|
}
|
|
9812
|
+
var RIGHT_STACK_STYLE = {
|
|
9813
|
+
["--right-stack-w"]: "440px"
|
|
9814
|
+
};
|
|
9809
9815
|
function AgentChat({
|
|
9810
9816
|
adapter,
|
|
9811
9817
|
agentId,
|
|
@@ -9817,6 +9823,7 @@ function AgentChat({
|
|
|
9817
9823
|
onComposerError
|
|
9818
9824
|
}) {
|
|
9819
9825
|
const [workspacePath, setWorkspacePath] = react.useState(null);
|
|
9826
|
+
const [mobileView, setMobileView] = react.useState("chat");
|
|
9820
9827
|
const runtime = useAgentChatRuntime({
|
|
9821
9828
|
adapter,
|
|
9822
9829
|
agentId,
|
|
@@ -9834,10 +9841,12 @@ function AgentChat({
|
|
|
9834
9841
|
const handleFileSelect = react.useCallback(
|
|
9835
9842
|
(path) => {
|
|
9836
9843
|
setWorkspacePath(path);
|
|
9844
|
+
setMobileView("workspace");
|
|
9837
9845
|
onFileSelect?.(path);
|
|
9838
9846
|
},
|
|
9839
9847
|
[onFileSelect]
|
|
9840
9848
|
);
|
|
9849
|
+
const showMobileToggle = Boolean(sessionId);
|
|
9841
9850
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
9842
9851
|
AgentChatAdapterProvider,
|
|
9843
9852
|
{
|
|
@@ -9850,15 +9859,56 @@ function AgentChat({
|
|
|
9850
9859
|
"section",
|
|
9851
9860
|
{
|
|
9852
9861
|
"data-testid": "agent-chat-layout",
|
|
9853
|
-
|
|
9854
|
-
|
|
9862
|
+
"data-mobile-view": mobileView,
|
|
9863
|
+
className: cn(
|
|
9864
|
+
// Phone: flex column, tab toggle on top, then either chat or
|
|
9865
|
+
// right stack visible based on `data-mobile-view`.
|
|
9866
|
+
"flex min-h-0 flex-1 flex-col overflow-hidden bg-background text-sm text-foreground",
|
|
9867
|
+
// md+: restore desktop two-pane layout.
|
|
9868
|
+
hasBrowserPanel ? "md:relative md:flex-row" : "md:flex-row"
|
|
9869
|
+
),
|
|
9870
|
+
style: { direction: "ltr", ...RIGHT_STACK_STYLE },
|
|
9855
9871
|
children: [
|
|
9872
|
+
showMobileToggle && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "md:hidden flex shrink-0 border-b border-line bg-card", children: [
|
|
9873
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9874
|
+
"button",
|
|
9875
|
+
{
|
|
9876
|
+
type: "button",
|
|
9877
|
+
onClick: () => setMobileView("chat"),
|
|
9878
|
+
"aria-pressed": mobileView === "chat",
|
|
9879
|
+
className: cn(
|
|
9880
|
+
"flex-1 px-4 py-3 text-sm font-medium border-b-2 -mb-px transition-colors",
|
|
9881
|
+
mobileView === "chat" ? "border-primary text-foreground" : "border-transparent text-subtle hover:text-foreground"
|
|
9882
|
+
),
|
|
9883
|
+
children: "Chat"
|
|
9884
|
+
}
|
|
9885
|
+
),
|
|
9886
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9887
|
+
"button",
|
|
9888
|
+
{
|
|
9889
|
+
type: "button",
|
|
9890
|
+
onClick: () => setMobileView("workspace"),
|
|
9891
|
+
"aria-pressed": mobileView === "workspace",
|
|
9892
|
+
className: cn(
|
|
9893
|
+
"flex-1 px-4 py-3 text-sm font-medium border-b-2 -mb-px transition-colors",
|
|
9894
|
+
mobileView === "workspace" ? "border-primary text-foreground" : "border-transparent text-subtle hover:text-foreground"
|
|
9895
|
+
),
|
|
9896
|
+
children: "Workspace"
|
|
9897
|
+
}
|
|
9898
|
+
)
|
|
9899
|
+
] }),
|
|
9856
9900
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
9857
9901
|
"div",
|
|
9858
9902
|
{
|
|
9859
9903
|
"data-testid": "chat-panel",
|
|
9860
|
-
|
|
9861
|
-
|
|
9904
|
+
"data-mobile-view": mobileView,
|
|
9905
|
+
className: cn(
|
|
9906
|
+
// Phone: full width column, hidden when workspace tab active.
|
|
9907
|
+
"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",
|
|
9908
|
+
showMobileToggle && "data-[mobile-view=workspace]:hidden md:flex!",
|
|
9909
|
+
// md+: restore desktop positioning.
|
|
9910
|
+
hasBrowserPanel ? "md:absolute md:inset-y-0 md:left-0 md:right-(--right-stack-w,440px) md:flex" : "md:relative md:flex-1"
|
|
9911
|
+
),
|
|
9862
9912
|
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
9863
9913
|
ChatThread,
|
|
9864
9914
|
{
|
|
@@ -9883,8 +9933,16 @@ function AgentChat({
|
|
|
9883
9933
|
"div",
|
|
9884
9934
|
{
|
|
9885
9935
|
"data-testid": "right-stack",
|
|
9886
|
-
|
|
9887
|
-
|
|
9936
|
+
"data-mobile-view": mobileView,
|
|
9937
|
+
className: cn(
|
|
9938
|
+
// Phone: full width column, hidden when chat tab active.
|
|
9939
|
+
"flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden",
|
|
9940
|
+
showMobileToggle && "data-[mobile-view=chat]:hidden md:flex!",
|
|
9941
|
+
// md+: restore desktop positioning. With browser panel the
|
|
9942
|
+
// right stack is absolutely positioned at the configured
|
|
9943
|
+
// width; without it the stack flows in the row.
|
|
9944
|
+
hasBrowserPanel ? "md:absolute md:inset-y-0 md:right-0 md:w-(--right-stack-w,440px) md:flex-none" : "md:relative md:shrink-0 md:flex-none md:w-(--right-stack-w,440px)"
|
|
9945
|
+
),
|
|
9888
9946
|
children: [
|
|
9889
9947
|
hasBrowserPanel && /* @__PURE__ */ jsxRuntime.jsx(
|
|
9890
9948
|
"div",
|
|
@@ -10871,16 +10929,16 @@ function MissionDashboard({
|
|
|
10871
10929
|
}
|
|
10872
10930
|
};
|
|
10873
10931
|
const statusVariant = mission.status === "satisfied" ? "default" : mission.status === "failed" || mission.status === "cancelled" ? "destructive" : "secondary";
|
|
10874
|
-
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-6 p-6 max-w-6xl mx-auto", children: [
|
|
10932
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-4 p-4 sm:gap-6 sm:p-6 max-w-6xl mx-auto", children: [
|
|
10875
10933
|
/* @__PURE__ */ jsxRuntime.jsxs(Card, { children: [
|
|
10876
|
-
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-start justify-between
|
|
10877
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1", children: [
|
|
10934
|
+
/* @__PURE__ */ jsxRuntime.jsx(CardHeader, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col items-stretch gap-4 sm:flex-row sm:items-start sm:justify-between", children: [
|
|
10935
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "space-y-1 min-w-0 flex-1", children: [
|
|
10878
10936
|
/* @__PURE__ */ jsxRuntime.jsx(CardTitle, { className: "wrap-break-word -uppercase text-sm", children: mission.description }),
|
|
10879
10937
|
/* @__PURE__ */ jsxRuntime.jsxs(CardDescription, { className: "wrap-break-word text-foreground/70", children: [
|
|
10880
10938
|
"Rubric: ",
|
|
10881
10939
|
mission.rubric
|
|
10882
10940
|
] }),
|
|
10883
|
-
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-3 pt-2 text-xs text-foreground/70", children: [
|
|
10941
|
+
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-x-3 gap-y-1 pt-2 text-xs text-foreground/70", children: [
|
|
10884
10942
|
/* @__PURE__ */ jsxRuntime.jsx(Badge, { variant: statusVariant, className: "font-mono text-foreground", children: mission.status }),
|
|
10885
10943
|
/* @__PURE__ */ jsxRuntime.jsxs("span", { className: "font-mono text-primary", children: [
|
|
10886
10944
|
"Iteration ",
|
|
@@ -10895,7 +10953,7 @@ function MissionDashboard({
|
|
|
10895
10953
|
] }) : null
|
|
10896
10954
|
] })
|
|
10897
10955
|
] }),
|
|
10898
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex items-center gap-2", children: ACTIVE_MISSION_STATUSES.has(mission.status) ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10956
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "flex flex-wrap items-center gap-2 shrink-0", children: ACTIVE_MISSION_STATUSES.has(mission.status) ? /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
10899
10957
|
mission.status === "active" ? /* @__PURE__ */ jsxRuntime.jsxs(
|
|
10900
10958
|
Button,
|
|
10901
10959
|
{
|
|
@@ -11015,7 +11073,7 @@ function MissionDashboard({
|
|
|
11015
11073
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
11016
11074
|
"li",
|
|
11017
11075
|
{
|
|
11018
|
-
className: "flex items-start justify-between
|
|
11076
|
+
className: "flex flex-col gap-2 sm:flex-row sm:items-start sm:justify-between rounded border border-border/40 px-3 py-2 text-sm",
|
|
11019
11077
|
children: [
|
|
11020
11078
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [
|
|
11021
11079
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -11174,7 +11232,8 @@ function MissionRow({
|
|
|
11174
11232
|
"div",
|
|
11175
11233
|
{
|
|
11176
11234
|
className: cn(
|
|
11177
|
-
"group flex min-w-0 items-start gap-2 border-l-2 border-l-transparent px-3 py-2 text-sm transition-colors cursor-pointer hover:border-l-primary hover:bg-input"
|
|
11235
|
+
"group flex min-w-0 items-start gap-2 border-l-2 border-l-transparent px-3 py-2 text-sm transition-colors cursor-pointer hover:border-l-primary hover:bg-input",
|
|
11236
|
+
"min-h-11 md:min-h-0"
|
|
11178
11237
|
),
|
|
11179
11238
|
onClick: openMission,
|
|
11180
11239
|
onKeyDown: handleRowKeyDown,
|
|
@@ -11201,7 +11260,7 @@ function MissionRow({
|
|
|
11201
11260
|
"button",
|
|
11202
11261
|
{
|
|
11203
11262
|
type: "button",
|
|
11204
|
-
className: "rounded p-1 text-faint opacity-70 transition-all hover:bg-line hover:text-foreground disabled:pointer-events-none disabled:opacity-40 group-hover:opacity-100",
|
|
11263
|
+
className: "rounded p-2 md:p-1 text-faint opacity-100 md:opacity-70 transition-all hover:bg-line hover:text-foreground disabled:pointer-events-none disabled:opacity-40 md:group-hover:opacity-100",
|
|
11205
11264
|
onClick: (e) => {
|
|
11206
11265
|
stopActionClick(e);
|
|
11207
11266
|
onPause(mission.id);
|
|
@@ -11216,7 +11275,7 @@ function MissionRow({
|
|
|
11216
11275
|
"button",
|
|
11217
11276
|
{
|
|
11218
11277
|
type: "button",
|
|
11219
|
-
className: "rounded p-1 text-faint opacity-70 transition-all hover:bg-line hover:text-foreground disabled:pointer-events-none disabled:opacity-40 group-hover:opacity-100",
|
|
11278
|
+
className: "rounded p-2 md:p-1 text-faint opacity-100 md:opacity-70 transition-all hover:bg-line hover:text-foreground disabled:pointer-events-none disabled:opacity-40 md:group-hover:opacity-100",
|
|
11220
11279
|
onClick: (e) => {
|
|
11221
11280
|
stopActionClick(e);
|
|
11222
11281
|
onResume(mission.id);
|
|
@@ -11231,7 +11290,7 @@ function MissionRow({
|
|
|
11231
11290
|
"button",
|
|
11232
11291
|
{
|
|
11233
11292
|
type: "button",
|
|
11234
|
-
className: "rounded p-1 text-faint opacity-70 transition-all hover:bg-destructive/10 hover:text-destructive disabled:pointer-events-none disabled:opacity-40 group-hover:opacity-100",
|
|
11293
|
+
className: "rounded p-2 md:p-1 text-faint opacity-100 md:opacity-70 transition-all hover:bg-destructive/10 hover:text-destructive disabled:pointer-events-none disabled:opacity-40 md:group-hover:opacity-100",
|
|
11235
11294
|
onClick: (e) => {
|
|
11236
11295
|
stopActionClick(e);
|
|
11237
11296
|
onCancel(mission.id);
|
|
@@ -11509,6 +11568,7 @@ function ScheduledWorkRow({
|
|
|
11509
11568
|
{
|
|
11510
11569
|
className: cn(
|
|
11511
11570
|
"group flex min-w-0 items-start gap-2 border-l-2 border-l-transparent px-3 py-2 text-sm transition-colors hover:border-l-primary hover:bg-input",
|
|
11571
|
+
"min-h-11 md:min-h-0",
|
|
11512
11572
|
lastSessionId && "cursor-pointer"
|
|
11513
11573
|
),
|
|
11514
11574
|
onClick: openLastRun,
|
|
@@ -11535,7 +11595,7 @@ function ScheduledWorkRow({
|
|
|
11535
11595
|
"button",
|
|
11536
11596
|
{
|
|
11537
11597
|
type: "button",
|
|
11538
|
-
className: "rounded p-1 text-faint opacity-70 transition-all hover:bg-line hover:text-foreground disabled:pointer-events-none disabled:opacity-40 group-hover:opacity-100",
|
|
11598
|
+
className: "rounded p-2 md:p-1 text-faint opacity-100 md:opacity-70 transition-all hover:bg-line hover:text-foreground disabled:pointer-events-none disabled:opacity-40 md:group-hover:opacity-100",
|
|
11539
11599
|
onClick: (e) => {
|
|
11540
11600
|
stopActionClick(e);
|
|
11541
11601
|
onRunNow(item.id);
|
|
@@ -11550,7 +11610,7 @@ function ScheduledWorkRow({
|
|
|
11550
11610
|
"button",
|
|
11551
11611
|
{
|
|
11552
11612
|
type: "button",
|
|
11553
|
-
className: "rounded p-1 text-faint opacity-70 transition-all hover:bg-destructive/10 hover:text-destructive disabled:pointer-events-none disabled:opacity-40 group-hover:opacity-100",
|
|
11613
|
+
className: "rounded p-2 md:p-1 text-faint opacity-100 md:opacity-70 transition-all hover:bg-destructive/10 hover:text-destructive disabled:pointer-events-none disabled:opacity-40 md:group-hover:opacity-100",
|
|
11554
11614
|
onClick: (e) => {
|
|
11555
11615
|
stopActionClick(e);
|
|
11556
11616
|
onCancel(item.id);
|
|
@@ -11857,6 +11917,7 @@ function TreeNodeRow({
|
|
|
11857
11917
|
},
|
|
11858
11918
|
className: cn(
|
|
11859
11919
|
"group flex items-center gap-2 w-full py-2 pr-2 text-left cursor-pointer transition-colors border-l-2",
|
|
11920
|
+
"min-h-11 md:min-h-0",
|
|
11860
11921
|
isActive ? "bg-line text-foreground border-l-primary" : "bg-transparent text-subtle hover:bg-input hover:text-foreground border-l-transparent"
|
|
11861
11922
|
),
|
|
11862
11923
|
style: { paddingLeft: `${depth * 12 + 12}px` },
|
|
@@ -11865,7 +11926,7 @@ function TreeNodeRow({
|
|
|
11865
11926
|
"button",
|
|
11866
11927
|
{
|
|
11867
11928
|
type: "button",
|
|
11868
|
-
className: "p-0.5 rounded hover:bg-line shrink-0",
|
|
11929
|
+
className: "p-2 md:p-0.5 rounded hover:bg-line shrink-0",
|
|
11869
11930
|
onClick: (e) => {
|
|
11870
11931
|
e.stopPropagation();
|
|
11871
11932
|
setExpanded(!expanded);
|
|
@@ -11883,7 +11944,7 @@ function TreeNodeRow({
|
|
|
11883
11944
|
"button",
|
|
11884
11945
|
{
|
|
11885
11946
|
type: "button",
|
|
11886
|
-
className: "p-1 rounded opacity-0 group-hover:opacity-100 hover:bg-destructive/10 hover:text-destructive transition-all",
|
|
11947
|
+
className: "p-2 md:p-1 rounded opacity-100 md:opacity-0 md:group-hover:opacity-100 hover:bg-destructive/10 hover:text-destructive transition-all",
|
|
11887
11948
|
onClick: (e) => {
|
|
11888
11949
|
e.stopPropagation();
|
|
11889
11950
|
onStop(entry.id);
|
|
@@ -11898,8 +11959,8 @@ function TreeNodeRow({
|
|
|
11898
11959
|
{
|
|
11899
11960
|
type: "button",
|
|
11900
11961
|
className: cn(
|
|
11901
|
-
"p-1 rounded hover:bg-destructive/10 hover:text-destructive disabled:pointer-events-none transition-all",
|
|
11902
|
-
deletingSessionId === entry.id ? "opacity-100" : "opacity-0 group-hover:opacity-100 focus-visible:opacity-100"
|
|
11962
|
+
"p-2 md:p-1 rounded hover:bg-destructive/10 hover:text-destructive disabled:pointer-events-none transition-all",
|
|
11963
|
+
deletingSessionId === entry.id ? "opacity-100" : "opacity-100 md:opacity-0 md:group-hover:opacity-100 md:focus-visible:opacity-100"
|
|
11903
11964
|
),
|
|
11904
11965
|
onClick: (e) => {
|
|
11905
11966
|
e.stopPropagation();
|