diff --git a/apps/web/src/app/ui/page.tsx b/apps/web/src/app/ui/page.tsx index 9c3b8df9..03a35535 100644 --- a/apps/web/src/app/ui/page.tsx +++ b/apps/web/src/app/ui/page.tsx @@ -1,14 +1,17 @@ -"use client"; -import Main from "@/components/Main"; -import Sidebar from "@/components/Sidebar/index"; -import { useState } from "react"; +import Main from '@/components/Main'; +import Sidebar from '@/components/Sidebar/index'; +import { cookies } from 'next/headers'; export default function Home() { - const [selectedItem, setSelectedItem] = useState(null); + const selectedItem = cookies().get('selectedItem')?.value; + const setSelectedItem = async (selectedItem: string | null) => { + 'use server'; + cookies().set('selectedItem', selectedItem!); + }; return (
- +
); diff --git a/apps/web/src/components/Sidebar/index.tsx b/apps/web/src/components/Sidebar/index.tsx index fe5fcb0a..55211f84 100644 --- a/apps/web/src/components/Sidebar/index.tsx +++ b/apps/web/src/components/Sidebar/index.tsx @@ -1,11 +1,11 @@ -"use client"; -import { StoredContent } from "@/server/db/schema"; -import { MemoryIcon } from "../../assets/Memories"; -import { Trash2, User2 } from "lucide-react"; -import React, { useEffect, useState } from "react"; -import { MemoriesBar } from "./MemoriesBar"; -import { AnimatePresence, motion } from "framer-motion"; -import { Bin } from "@/assets/Bin"; +'use client'; +import { StoredContent } from '@/server/db/schema'; +import { MemoryIcon } from '../../assets/Memories'; +import { Trash2, User2 } from 'lucide-react'; +import React, { useEffect, useState } from 'react'; +import { MemoriesBar } from './MemoriesBar'; +import { AnimatePresence, motion } from 'framer-motion'; +import { Bin } from '@/assets/Bin'; export type MenuItem = { icon: React.ReactNode | React.ReactNode[]; @@ -16,7 +16,7 @@ export type MenuItem = { const menuItemsTop: Array = [ { icon: , - label: "Memories", + label: 'Memories', content: MemoriesBar, }, ]; @@ -24,18 +24,18 @@ const menuItemsTop: Array = [ const menuItemsBottom: Array = [ { icon: , - label: "Trash", + label: 'Trash', }, { icon: , - label: "Profile", + label: 'Profile', }, ]; export default function Sidebar({ - onSelectChange, + selectChange, }: { - onSelectChange?: (selectedItem: string | null) => void; + selectChange?: (selectedItem: string | null) => Promise; }) { const menuItems = [...menuItemsTop, ...menuItemsBottom]; const [selectedItem, setSelectedItem] = useState(null); @@ -44,7 +44,7 @@ export default function Sidebar({ menuItems.find((i) => i.label === selectedItem)?.content ?? (() => <>); useEffect(() => { - onSelectChange?.(selectedItem); + void selectChange?.(selectedItem); }, [selectedItem]); return ( @@ -53,7 +53,7 @@ export default function Sidebar({
, content: MemoriesBar, }} @@ -65,16 +65,16 @@ export default function Sidebar({ , }} selectedItem={selectedItem} - id='trash-button' + id="trash-button" setSelectedItem={setSelectedItem} /> , }} selectedItem={selectedItem} @@ -117,11 +117,11 @@ const MenuItem = ({ export function SubSidebar({ children }: { children?: React.ReactNode }) { return (