| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import { PageHeader } from '@/components/page-header';
- import { Button } from '@/components/ui/button';
- import {
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuSeparator,
- DropdownMenuTrigger,
- } from '@/components/ui/dropdown-menu';
- import { SidebarProvider, SidebarTrigger } from '@/components/ui/sidebar';
- import { useSetModalState } from '@/hooks/common-hooks';
- import { useNavigatePage } from '@/hooks/logic-hooks/navigate-hooks';
- import { CodeXml, EllipsisVertical, Forward, Import, Key } from 'lucide-react';
- import { ComponentPropsWithoutRef } from 'react';
- import { useTranslation } from 'react-i18next';
- import { AgentSidebar } from './agent-sidebar';
- import FlowCanvas from './canvas';
- import { useHandleExportOrImportJsonFile } from './hooks/use-export-json';
- import { useFetchDataOnMount } from './hooks/use-fetch-data';
- import { useOpenDocument } from './hooks/use-open-document';
- import { UploadAgentDialog } from './upload-agent-dialog';
-
- function AgentDropdownMenuItem({
- children,
- ...props
- }: ComponentPropsWithoutRef<typeof DropdownMenuItem>) {
- return (
- <DropdownMenuItem className="flex justify-between items-center" {...props}>
- {children}
- </DropdownMenuItem>
- );
- }
-
- export default function Agent() {
- const { navigateToAgentList } = useNavigatePage();
- const {
- visible: chatDrawerVisible,
- hideModal: hideChatDrawer,
- showModal: showChatDrawer,
- } = useSetModalState();
- const { t } = useTranslation();
- const openDocument = useOpenDocument();
- const {
- handleExportJson,
- handleImportJson,
- fileUploadVisible,
- onFileUploadOk,
- hideFileUploadModal,
- } = useHandleExportOrImportJsonFile();
-
- useFetchDataOnMount();
-
- return (
- <section>
- <PageHeader back={navigateToAgentList} title="Agent 01">
- <div className="flex items-center gap-2">
- <DropdownMenu>
- <DropdownMenuTrigger>
- <Button variant={'icon'} size={'icon'}>
- <EllipsisVertical />
- </Button>
- </DropdownMenuTrigger>
- <DropdownMenuContent>
- <AgentDropdownMenuItem onClick={openDocument}>
- API
- <Key />
- </AgentDropdownMenuItem>
- <DropdownMenuSeparator />
- <AgentDropdownMenuItem onClick={handleImportJson}>
- Import
- <Import />
- </AgentDropdownMenuItem>
- <DropdownMenuSeparator />
- <AgentDropdownMenuItem onClick={handleExportJson}>
- Export
- <Forward />
- </AgentDropdownMenuItem>
- <DropdownMenuSeparator />
- <AgentDropdownMenuItem>
- {t('common.embedIntoSite')}
- <CodeXml />
- </AgentDropdownMenuItem>
- </DropdownMenuContent>
- </DropdownMenu>
-
- <Button variant={'outline'} size={'sm'}>
- Save
- </Button>
- <Button variant={'outline'} size={'sm'}>
- Run app
- </Button>
-
- <Button variant={'tertiary'} size={'sm'}>
- Publish
- </Button>
- </div>
- </PageHeader>
- <div>
- <SidebarProvider>
- <AgentSidebar />
- <div className="w-full">
- <SidebarTrigger />
- <div className="w-full h-full">
- <FlowCanvas
- drawerVisible={chatDrawerVisible}
- hideDrawer={hideChatDrawer}
- ></FlowCanvas>
- </div>
- </div>
- </SidebarProvider>
- </div>
- {fileUploadVisible && (
- <UploadAgentDialog
- hideModal={hideFileUploadModal}
- onOk={onFileUploadOk}
- ></UploadAgentDialog>
- )}
- </section>
- );
- }
|