diff --git a/apps/editor/public/icons/elevator.svg b/apps/editor/public/icons/elevator.svg
deleted file mode 100644
index ddc9563e..00000000
--- a/apps/editor/public/icons/elevator.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
diff --git a/packages/editor/src/components/editor/wall-move-side-handles.tsx b/packages/editor/src/components/editor/wall-move-side-handles.tsx
index 43bd9019..917e01e0 100644
--- a/packages/editor/src/components/editor/wall-move-side-handles.tsx
+++ b/packages/editor/src/components/editor/wall-move-side-handles.tsx
@@ -3,7 +3,9 @@
import {
type AnyNodeId,
DEFAULT_WALL_HEIGHT,
+ getWallCurveFrameAt,
getWallThickness,
+ isCurvedWall,
sceneRegistry,
useScene,
type WallNode,
@@ -11,6 +13,7 @@ import {
import { useViewer } from '@pascal-app/viewer'
import { createPortal, type ThreeEvent } from '@react-three/fiber'
import { useEffect, useMemo, useState } from 'react'
+import { useThree } from '@react-three/fiber'
import {
BufferGeometry,
ConeGeometry,
@@ -18,6 +21,7 @@ import {
DoubleSide,
Float32BufferAttribute,
type Object3D,
+ OrthographicCamera,
} from 'three'
import { sfxEmitter } from '../../lib/sfx-bus'
import useEditor from '../../store/use-editor'
@@ -157,6 +161,14 @@ function WallMoveSideHandlesForWall({ wall }: { wall: WallNode }) {
function WallMoveArrowHandle({ wall, handle }: { wall: WallNode; handle: WallMoveHandle }) {
const [isHovered, setIsHovered] = useState(false)
const arrowGeometry = useMemo(() => createArrowHandleGeometry(), [])
+ const { camera } = useThree()
+
+ const zoom =
+ camera instanceof OrthographicCamera
+ ? 1 / camera.zoom
+ : 1
+
+ const scale = (isHovered ? 1.12 : 1) * zoom
useEffect(() => {
return () => {
@@ -186,7 +198,7 @@ function WallMoveArrowHandle({ wall, handle }: { wall: WallNode; handle: WallMov