diff --git a/apps/web/src/app/ui/content.tsx b/apps/web/src/app/ui/content.tsx new file mode 100644 index 00000000..6e28eaf8 --- /dev/null +++ b/apps/web/src/app/ui/content.tsx @@ -0,0 +1,15 @@ +"use client"; +import Main from "@/components/Main"; +import Sidebar from "@/components/Sidebar/index"; +import { useState } from "react"; + +export default function Content() { + const [selectedItem, setSelectedItem] = useState(); + + return ( +
+ +
+
+ ); +} diff --git a/apps/web/src/app/ui/page.tsx b/apps/web/src/app/ui/page.tsx index 03a35535..35175334 100644 --- a/apps/web/src/app/ui/page.tsx +++ b/apps/web/src/app/ui/page.tsx @@ -1,18 +1,10 @@ -import Main from '@/components/Main'; -import Sidebar from '@/components/Sidebar/index'; -import { cookies } from 'next/headers'; +import { MemoryProvider } from "@/contexts/MemoryContext"; +import Content from "./content"; export default function Home() { - 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/Main.tsx b/apps/web/src/components/Main.tsx index aa72a48e..e9a7071d 100644 --- a/apps/web/src/components/Main.tsx +++ b/apps/web/src/components/Main.tsx @@ -8,6 +8,14 @@ import useViewport from "@/hooks/useViewport"; import { motion } from "framer-motion"; import { cn } from "@/lib/utils"; +function supportsDVH() { + try { + return CSS.supports("height: 100dvh"); + } catch { + return false; + } +} + export default function Main({ sidebarOpen }: { sidebarOpen: boolean }) { const [hide, setHide] = useState(false); const [value, setValue] = useState(""); @@ -16,19 +24,9 @@ export default function Main({ sidebarOpen }: { sidebarOpen: boolean }) { const textArea = useRef(null); const main = useRef(null); - console.log("main px", sidebarOpen); - useEffect(() => { function onResize() { if (!main.current || !window.visualViewport) return; - // setValue( - // (prev) => - // prev + - // " changed to " + - // window.visualViewport?.height + - // " " + - // window.innerHeight, - // ); if ( window.visualViewport.height < window.innerHeight + 20 && window.visualViewport.height > window.innerHeight - 20 @@ -52,20 +50,16 @@ export default function Main({ sidebarOpen }: { sidebarOpen: boolean }) { data-sidebar-open={sidebarOpen} ref={main} className={cn( - "sidebar flex w-full flex-col items-end justify-center gap-5 px-5 pt-5 transition-[padding-left,padding-top,padding-right] delay-200 duration-200 md:items-center md:px-72 [&[data-sidebar-open='true']]:pr-10 [&[data-sidebar-open='true']]:delay-0 md:[&[data-sidebar-open='true']]:pl-[calc(2.5rem+30vw)]", - hide - ? "pb-5" - : CSS.supports("height: 100dvh") - ? "pb-[13vh]" - : "pb-[20vh]", + "sidebar flex w-full flex-col items-end justify-center gap-5 px-5 pt-5 transition-[padding-left,padding-top,padding-right] delay-200 duration-200 md:items-center md:gap-10 md:px-72 [&[data-sidebar-open='true']]:pr-10 [&[data-sidebar-open='true']]:delay-0 md:[&[data-sidebar-open='true']]:pl-[calc(2.5rem+30vw)]", + hide ? "pb-5" : supportsDVH() ? "pb-[13vh]" : "pb-[20vh]", )} > -

+

Ask your Second brain

= [ { 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({ - selectChange, + onSelectChange, }: { - selectChange?: (selectedItem: string | null) => Promise; + onSelectChange?: (selectedItem: string | null) => void; }) { 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(() => { - void selectChange?.(selectedItem); + void onSelectChange?.(selectedItem); }, [selectedItem]); return ( @@ -53,7 +53,7 @@ export default function Sidebar({
, content: MemoriesBar, }} @@ -65,7 +65,7 @@ export default function Sidebar({ , }} selectedItem={selectedItem} @@ -74,7 +74,7 @@ export default function Sidebar({ /> , }} selectedItem={selectedItem} @@ -117,11 +117,11 @@ const MenuItem = ({ export function SubSidebar({ children }: { children?: React.ReactNode }) { return ( ({ + spaces: [], +}); + +export const MemoryProvider: React.FC< + { spaces: Space[] } & React.PropsWithChildren +> = ({ children, spaces }) => { + return ( + + {children} + + ); +}; + +export const useMemory = () => { + const context = React.useContext(MemoryContext); + if (context === undefined) { + throw new Error("useMemory must be used within a MemoryProvider"); + } + return context; +};