diff --git a/frontend/src/app-components/widget/ChatWidget.tsx b/frontend/src/app-components/widget/ChatWidget.tsx new file mode 100644 index 00000000..1628611a --- /dev/null +++ b/frontend/src/app-components/widget/ChatWidget.tsx @@ -0,0 +1,46 @@ +/* + * Copyright © 2024 Hexastack. All rights reserved. + * + * Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms: + * 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission. + * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). + */ + +import { Avatar, Box } from "@mui/material"; +import UiChatWidget from "hexabot-widget/src/UiChatWidget"; + +import { getAvatarSrc } from "@/components/inbox/helpers/mapMessages"; +import { useConfig } from "@/hooks/useConfig"; +import i18n from "@/i18n/config"; +import { EntityType, RouterType } from "@/services/types"; + +import { ChatWidgetHeader } from "./ChatWidgetHeader"; + +export const ChatWidget = ({ pathname }: { pathname: string }) => { + const { apiUrl } = useConfig(); + const isVisualEditor = pathname === `/${RouterType.VISUAL_EDITOR}`; + + return ( + + ( + + )} + /> + + ); +}; diff --git a/frontend/src/app-components/widget/ChatWidgetHeader.tsx b/frontend/src/app-components/widget/ChatWidgetHeader.tsx new file mode 100644 index 00000000..347a93cd --- /dev/null +++ b/frontend/src/app-components/widget/ChatWidgetHeader.tsx @@ -0,0 +1,25 @@ +/* + * Copyright © 2024 Hexastack. All rights reserved. + * + * Licensed under the GNU Affero General Public License v3.0 (AGPLv3) with the following additional terms: + * 1. The name "Hexabot" is a trademark of Hexastack. You may not use this name in derivative works without express written permission. + * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). + */ + +import ChatIcon from "@mui/icons-material/Chat"; +import { Box, Typography } from "@mui/material"; + +import { useTranslate } from "@/hooks/useTranslate"; + +export const ChatWidgetHeader = () => { + const { t } = useTranslate(); + + return ( + + + + {t("title.live_chat_tester")} + + + ); +}; diff --git a/frontend/src/layout/Header.tsx b/frontend/src/layout/Header.tsx index bf58c835..fe4dfff6 100644 --- a/frontend/src/layout/Header.tsx +++ b/frontend/src/layout/Header.tsx @@ -6,7 +6,6 @@ * 2. All derivative works must include clear attribution to the original creator and software, Hexastack and Hexabot, in a prominent location (e.g., in the software's "About" section, documentation, and README file). */ -import ChatIcon from "@mui/icons-material/Chat"; import MenuIcon from "@mui/icons-material/Menu"; import { Avatar, @@ -18,8 +17,6 @@ import { styled, } from "@mui/material"; import MuiAppBar, { AppBarProps as MuiAppBarProps } from "@mui/material/AppBar"; -import UiChatWidget from "hexabot-widget/src/UiChatWidget"; -import { usePathname } from "next/navigation"; import { FC, useEffect, useRef, useState } from "react"; import { HexabotLogo } from "@/app-components/logos/HexabotLogo"; @@ -28,8 +25,7 @@ import { getAvatarSrc } from "@/components/inbox/helpers/mapMessages"; import { useAuth } from "@/hooks/useAuth"; import { useConfig } from "@/hooks/useConfig"; import { useTranslate } from "@/hooks/useTranslate"; -import i18n from "@/i18n/config"; -import { EntityType, RouterType } from "@/services/types"; +import { EntityType } from "@/services/types"; import { getRandom } from "@/utils/safeRandom"; import { borderLine, theme } from "./themes/theme"; @@ -77,22 +73,8 @@ export type HeaderProps = { onToggleSidebar: () => void; }; -const CustomWidgetHeader = () => { - const { t } = useTranslate(); - - return ( - - - - {t("title.live_chat_tester")} - - - ); -}; - export const Header: FC = ({ isSideBarOpen, onToggleSidebar }) => { const { apiUrl, ssoEnabled } = useConfig(); - const pathname = usePathname(); const { t } = useTranslate(); const anchorRef = useRef(null); const [isMenuPopoverOpen, setIsMenuPopoverOpen] = useState(false); @@ -107,8 +89,6 @@ export const Header: FC = ({ isSideBarOpen, onToggleSidebar }) => { setRandomSeed(getRandom().toString()); }, [user]); - const isVisualEditor = pathname === `/${RouterType.VISUAL_EDITOR}`; - return ( @@ -214,24 +194,6 @@ export const Header: FC = ({ isSideBarOpen, onToggleSidebar }) => { ) : null} ) : null} - - - ( - - )} - /> - ); diff --git a/frontend/src/layout/index.tsx b/frontend/src/layout/index.tsx index d3737016..d18589f9 100644 --- a/frontend/src/layout/index.tsx +++ b/frontend/src/layout/index.tsx @@ -7,8 +7,11 @@ */ import { BoxProps, Grid } from "@mui/material"; +import { usePathname } from "next/navigation"; import { useState } from "react"; +import { ChatWidget } from "@/app-components/widget/ChatWidget"; + import { Content } from "./content"; import { Header } from "./Header"; import { VerticalMenu } from "./VerticalMenu"; @@ -26,6 +29,7 @@ export const Layout: React.FC = ({ sxContent, ...rest }) => { + const pathname = usePathname(); const [isSideBarOpen, setIsSideBarOpen] = useState(false); return ( @@ -42,6 +46,7 @@ export const Layout: React.FC = ({ {children} + ); };