diff --git a/src/frontend/src/constants/constants.ts b/src/frontend/src/constants/constants.ts
index ddbee8ddb..760050be9 100644
--- a/src/frontend/src/constants/constants.ts
+++ b/src/frontend/src/constants/constants.ts
@@ -107,7 +107,7 @@ export const CODE_DIALOG_SUBTITLE =
* @constant
*/
export const CHAT_FORM_DIALOG_SUBTITLE =
- "Adjust or overwrite input values, inspect outputs or interact through the chat console.";
+ "Set up the input variables defined in prompt templates. Interact with agents and chains.";
/**
* The base text for subtitle of Edit Node Dialog
@@ -732,12 +732,13 @@ export const PRIORITY_SIDEBAR_ORDER = [
"saved_components",
"inputs",
"outputs",
+ "prompts",
"data",
"prompt",
"models",
+ "helpers",
"vectorstores",
"vectorsearch",
- "helpers",
];
export const NATIVE_CATEGORIES = [
"inputs",
diff --git a/src/frontend/src/pages/FlowPage/components/DisclosureComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/DisclosureComponent/index.tsx
index d2ff0eee8..0bd016322 100644
--- a/src/frontend/src/pages/FlowPage/components/DisclosureComponent/index.tsx
+++ b/src/frontend/src/pages/FlowPage/components/DisclosureComponent/index.tsx
@@ -4,6 +4,7 @@ import { DisclosureComponentType } from "../../../../types/components";
export default function DisclosureComponent({
button: { title, Icon, buttons = [] },
+ isChild = true,
children,
openDisc,
}: DisclosureComponentType): JSX.Element {
@@ -12,8 +13,14 @@ export default function DisclosureComponent({
{({ open }) => (
<>
-
-
+
+
{/* BUG ON THIS ICON */}
{title}
diff --git a/src/frontend/src/pages/FlowPage/components/ParentDisclosureComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/ParentDisclosureComponent/index.tsx
new file mode 100644
index 000000000..4de84a439
--- /dev/null
+++ b/src/frontend/src/pages/FlowPage/components/ParentDisclosureComponent/index.tsx
@@ -0,0 +1,41 @@
+import { Disclosure } from "@headlessui/react";
+import IconComponent from "../../../../components/genericIconComponent";
+import { DisclosureComponentType } from "../../../../types/components";
+
+export default function ParentDisclosureComponent({
+ button: { title, Icon, buttons = [] },
+ children,
+ openDisc,
+}: DisclosureComponentType): JSX.Element {
+ return (
+
+ {({ open }) => (
+ <>
+
+
+
+ {title}
+
+
+ {buttons.map((btn, index) => (
+
+ ))}
+
+
+
+
+
+
+ {children}
+ >
+ )}
+
+ );
+}
diff --git a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx
index 9e8e7a03b..7643e66c9 100644
--- a/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx
+++ b/src/frontend/src/pages/FlowPage/components/extraSidebarComponent/index.tsx
@@ -5,6 +5,7 @@ import ShadTooltip from "../../../../components/ShadTooltipComponent";
import IconComponent from "../../../../components/genericIconComponent";
import { Input } from "../../../../components/ui/input";
import { Separator } from "../../../../components/ui/separator";
+import { PRIORITY_SIDEBAR_ORDER } from "../../../../constants/constants";
import ExportModal from "../../../../modals/exportModal";
import ShareModal from "../../../../modals/shareModal";
import useAlertStore from "../../../../stores/alertStore";
@@ -24,6 +25,7 @@ import {
sensitiveSort,
} from "../../../../utils/utils";
import DisclosureComponent from "../DisclosureComponent";
+import ParentDisclosureComponent from "../ParentDisclosureComponent";
import SidebarDraggableComponent from "./sideBarDraggableComponent";
import { sortKeys } from "./utils";
@@ -271,23 +273,17 @@ export default function ExtraSidebar(): JSX.Element {
{Object.keys(dataFilter)
.sort(sortKeys)
+ .filter((x) => PRIORITY_SIDEBAR_ORDER.includes(x))
.map((SBSectionName: keyof APIObjectType, index) =>
Object.keys(dataFilter[SBSectionName]).length > 0 ? (
<>
- {index === 0 && (
-
-
- Native Components
-
-
- )}
-
- {index === Object.keys(dataFilter).length - 1 && (
- <>
-
-
- {/* BUG ON THIS ICON */}
-
-
-
- Discover More
-
-
-
-
- >
- )}
>
) : (
)
- )}
+ )}{" "}
+
+ {Object.keys(dataFilter)
+ .sort(sortKeys)
+ .filter((x) => !PRIORITY_SIDEBAR_ORDER.includes(x))
+ .map((SBSectionName: keyof APIObjectType, index) =>
+ Object.keys(dataFilter[SBSectionName]).length > 0 ? (
+ <>
+
+
+ {Object.keys(dataFilter[SBSectionName])
+ .sort((a, b) =>
+ sensitiveSort(
+ dataFilter[SBSectionName][a].display_name,
+ dataFilter[SBSectionName][b].display_name
+ )
+ )
+ .map((SBItemName: string, index) => (
+
+
+ onDragStart(event, {
+ //split type to remove type in nodes saved with same name removing it's
+ type: removeCountFromString(SBItemName),
+ node: dataFilter[SBSectionName][SBItemName],
+ })
+ }
+ color={nodeColors[SBSectionName]}
+ itemName={SBItemName}
+ //convert error to boolean
+ error={
+ !!dataFilter[SBSectionName][SBItemName].error
+ }
+ display_name={
+ dataFilter[SBSectionName][SBItemName]
+ .display_name
+ }
+ official={
+ dataFilter[SBSectionName][SBItemName]
+ .official === false
+ ? false
+ : true
+ }
+ />
+
+ ))}
+
+
+ {index ===
+ Object.keys(dataFilter).length -
+ PRIORITY_SIDEBAR_ORDER.length +
+ 1 && (
+ <>
+
+
+ {/* BUG ON THIS ICON */}
+
+
+
+ Discover More
+
+
+
+
+ >
+ )}
+ >
+ ) : (
+
+ )
+ )}
+
);
diff --git a/src/frontend/src/style/applies.css b/src/frontend/src/style/applies.css
index a71a3e606..5b1928e76 100644
--- a/src/frontend/src/style/applies.css
+++ b/src/frontend/src/style/applies.css
@@ -117,7 +117,7 @@
@apply relative inline-flex w-full items-center justify-center rounded-md bg-background px-2 py-2 text-foreground transition-all duration-500 ease-in-out;
}
.header-menubar-item {
- @apply relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 cursor-pointer;
+ @apply relative flex cursor-default cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none transition-colors hover:bg-accent hover:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50;
}
.extra-side-bar-buttons:hover {
@apply hover:bg-muted;
@@ -183,9 +183,19 @@
.disabled-message-button-icon {
@apply fill-chat-trigger-disabled stroke-chat-trigger-disabled stroke-1;
}
+ .parent-disclosure-arrangement {
+ @apply flex w-full select-none items-center justify-between border-y border-y-input bg-background px-3 py-2;
+ }
.components-disclosure-arrangement {
@apply -mt-px flex w-full select-none items-center justify-between border-y border-y-input bg-muted px-3 py-2;
}
+ .components-disclosure-arrangement-child {
+ /* different color than the non child */
+ @apply -mt-px flex w-full select-none items-center justify-between border-y border-y-input bg-muted px-3 py-2;
+ }
+ .parent-disclosure-title {
+ @apply p-2 px-2 text-sm font-semibold;
+ }
.components-disclosure-title {
@apply flex items-center text-sm text-primary;
}
diff --git a/src/frontend/src/types/components/index.ts b/src/frontend/src/types/components/index.ts
index d33b908c2..c3e9ab499 100644
--- a/src/frontend/src/types/components/index.ts
+++ b/src/frontend/src/types/components/index.ts
@@ -148,6 +148,7 @@ export type FileComponentType = {
export type DisclosureComponentType = {
children: ReactNode;
openDisc: boolean;
+ isChild?: boolean;
button: {
title: string;
Icon: React.ElementType;