feat: add outlet direction (horizontal/vertical), wall light styles, floor textures, and stretch ceiling

- Add configurable outlet direction (horizontal/vertical) stored in metadata
- Add wall light style variants (classic, pendant-globe, sconce-up, sconce-down)
- Add PBR floor textures including natural oak
- Add stretch ceiling offset support with DB migration
- Add furniture surface texture selection
- Add canvas theme colors utility for dark mode support
- Update projection views with improved rendering
- Add EN and RU translations for all new properties
This commit is contained in:
2026-04-12 20:52:49 +03:00
parent d8a914bf2a
commit 521ea5e85b
34 changed files with 1278 additions and 162 deletions
@@ -1,6 +1,7 @@
import { Group, Rect, Line } from 'react-konva';
import type { ProjectedOpening } from '../utils/projectionMapping';
import { projectionToPixel } from '../utils/projectionMapping';
import { useCanvasColors } from '../utils/canvasThemeColors';
interface ProjectionWindowProps {
readonly projected: ProjectedOpening;
@@ -26,6 +27,7 @@ export function ProjectionWindow({
onClick,
onDragStart,
}: ProjectionWindowProps) {
const colors = useCanvasColors();
const { rect, opening } = projected;
const displayX = isDragging && dragAlongWall != null
@@ -54,7 +56,7 @@ export function ProjectionWindow({
y={topLeft.y - 2}
width={pxWidth + 4}
height={pxHeight + 4}
stroke="#2563eb"
stroke={colors.selectedStroke}
strokeWidth={1}
dash={[3, 3]}
fill="transparent"
@@ -67,7 +69,7 @@ export function ProjectionWindow({
width={pxWidth}
height={pxHeight}
fill="#dbeafe"
stroke={isSelected ? '#2563eb' : '#3b82f6'}
stroke={isSelected ? colors.selectedStroke : '#3b82f6'}
strokeWidth={isSelected ? 2.5 : 1.5}
/>
{/* Glass pane (inner rectangle) */}