diff --git a/packages/react/components/Drawer.tsx b/packages/react/components/Drawer.tsx
index d672a75..a334408 100644
--- a/packages/react/components/Drawer.tsx
+++ b/packages/react/components/Drawer.tsx
@@ -73,7 +73,7 @@ const DrawerTrigger = ({ children }: { children: React.ReactNode }) => {
 };
 
 const [drawerOverlayVariant, resolveDrawerOverlayVariantProps] = vcn({
-  base: "fixed inset-0",
+  base: "fixed inset-0 transition-[backdrop-filter] duration-75",
   variants: {
     opened: {
       true: "pointer-events-auto select-auto",
@@ -85,6 +85,8 @@ const [drawerOverlayVariant, resolveDrawerOverlayVariantProps] = vcn({
   },
 });
 
+const DRAWER_OVERLAY_BACKDROP_FILTER_BRIGHTNESS = 0.3;
+
 interface DrawerOverlayProps
   extends VariantProps<typeof drawerOverlayVariant>,
     AsChild,
@@ -116,7 +118,16 @@ const DrawerOverlay = forwardRef<HTMLDivElement, DrawerOverlayProps>(
           opened: state.isDragging ? true : state.opened,
         })}
         onClick={onOutsideClick}
-        style={/*{ backdropFilter: "brightness(0.5)" }*/ undefined}
+        style={{
+          backdropFilter: `brightness(${
+            state.isDragging
+              ? state.movePercentage + DRAWER_OVERLAY_BACKDROP_FILTER_BRIGHTNESS
+              : state.opened
+              ? DRAWER_OVERLAY_BACKDROP_FILTER_BRIGHTNESS
+              : 1
+          })`,
+          transitionDuration: state.isDragging ? "0s" : undefined,
+        }}
         ref={ref}
       />,
       document.body
@@ -197,11 +208,13 @@ const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(
               Math.abs(dragState.delta) > state.closeThreshold * size
                 ? false
                 : prev.opened,
+            movePercentage: 0,
           }));
         } else {
           setState((prev) => ({
             ...prev,
             isDragging: false,
+            movePercentage: 0,
           }));
         }
         setDragState({
@@ -232,6 +245,24 @@ const DrawerContent = forwardRef<HTMLDivElement, DrawerContentProps>(
               delta: prev.delta + movement,
             };
           });
+
+          if (
+            e.target instanceof Element &&
+            internalRef.current &&
+            internalRef.current.contains(e.target)
+          ) {
+            const size = ["top", "bottom"].includes(position)
+              ? e.target.getBoundingClientRect().height
+              : e.target.getBoundingClientRect().width;
+            const movePercentage = dragState.delta / size;
+
+            setState((prev) => ({
+              ...prev,
+              movePercentage: ["top", "left"].includes(position)
+                ? -movePercentage
+                : movePercentage,
+            }));
+          }
         }
       }