From 61fdc548c5782703a7578a0da1cce1783fd72335 Mon Sep 17 00:00:00 2001 From: Yash Date: Tue, 2 Apr 2024 17:34:13 +0000 Subject: [PATCH] responsiveness and phone memory drawer --- apps/web/src/components/Main.tsx | 17 +++++++---- apps/web/src/components/MemoryDrawer.tsx | 36 +++++++++++++++++++++++ apps/web/src/components/Sidebar/index.tsx | 4 +-- apps/web/src/components/ui/drawer.tsx | 14 ++++++--- apps/web/src/hooks/useViewport.ts | 24 +++++++++++++++ 5 files changed, 83 insertions(+), 12 deletions(-) create mode 100644 apps/web/src/components/MemoryDrawer.tsx create mode 100644 apps/web/src/hooks/useViewport.ts diff --git a/apps/web/src/components/Main.tsx b/apps/web/src/components/Main.tsx index 15042e9a..9674ca03 100644 --- a/apps/web/src/components/Main.tsx +++ b/apps/web/src/components/Main.tsx @@ -3,35 +3,40 @@ import { useState } from "react"; import { FilterCombobox } from "./Sidebar/FilterCombobox"; import { Textarea2 } from "./ui/textarea"; import { ArrowRight } from "lucide-react"; +import { MemoryDrawer } from "./MemoryDrawer"; +import useViewport from "@/hooks/useViewport"; export default function Main({ sidebarOpen }: { sidebarOpen: boolean }) { const [value, setValue] = useState(""); + const { width } = useViewport(); return (
setValue(e.target.value), }} > -
- +
+
+ {width <= 768 && }
); } diff --git a/apps/web/src/components/MemoryDrawer.tsx b/apps/web/src/components/MemoryDrawer.tsx new file mode 100644 index 00000000..f9d7d6c4 --- /dev/null +++ b/apps/web/src/components/MemoryDrawer.tsx @@ -0,0 +1,36 @@ +import { useState } from "react"; +import { Drawer, DrawerContent, DrawerOverlay } from "./ui/drawer"; +import { MemoryIcon } from "@/assets/Memories"; + +export interface Props extends React.ButtonHTMLAttributes {} + +export function MemoryDrawer({ className, ...props }: Props) { + const [activeSnapPoint, setActiveSnapPoint] = useState< + number | null | string + >(0.1); + + return ( + + +
+ + Memories +
+ Hello +
+ +
+ ); +} diff --git a/apps/web/src/components/Sidebar/index.tsx b/apps/web/src/components/Sidebar/index.tsx index 214ba816..1680000b 100644 --- a/apps/web/src/components/Sidebar/index.tsx +++ b/apps/web/src/components/Sidebar/index.tsx @@ -47,7 +47,7 @@ export default function Sidebar({ return ( <> -
+
{menuItemsTop.map((item, index) => ( +
{children}
); diff --git a/apps/web/src/components/ui/drawer.tsx b/apps/web/src/components/ui/drawer.tsx index 705ca01c..28e8dbdf 100644 --- a/apps/web/src/components/ui/drawer.tsx +++ b/apps/web/src/components/ui/drawer.tsx @@ -28,6 +28,7 @@ const DrawerOverlay = React.forwardRef< >(({ className, ...props }, ref) => ( @@ -36,10 +37,13 @@ DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName; const DrawerContent = React.forwardRef< React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, children, ...props }, ref) => ( + React.ComponentPropsWithoutRef & { + overlay?: boolean; + handle?: boolean; + } +>(({ className, children, overlay = true, handle = true, ...props }, ref) => ( - + {overlay && } -
+ {handle && ( +
+ )} {children} diff --git a/apps/web/src/hooks/useViewport.ts b/apps/web/src/hooks/useViewport.ts new file mode 100644 index 00000000..ca4ec741 --- /dev/null +++ b/apps/web/src/hooks/useViewport.ts @@ -0,0 +1,24 @@ +import { useState, useEffect } from "react"; + +function getViewport() { + const { innerWidth: width, innerHeight: height } = window; + return { + width, + height, + }; +} + +export default function useViewport() { + const [viewport, setViewport] = useState(getViewport()); + + useEffect(() => { + function handleResize() { + setViewport(getViewport()); + } + + window.addEventListener("resize", handleResize); + return () => window.removeEventListener("resize", handleResize); + }, []); + + return viewport; +}