feat: editor improvements and collapsible sidebars

Add collapse/expand toggle for the AppShell navigation sidebar and the
editor properties panel (both persisted to localStorage). Bundles other
in-progress editor work including position anchors, outlet sizing, PBR
textures, window slope/frame depth, curtain metadata, and various 2D/3D
rendering tweaks.
This commit is contained in:
2026-04-08 12:27:57 +03:00
parent aa8a874348
commit d8a914bf2a
116 changed files with 7324 additions and 1114 deletions
+8 -1
View File
@@ -1,7 +1,8 @@
import { z } from 'zod';
import { FLOOR_TYPES } from '../types/room.js';
import { FLOOR_TYPES, WALL_FINISHES } from '../types/room.js';
const floorTypeEnum = z.enum(FLOOR_TYPES);
const wallFinishEnum = z.enum(WALL_FINISHES);
const pointSchema = z.object({
x: z.number(),
@@ -21,6 +22,9 @@ export const createRoomSchema = z.object({
posY: z.number().optional(),
floorType: floorTypeEnum.optional(),
wallColor: z.string().max(20).optional(),
wallFinish: wallFinishEnum.optional(),
outletWidth: z.number().positive('Outlet width must be positive').optional(),
outletHeight: z.number().positive('Outlet height must be positive').optional(),
});
export const updateRoomSchema = z.object({
@@ -36,6 +40,9 @@ export const updateRoomSchema = z.object({
posY: z.number().optional(),
floorType: floorTypeEnum.optional(),
wallColor: z.string().max(20).optional(),
wallFinish: wallFinishEnum.optional(),
outletWidth: z.number().positive('Outlet width must be positive').optional(),
outletHeight: z.number().positive('Outlet height must be positive').optional(),
});
export type CreateRoomInput = z.infer<typeof createRoomSchema>;