feat(furniture): nightstand legs, bookcase columns/drawers, AC unit LG style, soundbars, wood-cube sconce

- NIGHTSTAND: optional legs with adjustable height (capped at 60% of total height)
- BOOKCASE: shelfColumns with vertical dividers, per-cell drawer fronts with handles,
  z-fighting fix between dividers and back panel, stale drawerCells pruned on grid shrink
- AC_UNIT: new 'lg' style with dark vent, grille lines, deflector flap, LG accent
- SPEAKER: new 'soundbar' variant (90/110/140cm) with grille, driver cones, LED strip;
  SpeakerMesh split into dispatcher + SpeakerCabinetMesh to keep hook order stable
- Wall light: new 'wood-cube' style (wooden block sconce with top/bottom glow)
- PropertiesPanel: tf() helper replaces repeated i18n.exists fallbacks; inline checkbox
  styles consolidated into styles.checkboxLabel
- Translations: en/ru entries for new property keys
This commit is contained in:
2026-04-16 03:06:08 +03:00
parent 5fbd382120
commit c808bf1add
10 changed files with 523 additions and 18 deletions
+2
View File
@@ -42,6 +42,7 @@ export type {
PositionAnchor,
ElectricalType,
OutletDirection,
AcUnitStyle,
WallLightStyle,
FurnitureTexture,
ElectricalItem,
@@ -66,6 +67,7 @@ export {
DOOR_OPEN_DIRECTIONS,
ELECTRICAL_TYPES,
OUTLET_DIRECTIONS,
AC_UNIT_STYLES,
WALL_LIGHT_STYLES,
FURNITURE_TEXTURES,
TEXTURABLE_FURNITURE,
+4
View File
@@ -228,11 +228,15 @@ export type ElectricalType = (typeof ELECTRICAL_TYPES)[number];
export const OUTLET_DIRECTIONS = ['horizontal', 'vertical'] as const;
export type OutletDirection = (typeof OUTLET_DIRECTIONS)[number];
export const AC_UNIT_STYLES = ['generic', 'lg'] as const;
export type AcUnitStyle = (typeof AC_UNIT_STYLES)[number];
export const WALL_LIGHT_STYLES = [
'classic',
'pendant-globe',
'sconce-up',
'sconce-down',
'wood-cube',
] as const;
export type WallLightStyle = (typeof WALL_LIGHT_STYLES)[number];