Skip to content
This repository was archived by the owner on Mar 31, 2026. It is now read-only.

Commit 9d30bb5

Browse files
authored
Merge pull request #244 from aevatarAI/feature/agentcard-accordion
feat: agent card accordion
2 parents d5e53e6 + b8710d7 commit 9d30bb5

1 file changed

Lines changed: 36 additions & 9 deletions

File tree

packages/ui-react/src/components/AevatarItem4Workflow/AevatarCardInner.tsx

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ import type { IAgentInfoDetail } from "@aevatar-react-sdk/services";
22

33
import Hypotenuse from "../../assets/svg/hypotenuse.svg?react";
44
import "./index.css";
5-
import { useCallback, useMemo } from "react";
5+
import { useCallback, useMemo, useState } from "react";
66
import { jsonSchemaParse } from "../../utils/jsonSchemaParse";
77
import type { JSONSchemaType } from "../types";
88
import clsx from "clsx";
99
import type { TNodeDataClick } from "../Workflow/types";
1010
import HoverMenu from "./HoverMenu";
1111
import type { ExecutionLogItem } from "@aevatar-react-sdk/types";
1212
import AccordionLogs from "./AccordionLogs";
13+
import { ChevronDown } from "lucide-react";
1314
export interface IAevatarCardInnerProps {
1415
className?: string;
1516
isNew?: boolean;
@@ -53,6 +54,8 @@ export default function AevatarCardInner({
5354
[agentInfo, isNew]
5455
);
5556

57+
const [showMore, setShowMore] = useState(false);
58+
5659
return (
5760
<div className="sdk:w-[234px]">
5861
{/* biome-ignore lint/a11y/useKeyWithClickEvents: <explanation> */}
@@ -71,27 +74,51 @@ export default function AevatarCardInner({
7174
className={clsx(
7275
"sdk:aevatar-item-background sdk:border sdk:border-[var(--sdk-color-bg-primary)] sdk:group-hover:border-[var(--sdk-border-foreground)]",
7376
selected && "sdk:border-[var(--sdk-border-foreground)]! ",
74-
"sdk:border-b-[var(--sdk-bg-accent)]!",
77+
// "sdk:border-b-[var(--sdk-bg-accent)]!",
78+
'sdk:pb-[6px]',
7579
"sdk:max-h-[300px] sdk:overflow-y-auto",
7680
className
7781
)}
7882
style={{
7983
scrollbarWidth: "none",
8084
msOverflowStyle: "none",
8185
}}>
82-
<div className="sdk:pb-[12px] sdk:pt-[16px] sdk:pr-[14px] sdk:pl-[14px] sdk:border-b sdk:border-[var(--sdk-border-color)] sdk:border-solid">
83-
<div className="sdk:flex sdk:justify-between sdk:items-center sdk:pb-[9px]">
86+
<div className="sdk:pb-[12px] sdk:pt-[16px] sdk:pr-[14px] sdk:pl-[14px]">
87+
<div className="sdk:pb-[9px]">
8488
<div
85-
className="sdk:font-geist sdk:text-[var(--sdk-color-text-primary)] sdk:text-base sdk:font-semibold sdk:leading-normal sdk:truncate sdk:max-w-[calc(100%-32px)]" /* Single line, overflow ellipsis */
86-
>{`${agentInfo?.name || "agent name"}`}</div>
89+
className={clsx(
90+
"sdk:font-geist sdk:text-[var(--sdk-color-text-primary)] sdk:text-base sdk:font-semibold sdk:leading-normal ",
91+
"sdk:flex sdk:w-full sdk:items-center sdk:justify-between sdk:gap-[4px]"
92+
)}>
93+
{/* Single line, overflow ellipsis */}
94+
<span className="sdk:flex-1 sdk:truncate sdk:max-w-[calc(100%-32px)]">{`${
95+
agentInfo?.name || "agent name"
96+
}`}</span>
97+
<ChevronDown
98+
className={clsx(
99+
"sdk:w-[16px] sdk:h-[16px] sdk:cursor-pointer sdk:transition-all sdk:duration-200 sdk:ease-in-out",
100+
showMore && "sdk:rotate-180"
101+
)}
102+
onClick={(e) => {
103+
e.stopPropagation();
104+
setShowMore((v) => !v);
105+
}}
106+
/>
107+
</div>
87108
</div>
88109
<div className="sdk:font-geist sdk:text-[var(--sdk-muted-foreground)] sdk:text-[12px] sdk:font-normal sdk:leading-normal sdk:truncate">
89110
{agentInfo?.agentType
90111
? agentInfo?.agentType?.split(".")?.pop()
91112
: "--"}
92113
</div>
93114
</div>
94-
<div className="sdk:font-geist sdk:pb-[6px] sdk:pt-[12px] sdk:pr-[14px] sdk:pl-[14px] sdk:flex sdk:flex-col sdk:items-start sdk:gap-[12px] sdk:self-stretch">
115+
<div
116+
className={clsx(
117+
"sdk:font-geist sdk:pb-[6px] sdk:pt-[12px] sdk:pr-[14px] sdk:pl-[14px] sdk:flex sdk:flex-col sdk:items-start sdk:gap-[12px] sdk:self-stretch",
118+
" sdk:border-t sdk:border-[var(--sdk-border-color)] ",
119+
"sdk:hidden",
120+
showMore && "sdk:flex!"
121+
)}>
95122
{(propertiesInfo ?? []).map(
96123
(item: [string, JSONSchemaType<any>]) => {
97124
// Extract property name and schema
@@ -202,7 +229,7 @@ export default function AevatarCardInner({
202229
)}
203230
</div>
204231
</div>
205-
<div className="sdk:h-[14px] sdk:relative sdk:flex ">
232+
{/* <div className="sdk:h-[14px] sdk:relative sdk:flex ">
206233
<div
207234
className={clsx(
208235
" sdk:bg-[var(--sdk-bg-accent)] sdk:flex-1 sdk:border sdk:border-[var(--sdk-color-bg-primary)] sdk:group-hover:border-[var(--sdk-border-foreground)]",
@@ -216,7 +243,7 @@ export default function AevatarCardInner({
216243
selected && "sdk:text-[var(--sdk-border-foreground)]!"
217244
)}
218245
/>
219-
</div>
246+
</div> */}
220247
</div>
221248
<div className="sdk:relative ">
222249
{agentLogs && (

0 commit comments

Comments
 (0)