diff --git a/ui/assets/PersonaFlowIcon-512.png b/ui/assets/PersonaFlowIcon-512.png new file mode 100644 index 00000000..62b6fd90 Binary files /dev/null and b/ui/assets/PersonaFlowIcon-512.png differ diff --git a/ui/src/app/[[...slug]]/page.tsx b/ui/src/app/[[...slug]]/page.tsx index 4eca9933..b3d2de12 100644 --- a/ui/src/app/[[...slug]]/page.tsx +++ b/ui/src/app/[[...slug]]/page.tsx @@ -12,7 +12,7 @@ export default function ConversationPage({ if (!isValidParam(params.slug)) return notFound(); return ( -
+
); diff --git a/ui/src/app/icon.ico b/ui/src/app/icon.ico new file mode 100644 index 00000000..62b6fd90 Binary files /dev/null and b/ui/src/app/icon.ico differ diff --git a/ui/src/app/layout.tsx b/ui/src/app/layout.tsx index 44c0f94d..c6a8598a 100644 --- a/ui/src/app/layout.tsx +++ b/ui/src/app/layout.tsx @@ -12,6 +12,9 @@ const inter = Inter({ subsets: ["latin"] }); export const metadata: Metadata = { title: "PersonaFlow", description: "Where AI meets individuality for unmatched personalization", + icons: { + icon: '/icon.ico' + } }; export default function RootLayout({ diff --git a/ui/src/components/features/build-panel/components/__tests__/assistant-builder.spec.tsx b/ui/src/components/features/build-panel/components/__tests__/assistant-builder.spec.tsx index cca47d6f..1e7b49fa 100644 --- a/ui/src/components/features/build-panel/components/__tests__/assistant-builder.spec.tsx +++ b/ui/src/components/features/build-panel/components/__tests__/assistant-builder.spec.tsx @@ -42,7 +42,6 @@ test("should render", () => { render(); - screen.getByRole("button", { name: "Create Assistant" }); expect(screen.getByText("EditAssistant")).toBeInTheDocument(); expect(screen.queryByText("CreateAssistant")).toBeNull(); }); diff --git a/ui/src/components/features/build-panel/components/assistant-builder.tsx b/ui/src/components/features/build-panel/components/assistant-builder.tsx index 1ea2a7ec..9e33759f 100644 --- a/ui/src/components/features/build-panel/components/assistant-builder.tsx +++ b/ui/src/components/features/build-panel/components/assistant-builder.tsx @@ -1,29 +1,14 @@ "use client"; -import { AssistantSelector } from "./assistant-selector"; -import { Button } from "@/components/ui/button"; -import { SquareIcon } from "@radix-ui/react-icons"; import { EditAssistant } from "./edit-assistant"; import { CreateAssistant } from "./create-assistant"; -import { useRouter } from "next/navigation"; import { useSlugRoutes } from "@/hooks/useSlugParams"; export function AssistentBuilder() { const {assistantId} = useSlugRoutes(); - const router = useRouter() return ( <> -
- - -
{assistantId ? : } ); diff --git a/ui/src/components/features/build-panel/components/build-panel.tsx b/ui/src/components/features/build-panel/components/build-panel.tsx index ab83d678..639a3f4c 100644 --- a/ui/src/components/features/build-panel/components/build-panel.tsx +++ b/ui/src/components/features/build-panel/components/build-panel.tsx @@ -12,7 +12,7 @@ export default function BuildPanel() { }; return ( -
+
{isOpen ? (
+ {threadId || isNewThread ? ( ) : ( -

Welcome!

+
+

{'<> Send a message to create a thread. '}

+
)} { + const [_, setIsNavbarOpen] = useAtom(threadAtom) + + const openNavbar = () => setIsNavbarOpen(isOpen => !isOpen); + + return +} \ No newline at end of file diff --git a/ui/src/components/features/header/components/header.tsx b/ui/src/components/features/header/components/header.tsx index 99acc0cd..6b82178a 100644 --- a/ui/src/components/features/header/components/header.tsx +++ b/ui/src/components/features/header/components/header.tsx @@ -1,7 +1,29 @@ +'use client' +import { Button } from "@/components/ui/button"; +import { AssistantSelector } from "../../build-panel/components/assistant-selector"; +import { useRouter } from "next/navigation"; +import { Plus } from "lucide-react"; +import PersonaFlowIcon from '../../../../../assets/PersonaFlowIcon-512.png' +import Image from "next/image"; + export default function Header() { + const router = useRouter() return ( -
-

[ personaflow ]

+
+
+ PersonaFlow logo +

[ personaflow ]

+
+
+ + +
); } diff --git a/ui/src/components/features/navbar/components/navbar.tsx b/ui/src/components/features/navbar/components/navbar.tsx index a24dc656..d98812ed 100644 --- a/ui/src/components/features/navbar/components/navbar.tsx +++ b/ui/src/components/features/navbar/components/navbar.tsx @@ -9,13 +9,16 @@ import { TGroupedThreads } from "@/data-provider/types"; import { useSlugRoutes } from "@/hooks/useSlugParams"; import NewThreadBtn from "./new-thread-btn"; import { useRouter } from "next/navigation"; +import { useAtom } from "jotai"; +import { threadAtom } from "@/store"; export default function Navbar() { const { data: threadsData, isLoading: threadsLoading } = useGetMyThreads(true); const [filteredThreads, setFilteredThreads] = useState(threadsData || {}); - const [open, setOpen] = useState(false); + const [isNavbarOpen] = useAtom(threadAtom); + // const [open, setOpen] = useState(false); const router = useRouter() @@ -48,21 +51,19 @@ export default function Navbar() { }; return ( -
- {/* Container */}
{!threadsLoading && } {!threadsLoading && Object.values(filteredThreads).every((value) => value.length === 0) && ( -
+

No threads found.

)}
- - {/* Toggle Sidebar */} -
- {open ? ( - setOpen(false)} color="#000" /> - ) : ( - setOpen(true)} color="#000" /> - )} -
-
); } diff --git a/ui/src/components/features/navbar/components/new-thread-btn.tsx b/ui/src/components/features/navbar/components/new-thread-btn.tsx index 3e28e592..579e936a 100644 --- a/ui/src/components/features/navbar/components/new-thread-btn.tsx +++ b/ui/src/components/features/navbar/components/new-thread-btn.tsx @@ -8,7 +8,7 @@ type TNewThreadBtnProps = { export default function NewThreadBtn({ handleClick, disabled }: TNewThreadBtnProps) { return ( -