@pascal-app/editor 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/package.json +9 -5
  2. package/src/components/editor/bottom-sheet.tsx +149 -0
  3. package/src/components/editor/custom-camera-controls.tsx +75 -7
  4. package/src/components/editor/editor-layout-mobile.tsx +264 -0
  5. package/src/components/editor/editor-layout-v2.tsx +20 -0
  6. package/src/components/editor/first-person/build-collider-world.ts +365 -0
  7. package/src/components/editor/first-person/bvh-ecctrl.tsx +795 -0
  8. package/src/components/editor/first-person-controls.tsx +496 -143
  9. package/src/components/editor/floating-action-menu.tsx +32 -55
  10. package/src/components/editor/floorplan-background-selection.ts +113 -0
  11. package/src/components/editor/floorplan-panel.tsx +9855 -3298
  12. package/src/components/editor/index.tsx +269 -21
  13. package/src/components/editor/selection-manager.tsx +575 -13
  14. package/src/components/editor/thumbnail-generator.tsx +38 -7
  15. package/src/components/editor/use-floorplan-background-placement.ts +257 -0
  16. package/src/components/editor/use-floorplan-hit-testing.ts +171 -0
  17. package/src/components/editor/use-floorplan-scene-data.ts +189 -0
  18. package/src/components/editor/wall-measurement-label.tsx +267 -36
  19. package/src/components/editor-2d/floorplan-action-menu-layer.tsx +95 -0
  20. package/src/components/editor-2d/floorplan-cursor-indicator-overlay.tsx +160 -0
  21. package/src/components/editor-2d/floorplan-hotkey-handlers.tsx +92 -0
  22. package/src/components/editor-2d/renderers/floorplan-draft-layer.tsx +119 -0
  23. package/src/components/editor-2d/renderers/floorplan-marquee-layer.tsx +58 -0
  24. package/src/components/editor-2d/renderers/floorplan-measurements-layer.tsx +197 -0
  25. package/src/components/editor-2d/renderers/floorplan-roof-layer.tsx +113 -0
  26. package/src/components/editor-2d/renderers/floorplan-stair-layer.tsx +474 -0
  27. package/src/components/editor-2d/svg-paths.ts +119 -0
  28. package/src/components/tools/ceiling/ceiling-boundary-editor.tsx +1 -0
  29. package/src/components/tools/ceiling/ceiling-hole-editor.tsx +1 -0
  30. package/src/components/tools/ceiling/ceiling-tool.tsx +5 -5
  31. package/src/components/tools/column/column-tool.tsx +97 -0
  32. package/src/components/tools/column/move-column-tool.tsx +105 -0
  33. package/src/components/tools/door/door-tool.tsx +7 -0
  34. package/src/components/tools/door/move-door-tool.tsx +28 -8
  35. package/src/components/tools/fence/fence-drafting.ts +10 -3
  36. package/src/components/tools/fence/fence-tool.tsx +159 -3
  37. package/src/components/tools/fence/move-fence-endpoint-tool.tsx +129 -18
  38. package/src/components/tools/fence/move-fence-tool.tsx +101 -34
  39. package/src/components/tools/item/move-tool.tsx +10 -1
  40. package/src/components/tools/item/placement-math.ts +30 -1
  41. package/src/components/tools/item/placement-strategies.ts +109 -31
  42. package/src/components/tools/item/placement-types.ts +7 -0
  43. package/src/components/tools/item/use-draft-node.ts +2 -0
  44. package/src/components/tools/item/use-placement-coordinator.tsx +660 -52
  45. package/src/components/tools/roof/move-roof-tool.tsx +22 -15
  46. package/src/components/tools/shared/polygon-editor.tsx +153 -28
  47. package/src/components/tools/shared/segment-angle.ts +156 -0
  48. package/src/components/tools/slab/slab-boundary-editor.tsx +1 -0
  49. package/src/components/tools/slab/slab-hole-editor.tsx +1 -0
  50. package/src/components/tools/spawn/move-spawn-tool.tsx +101 -0
  51. package/src/components/tools/spawn/spawn-tool.tsx +130 -0
  52. package/src/components/tools/tool-manager.tsx +18 -3
  53. package/src/components/tools/wall/move-wall-endpoint-tool.tsx +121 -20
  54. package/src/components/tools/wall/wall-drafting.ts +18 -9
  55. package/src/components/tools/wall/wall-tool.tsx +134 -2
  56. package/src/components/tools/window/move-window-tool.tsx +18 -0
  57. package/src/components/tools/window/window-tool.tsx +5 -0
  58. package/src/components/ui/action-menu/camera-actions.tsx +37 -33
  59. package/src/components/ui/action-menu/control-modes.tsx +28 -1
  60. package/src/components/ui/action-menu/index.tsx +91 -1
  61. package/src/components/ui/action-menu/structure-tools.tsx +2 -0
  62. package/src/components/ui/action-menu/view-toggles.tsx +424 -35
  63. package/src/components/ui/command-palette/editor-commands.tsx +18 -1
  64. package/src/components/ui/controls/material-picker.tsx +152 -165
  65. package/src/components/ui/controls/slider-control.tsx +66 -18
  66. package/src/components/ui/floating-level-selector.tsx +286 -55
  67. package/src/components/ui/helpers/helper-manager.tsx +5 -0
  68. package/src/components/ui/item-catalog/catalog-items.tsx +1116 -1219
  69. package/src/components/ui/item-catalog/item-catalog.tsx +42 -175
  70. package/src/components/ui/level-duplicate-dialog.tsx +115 -0
  71. package/src/components/ui/panels/ceiling-panel.tsx +1 -25
  72. package/src/components/ui/panels/column-panel.tsx +715 -0
  73. package/src/components/ui/panels/door-panel.tsx +981 -289
  74. package/src/components/ui/panels/fence-panel.tsx +3 -45
  75. package/src/components/ui/panels/mobile-panel-sheet.tsx +108 -0
  76. package/src/components/ui/panels/mobile-selection-bar.tsx +100 -0
  77. package/src/components/ui/panels/node-display.ts +39 -0
  78. package/src/components/ui/panels/paint-panel.tsx +138 -0
  79. package/src/components/ui/panels/panel-manager.tsx +210 -1
  80. package/src/components/ui/panels/panel-wrapper.tsx +48 -39
  81. package/src/components/ui/panels/reference-panel.tsx +238 -5
  82. package/src/components/ui/panels/roof-panel.tsx +4 -105
  83. package/src/components/ui/panels/roof-segment-panel.tsx +0 -25
  84. package/src/components/ui/panels/slab-panel.tsx +4 -30
  85. package/src/components/ui/panels/spawn-panel.tsx +155 -0
  86. package/src/components/ui/panels/stair-panel.tsx +11 -117
  87. package/src/components/ui/panels/stair-segment-panel.tsx +0 -25
  88. package/src/components/ui/panels/wall-panel.tsx +1 -95
  89. package/src/components/ui/panels/window-panel.tsx +660 -139
  90. package/src/components/ui/sidebar/mobile-tab-bar.tsx +46 -0
  91. package/src/components/ui/sidebar/panels/settings-panel/keyboard-shortcuts-dialog.tsx +2 -2
  92. package/src/components/ui/sidebar/panels/site-panel/building-tree-node.tsx +2 -2
  93. package/src/components/ui/sidebar/panels/site-panel/column-tree-node.tsx +77 -0
  94. package/src/components/ui/sidebar/panels/site-panel/index.tsx +109 -24
  95. package/src/components/ui/sidebar/panels/site-panel/level-tree-node.tsx +2 -2
  96. package/src/components/ui/sidebar/panels/site-panel/spawn-tree-node.tsx +82 -0
  97. package/src/components/ui/sidebar/panels/site-panel/tree-node.tsx +9 -3
  98. package/src/components/ui/sidebar/panels/site-panel/zone-tree-node.tsx +8 -5
  99. package/src/components/ui/sidebar/tab-bar.tsx +3 -0
  100. package/src/components/ui/viewer-toolbar.tsx +42 -1
  101. package/src/hooks/use-auto-frame.ts +45 -0
  102. package/src/hooks/use-keyboard.ts +64 -7
  103. package/src/hooks/use-mobile.ts +12 -12
  104. package/src/lib/door-interaction.ts +88 -0
  105. package/src/lib/floorplan/geometry.ts +263 -0
  106. package/src/lib/floorplan/index.ts +38 -0
  107. package/src/lib/floorplan/items.ts +179 -0
  108. package/src/lib/floorplan/selection-tool.ts +231 -0
  109. package/src/lib/floorplan/stairs.ts +478 -0
  110. package/src/lib/floorplan/types.ts +57 -0
  111. package/src/lib/floorplan/walls.ts +23 -0
  112. package/src/lib/guide-events.ts +10 -0
  113. package/src/lib/level-duplication.test.ts +72 -0
  114. package/src/lib/level-duplication.ts +153 -0
  115. package/src/lib/local-guide-image.ts +42 -0
  116. package/src/lib/material-paint.ts +284 -0
  117. package/src/lib/roof-duplication.ts +214 -0
  118. package/src/lib/scene-bounds.test.ts +183 -0
  119. package/src/lib/scene-bounds.ts +169 -0
  120. package/src/lib/stair-duplication.ts +126 -0
  121. package/src/lib/window-interaction.ts +86 -0
  122. package/src/store/use-editor.tsx +164 -8
@@ -1,1581 +1,1478 @@
1
1
  import type { AssetInput } from '@pascal-app/core'
2
+
2
3
  export const CATALOG_ITEMS: AssetInput[] = [
3
4
  {
4
- id: 'tesla',
5
- category: 'outdoor',
6
- tags: ['floor', 'garage'],
7
- name: 'Tesla',
8
- thumbnail: '/items/tesla/thumbnail.webp',
9
- src: '/items/tesla/model.glb',
10
- scale: [1, 1, 1],
11
- offset: [0, 0, 0],
5
+ id: 'cactus',
6
+ category: 'furniture',
7
+ name: 'Cactus',
8
+ tags: ['cactus', 'rack', 'stand', 'hanger', 'sculpture', 'decor', 'modern', 'contemporary', 'pop', 'green', 'organizer', 'storage', 'sculptural'],
9
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/cactus/thumbnail.png',
10
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/cactus/model.glb',
11
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/cactus/floor-plan.png',
12
+ dimensions: [0.34, 0.39, 0.27],
13
+ offset: [-0.0039, 0, 0],
12
14
  rotation: [0, 0, 0],
13
- dimensions: [2, 1.7, 5],
15
+ scale: [1, 1, 1],
14
16
  },
15
17
  {
16
- id: 'ev-wall-charger',
17
- category: 'appliance',
18
- tags: ['wall', 'garage'],
19
- name: 'Ev-wall-charger',
20
- thumbnail: '/items/ev-wall-charger/thumbnail.webp',
21
- src: '/items/ev-wall-charger/model.glb',
22
- scale: [1, 1, 1],
23
- offset: [-0.07, 0.4, 0.15],
18
+ id: 'tv-stand',
19
+ category: 'furniture',
20
+ name: 'TV Stand',
21
+ tags: ['floor', 'storage'],
22
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/tv-stand/thumbnail.png',
23
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/tv-stand/model.glb',
24
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/tv-stand/floor-plan.png',
25
+ dimensions: [1.86, 0.35, 0.32],
26
+ offset: [0, 0.2066, 0],
24
27
  rotation: [0, 0, 0],
25
- dimensions: [0.5, 0.8, 0.5],
26
- attachTo: 'wall',
28
+ scale: [1, 1, 1],
29
+ surface: { height: 0.35 },
27
30
  },
28
31
  {
29
- id: 'pillar',
30
- category: 'outdoor',
31
- tags: ['structure', 'fencing'],
32
- name: 'Pillar',
33
- thumbnail: '/items/pillar/thumbnail.webp',
34
- src: '/items/pillar/model.glb',
35
- scale: [1, 1, 1],
36
- offset: [0, 0, 0],
32
+ id: 'dining-table-mo9ms5yh',
33
+ category: 'furniture',
34
+ name: 'Dining table',
35
+ tags: ['dining', 'table', 'dinette', 'wood', 'oak', 'modern', 'minimalist', 'scandinavian', 'rectangular', 'kitchen', 'mealtime', 'entertaining'],
36
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dining-table-mo9ms5yh/thumbnail.png',
37
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dining-table-mo9ms5yh/models/item_model_Sffq4hIGw8R3keLh.glb',
38
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dining-table-mo9ms5yh/floor-plan.png',
39
+ dimensions: [2, 0.77, 0.91],
40
+ offset: [0.0002, 0.3793, -0.0026],
37
41
  rotation: [0, 0, 0],
38
- dimensions: [0.5, 1.3, 0.5],
42
+ scale: [2, 2, 2],
43
+ surface: { height: 0.77 },
39
44
  },
40
-
41
45
  {
42
- id: 'high-fence',
43
- category: 'outdoor',
44
- tags: ['fencing'],
45
- name: 'High Fence',
46
- thumbnail: '/items/high-fence/thumbnail.webp',
47
- src: '/items/high-fence/model.glb',
48
- scale: [1, 1, 1],
49
- offset: [0, 0.01, 0],
46
+ id: 'single-bed',
47
+ category: 'furniture',
48
+ name: 'Single Bed',
49
+ tags: ['floor', 'bedroom'],
50
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/single-bed/thumbnail.png',
51
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/single-bed/model.glb',
52
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/single-bed/floor-plan.png',
53
+ dimensions: [1.08, 0.6, 2.14],
54
+ offset: [-0.0024, 0, -0.013],
50
55
  rotation: [0, 0, 0],
51
- dimensions: [4, 4.1, 0.5],
56
+ scale: [1, 1, 1],
52
57
  },
53
-
54
58
  {
55
- id: 'medium-fence',
56
- category: 'outdoor',
57
- tags: ['fencing'],
58
- name: 'Medium Fence',
59
- thumbnail: '/items/medium-fence/thumbnail.webp',
60
- src: '/items/medium-fence/model.glb',
61
- scale: [0.49, 0.49, 0.49],
62
- offset: [0, 0.01, 0],
59
+ id: 'livingroom-chair',
60
+ category: 'furniture',
61
+ name: 'Livingroom Chair',
62
+ tags: ['chair', 'armchair', 'seating', 'lounge', 'upholstered', 'modern', 'fabric', 'furniture', 'minimalist', 'comfort', 'accent', 'lounger'],
63
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/livingroom-chair/thumbnail.png',
64
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/livingroom-chair/model.glb',
65
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/livingroom-chair/floor-plan.png',
66
+ dimensions: [1.1, 0.75, 1.07],
67
+ offset: [0, 0.0001, 0.0053],
63
68
  rotation: [0, 0, 0],
64
- dimensions: [2, 2, 0.5],
69
+ scale: [1, 1, 1],
65
70
  },
66
-
67
71
  {
68
- id: 'low-fence',
69
- category: 'outdoor',
70
- tags: ['fencing'],
71
- name: 'Low Fence',
72
- thumbnail: '/items/low-fence/thumbnail.webp',
73
- src: '/items/low-fence/model.glb',
74
- scale: [1, 1, 1],
75
- offset: [0, 0.01, 0],
72
+ id: 'small-indoor-plant',
73
+ category: 'furniture',
74
+ name: 'Small Plant',
75
+ tags: ['countertop', 'decor', 'vegetation'],
76
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/small-indoor-plant/thumbnail.png',
77
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/small-indoor-plant/model.glb',
78
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/small-indoor-plant/floor-plan.png',
79
+ dimensions: [0.4, 0.67, 0.38],
80
+ offset: [-0.0106, 0, 0.0067],
76
81
  rotation: [0, 0, 0],
77
- dimensions: [2, 0.8, 0.5],
82
+ scale: [1, 1, 1],
78
83
  },
79
-
80
84
  {
81
- id: 'bush',
82
- category: 'outdoor',
83
- tags: ['vegetation'],
84
- name: 'Bush',
85
- thumbnail: '/items/bush/thumbnail.webp',
86
- src: '/items/bush/model.glb',
87
- scale: [0.96, 0.96, 0.96],
88
- offset: [-0.14, 0.01, -0.13],
85
+ id: 'column',
86
+ category: 'furniture',
87
+ name: 'Column',
88
+ tags: ['column', 'pillar', 'pedestal', 'plinth', 'stand', 'marble', 'stone', 'classical', 'roman', 'greek', 'decorative', 'architectural', 'antique', 'support', 'base'],
89
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/column/thumbnail.png',
90
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/column/model.glb',
91
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/column/floor-plan.png',
92
+ dimensions: [0.5, 2.5, 0.5],
93
+ offset: [0, 1.25, 0],
89
94
  rotation: [0, 0, 0],
90
- dimensions: [3, 1.1, 1],
95
+ scale: [1, 1, 1],
91
96
  },
92
-
93
97
  {
94
- id: 'fir-tree',
95
- category: 'outdoor',
96
- tags: ['vegetation'],
97
- name: 'Fir',
98
- thumbnail: '/items/fir-tree/thumbnail.webp',
99
- src: '/items/fir-tree/model.glb',
100
- scale: [1, 1, 1],
101
- offset: [-0.01, 0.05, -0.07],
98
+ id: 'barbell',
99
+ category: 'furniture',
100
+ name: 'Barbell',
101
+ tags: ['barbell', 'weight', 'steel', 'iron', 'metal', 'gym', 'fitness', 'industrial', 'workout', 'strength', 'training', 'lifting', 'chrome', 'exercise'],
102
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/barbell/thumbnail.png',
103
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/barbell/model.glb',
104
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/barbell/floor-plan.png',
105
+ dimensions: [0.38, 0.38, 1.72],
106
+ offset: [0, 0, 0],
102
107
  rotation: [0, 0, 0],
103
- dimensions: [0.5, 3, 0.5],
108
+ scale: [1, 1, 1],
104
109
  },
105
-
106
110
  {
107
- id: 'tree',
108
- category: 'outdoor',
109
- tags: ['vegetation'],
110
- name: 'Tree',
111
- thumbnail: '/items/tree/thumbnail.webp',
112
- src: '/items/tree/model.glb',
113
- scale: [0.65, 0.65, 0.65],
114
- offset: [-0.02, 0.17, -0.04],
111
+ id: 'toy',
112
+ category: 'furniture',
113
+ name: 'Toy',
114
+ tags: ['floor', 'kids', 'decor'],
115
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toy/thumbnail.png',
116
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toy/model.glb',
117
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toy/floor-plan.png',
118
+ dimensions: [0.29, 0.49, 0.34],
119
+ offset: [0, 0, 0],
115
120
  rotation: [0, 0, 0],
116
- dimensions: [1, 5, 1],
121
+ scale: [1, 1, 1],
117
122
  },
118
-
119
123
  {
120
- id: 'palm',
121
- category: 'outdoor',
122
- tags: ['vegetation'],
123
- name: 'Palm',
124
- thumbnail: '/items/palm/thumbnail.webp',
125
- src: '/items/palm/model.glb',
126
- scale: [0.37, 0.37, 0.37],
127
- offset: [0, 0, 0.02],
124
+ id: 'barbell-stand',
125
+ category: 'furniture',
126
+ name: 'Barbell Stand',
127
+ tags: ['rack', 'stand', 'holder', 'storage', 'metal', 'steel', 'industrial', 'fitness', 'gym', 'weightlifting', 'training', 'minimalist', 'black', 'organizer'],
128
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/barbell-stand/thumbnail.png',
129
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/barbell-stand/model.glb',
130
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/barbell-stand/floor-plan.png',
131
+ dimensions: [1.34, 1.22, 1.72],
132
+ offset: [-0.0173, 0, 0],
128
133
  rotation: [0, 0, 0],
129
- dimensions: [1, 4.5, 1],
134
+ scale: [1, 1, 1],
130
135
  },
131
-
132
136
  {
133
- id: 'patio-umbrella',
134
- category: 'outdoor',
135
- tags: ['leisure', 'floor'],
136
- name: 'Patio Umbrella',
137
- thumbnail: '/items/patio-umbrella/thumbnail.webp',
138
- src: '/items/patio-umbrella/model.glb',
137
+ id: 'books',
138
+ category: 'furniture',
139
+ name: 'Books',
140
+ tags: ['books', 'novels', 'literature', 'reading', 'vintage', 'classic', 'decorative', 'paper', 'leather', 'library', 'study', 'office', 'decor', 'shelf', 'antique'],
141
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/books/thumbnail.png',
142
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/books/model.glb',
143
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/books/floor-plan.png',
144
+ dimensions: [0.22, 0.22, 0.18],
145
+ offset: [-0.0851, 0.003, 0.0209],
146
+ rotation: [0, 0, 0],
139
147
  scale: [1, 1, 1],
148
+ },
149
+ {
150
+ id: 'stool',
151
+ category: 'furniture',
152
+ name: 'Stool',
153
+ tags: ['floor', 'seating'],
154
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/stool/thumbnail.png',
155
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/stool/model.glb',
156
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/stool/floor-plan.png',
157
+ dimensions: [0.52, 1.16, 0.55],
140
158
  offset: [0, 0, 0],
141
159
  rotation: [0, 0, 0],
142
- dimensions: [0.5, 3.7, 0.5],
160
+ scale: [1, 1, 1],
143
161
  },
144
-
145
162
  {
146
- id: 'sunbed',
147
- category: 'outdoor',
148
- tags: ['leisure', 'seating', 'floor'],
149
- name: 'Sunbed',
150
- thumbnail: '/items/sunbed/thumbnail.webp',
151
- src: '/items/sunbed/model.glb',
152
- scale: [1, 1, 1],
153
- offset: [0, 0.04, 0],
163
+ id: 'pool-table',
164
+ category: 'furniture',
165
+ name: 'Pool table',
166
+ tags: ['pool', 'billiards', 'snooker', 'table', 'recreation', 'leisure', 'entertainment', 'wood', 'felt', 'gaming', 'traditional', 'luxury', 'classic', 'hobby', 'furniture'],
167
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/pool-table/thumbnail.png',
168
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/pool-table/model.glb',
169
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/pool-table/floor-plan.png',
170
+ dimensions: [2.11, 0.98, 3.5],
171
+ offset: [0, 0, 0],
154
172
  rotation: [0, 0, 0],
155
- dimensions: [1, 1.2, 1.5],
173
+ scale: [1, 1, 1],
156
174
  },
157
-
158
175
  {
159
- id: 'window-double',
160
- category: 'window',
161
- tags: ['wall'],
162
- name: 'Double Window',
163
- thumbnail: '/items/window-double/thumbnail.webp',
164
- src: '/items/window-double/model.glb',
165
- scale: [0.81, 0.81, 0.81],
166
- offset: [0, -0.32, 0],
167
- rotation: [0, 3.14, 0],
168
- dimensions: [1.5, 1.5, 0.5],
169
- attachTo: 'wall',
176
+ id: 'bookshelf',
177
+ category: 'furniture',
178
+ name: 'Bookshelf',
179
+ tags: ['bookshelf', 'bookcase', 'shelving', 'storage', 'organizer', 'modern', 'minimalist', 'wood', 'metal', 'industrial', 'library', 'office', 'furniture', 'display', 'timber'],
180
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bookshelf/thumbnail.png',
181
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bookshelf/model.glb',
182
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bookshelf/floor-plan.png',
183
+ dimensions: [0.93, 1.99, 0.33],
184
+ offset: [0, 0, 0.0032],
185
+ rotation: [0, 0, 0],
186
+ scale: [1, 1, 1],
170
187
  },
171
-
172
188
  {
173
- id: 'window-simple',
174
- category: 'window',
175
- tags: ['wall'],
176
- name: 'Simple Window',
177
- thumbnail: '/items/window-simple/thumbnail.webp',
178
- src: '/items/window-simple/model.glb',
189
+ id: 'coat-rack',
190
+ category: 'furniture',
191
+ name: 'Coat Rack',
192
+ tags: ['coatrack', 'rack', 'hanger', 'valet', 'organizer', 'storage', 'entryway', 'hallway', 'minimalist', 'metal', 'wood', 'mudroom', 'hooks', 'clothes'],
193
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/coat-rack/thumbnail.png',
194
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/coat-rack/model.glb',
195
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/coat-rack/floor-plan.png',
196
+ dimensions: [0.33, 1.76, 0.33],
197
+ offset: [0, 0, 0],
198
+ rotation: [0, 0, 0],
179
199
  scale: [1, 1, 1],
180
- offset: [1.06, -0.21, 0.05],
181
- rotation: [0, 3.14, 0],
182
- dimensions: [1.5, 2, 0.5],
183
- attachTo: 'wall',
184
200
  },
185
-
186
201
  {
187
- id: 'window-rectangle',
188
- category: 'window',
189
- tags: ['wall'],
190
- name: 'Rectangle Window',
191
- thumbnail: '/items/window-rectangle/thumbnail.webp',
192
- src: '/items/window-rectangle/model.glb',
193
- scale: [0.81, 0.81, 0.81],
194
- offset: [-1.41, -0.28, 0.08],
195
- rotation: [0, 3.14, 0],
196
- dimensions: [2.5, 1.5, 0.5],
197
- attachTo: 'wall',
202
+ id: 'car-toy',
203
+ category: 'furniture',
204
+ name: 'Car Toy',
205
+ tags: ['car', 'toy', 'vehicle', 'racer', 'play', 'nursery', 'playroom', 'wooden', 'vintage', 'decor', 'kids', 'child', 'classic', 'miniature', 'hobby'],
206
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/car-toy/thumbnail.png',
207
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/car-toy/model.glb',
208
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/car-toy/floor-plan.png',
209
+ dimensions: [0.31, 0.38, 0.6],
210
+ offset: [0.0005, 0.0005, -0.0075],
211
+ rotation: [0, 0, 0],
212
+ scale: [1, 1, 1],
198
213
  },
199
-
200
214
  {
201
- id: 'door-bar',
202
- category: 'door',
203
- tags: ['wall'],
204
- name: 'Door with bar',
205
- thumbnail: '/items/door-bar/thumbnail.webp',
206
- src: '/items/door-bar/model.glb',
207
- scale: [1, 1, 1],
208
- offset: [-0.48, 0, 0],
215
+ id: 'bedside-table',
216
+ category: 'furniture',
217
+ name: 'Bedside Table',
218
+ tags: ['nightstand', 'table', 'bedroom', 'storage', 'wood', 'modern', 'minimalist', 'stand', 'drawer', 'furniture', 'cabinet', 'bedside'],
219
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bedside-table/thumbnail.png',
220
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bedside-table/model.glb',
221
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bedside-table/floor-plan.png',
222
+ dimensions: [0.45, 0.48, 0.46],
223
+ offset: [0.0005, 0, -0.0062],
209
224
  rotation: [0, 0, 0],
210
- dimensions: [1.5, 2.5, 0.5],
211
- attachTo: 'wall',
225
+ scale: [1, 1, 1],
226
+ surface: { height: 0.48 },
212
227
  },
213
-
214
228
  {
215
- id: 'glass-door',
216
- category: 'door',
217
- tags: ['wall'],
218
- name: 'Glass Door',
219
- thumbnail: '/items/glass-door/thumbnail.webp',
220
- src: '/items/glass-door/model.glb',
221
- scale: [0.9, 0.9, 0.9],
222
- offset: [-0.52, 0, 0],
229
+ id: 'sofa',
230
+ category: 'furniture',
231
+ name: 'Sofa',
232
+ tags: ['floor', 'seating'],
233
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sofa/thumbnail.png',
234
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sofa/model.glb',
235
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sofa/floor-plan.png',
236
+ dimensions: [2.06, 0.74, 1.01],
237
+ offset: [-0.0023, 0.009, 0.0459],
223
238
  rotation: [0, 0, 0],
224
- dimensions: [1.5, 2.5, 0.4],
225
- attachTo: 'wall',
239
+ scale: [1, 1, 1],
226
240
  },
227
-
228
241
  {
229
- id: 'door',
230
- category: 'door',
231
- tags: ['wall'],
232
- name: 'Door',
233
- thumbnail: '/items/door/thumbnail.webp',
234
- src: '/items/door/model.glb',
235
- scale: [0.79, 0.79, 0.79],
236
- offset: [-0.43, 0, 0],
242
+ id: 'bunkbed',
243
+ category: 'furniture',
244
+ name: 'Bunkbed',
245
+ tags: ['bunkbed', 'bed', 'sleeper', 'loft', 'bedroom', 'kids', 'wood', 'metal', 'modern', 'sleeping', 'ladder', 'rustic', 'dormitory', 'furniture'],
246
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bunkbed/thumbnail.png',
247
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bunkbed/model.glb',
248
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bunkbed/floor-plan.png',
249
+ dimensions: [1.65, 1.55, 0.99],
250
+ offset: [0, 0, -0.0886],
237
251
  rotation: [0, 0, 0],
238
- dimensions: [1.5, 2, 0.4],
239
- attachTo: 'wall',
252
+ scale: [1, 1, 1],
240
253
  },
241
-
242
254
  {
243
- id: 'parking-spot',
244
- category: 'outdoor',
245
- tags: ['leisure', 'floor'],
246
- name: 'Parking Spot',
247
- thumbnail: '/items/parking-spot/thumbnail.webp',
248
- src: '/items/parking-spot/model.glb',
249
- scale: [0.9, 1, 0.78],
250
- offset: [0, 0, 0.01],
255
+ id: 'my-leather-couch-modp80ha',
256
+ category: 'furniture',
257
+ name: 'My leather couch',
258
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/my-leather-couch-modp80ha/thumbnail.png',
259
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/my-leather-couch-modp80ha/models/item_model_kgORhH5vwFK8xub0.glb',
260
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/my-leather-couch-modp80ha/floor-plan.png',
261
+ dimensions: [2, 0.67, 0.61],
262
+ offset: [-0.0005, 0.3228, -0.004],
251
263
  rotation: [0, 0, 0],
252
- dimensions: [5, 1, 2.5],
264
+ scale: [2, 2, 2],
253
265
  },
254
-
255
266
  {
256
- id: 'outdoor-playhouse',
257
- category: 'outdoor',
258
- tags: ['leisure', 'kids', 'floor'],
259
- name: 'Outdoor Playhouse',
260
- thumbnail: '/items/outdoor-playhouse/thumbnail.webp',
261
- src: '/items/outdoor-playhouse/model.glb',
262
- scale: [1, 1, 1],
263
- offset: [0, 0, 0],
267
+ id: 'office-table',
268
+ category: 'furniture',
269
+ name: 'Office Table',
270
+ tags: ['desk', 'table', 'workstation', 'furniture', 'office', 'work', 'study', 'writing', 'modern', 'minimalist', 'industrial', 'wood', 'metal'],
271
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/office-table/thumbnail.png',
272
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/office-table/model.glb',
273
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/office-table/floor-plan.png',
274
+ dimensions: [1.51, 0.76, 0.62],
275
+ offset: [-0.0001, 0, -0.0052],
264
276
  rotation: [0, 0, 0],
265
- dimensions: [0.5, 0.5, 1],
277
+ scale: [1, 1, 1],
278
+ surface: { height: 0.75 },
266
279
  },
267
-
268
280
  {
269
- id: 'skate',
270
- category: 'outdoor',
271
- tags: ['leisure', 'kids', 'floor'],
272
- name: 'Skate',
273
- thumbnail: '/items/skate/thumbnail.webp',
274
- src: '/items/skate/model.glb',
275
- scale: [1, 1, 1],
276
- offset: [0, 0, 0],
281
+ id: 'dining-table',
282
+ category: 'furniture',
283
+ name: 'Dining Table',
284
+ tags: ['table', 'dining', 'furniture', 'wood', 'modern', 'minimalist', 'kitchen', 'eating', 'surface', 'contemporary', 'gathering', 'walnut'],
285
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dining-table/thumbnail.png',
286
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dining-table/model.glb',
287
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dining-table/floor-plan.png',
288
+ dimensions: [2.16, 0.7, 0.95],
289
+ offset: [0, 0, -0.0077],
277
290
  rotation: [0, 0, 0],
278
- dimensions: [1, 0.2, 0.5],
291
+ scale: [1, 1, 1],
292
+ surface: { height: 0.7 },
279
293
  },
280
-
281
294
  {
282
- id: 'scooter',
283
- category: 'outdoor',
284
- tags: ['leisure', 'kids', 'floor'],
285
- name: 'Scooter',
286
- thumbnail: '/items/scooter/thumbnail.webp',
287
- src: '/items/scooter/model.glb',
288
- scale: [1, 1, 1],
289
- offset: [0.11, 0, 0.17],
295
+ id: 'guitar',
296
+ category: 'furniture',
297
+ name: 'Guitar',
298
+ tags: ['guitar', 'instrument', 'musical', 'wood', 'acoustic', 'vintage', 'classic', 'decor', 'mahogany', 'string', 'art', 'hobby'],
299
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/guitar/thumbnail.png',
300
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/guitar/model.glb',
301
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/guitar/floor-plan.png',
302
+ dimensions: [0.4, 1.18, 0.09],
303
+ offset: [-0.0009, 0.3197, -0.0129],
290
304
  rotation: [0, 0, 0],
291
- dimensions: [1, 0.9, 0.5],
305
+ scale: [1, 1, 1],
292
306
  },
293
-
294
307
  {
295
- id: 'basket-hoop',
296
- category: 'outdoor',
297
- tags: ['leisure', 'sports', 'floor'],
298
- name: 'Basket Hoop',
299
- thumbnail: '/items/basket-hoop/thumbnail.webp',
300
- src: '/items/basket-hoop/model.glb',
301
- scale: [1, 1, 1],
308
+ id: 'trash-bin',
309
+ category: 'furniture',
310
+ name: 'Trash Bin',
311
+ tags: ['floor'],
312
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/trash-bin/thumbnail.png',
313
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/trash-bin/model.glb',
314
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/trash-bin/floor-plan.png',
315
+ dimensions: [0.35, 0.59, 0.42],
302
316
  offset: [0, 0, 0],
303
317
  rotation: [0, 0, 0],
304
- dimensions: [1, 1.8, 1],
305
- },
306
-
307
- {
308
- id: 'ball',
309
- category: 'outdoor',
310
- tags: ['leisure', 'sports', 'floor'],
311
- name: 'Ball',
312
- thumbnail: '/items/ball/thumbnail.webp',
313
- src: '/items/ball/model.glb',
314
318
  scale: [1, 1, 1],
315
- offset: [0, 0.12, 0],
316
- rotation: [0, 0, 0],
317
- dimensions: [0.5, 0.3, 0.5],
318
319
  },
319
-
320
320
  {
321
- id: 'wine-bottle',
322
- category: 'kitchen',
323
- tags: ['countertop', 'decor'],
324
- name: 'Wine Bottle',
325
- thumbnail: '/items/wine-bottle/thumbnail.webp',
326
- src: '/items/wine-bottle/model.glb',
327
- scale: [1, 1, 1],
328
- offset: [-0.05, 0, 0.01],
321
+ id: 'recessed-light',
322
+ category: 'furniture',
323
+ name: 'Recessed Light',
324
+ tags: ['recessed', 'downlight', 'spotlight', 'lighting', 'fixture', 'modern', 'minimalist', 'metal', 'aluminum', 'luminaire', 'ambient', 'illumination', 'architectural', 'can'],
325
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/recessed-light/thumbnail.png',
326
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/recessed-light/model.glb',
327
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/recessed-light/floor-plan.png',
328
+ dimensions: [0.23, 0.06, 0.23],
329
+ offset: [0, 0.0057, 0],
329
330
  rotation: [0, 0, 0],
330
- dimensions: [0.5, 0.4, 0.5],
331
+ scale: [1, 1, 1],
332
+ attachTo: 'ceiling',
333
+ interactive: {
334
+ controls: [
335
+ { kind: 'toggle' },
336
+ { kind: 'slider', label: 'Intensity', min: 0, max: 100, unit: '%', displayMode: 'dial', default: 100 },
337
+ ],
338
+ effects: [
339
+ { kind: 'light', intensityRange: [0, 2], color: '#ffffff', offset: [0, -0.1, 0] },
340
+ ],
341
+ },
331
342
  },
332
-
333
343
  {
334
- id: 'fruits',
335
- category: 'kitchen',
336
- tags: ['countertop', 'decor'],
337
- name: 'Fruits',
338
- thumbnail: '/items/fruits/thumbnail.webp',
339
- src: '/items/fruits/model.glb',
340
- scale: [1, 1, 1],
341
- offset: [0, 0, 0],
344
+ id: 'shelf',
345
+ category: 'furniture',
346
+ name: 'Shelf',
347
+ tags: ['shelf', 'shelving', 'rack', 'ledge', 'storage', 'organization', 'display', 'bookshelf', 'modern', 'minimalist', 'furniture', 'decor', 'contemporary'],
348
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shelf/thumbnail.png',
349
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shelf/model.glb',
350
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shelf/floor-plan.png',
351
+ dimensions: [0.74, 0.04, 0.32],
352
+ offset: [0, 0.02, 0],
342
353
  rotation: [0, 0, 0],
343
- dimensions: [0.5, 0.3, 0.5],
354
+ scale: [1, 1, 1],
355
+ attachTo: 'wall-side',
356
+ surface: { height: 0.04 },
344
357
  },
345
-
346
358
  {
347
- id: 'cutting-board',
348
- category: 'kitchen',
349
- tags: ['countertop'],
350
- name: 'Cutting Board',
351
- thumbnail: '/items/cutting-board/thumbnail.webp',
352
- src: '/items/cutting-board/model.glb',
353
- scale: [1, 1, 1],
359
+ id: 'table-lamp',
360
+ category: 'furniture',
361
+ name: 'Table Lamp',
362
+ tags: ['countertop', 'lighting'],
363
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/table-lamp/thumbnail.png',
364
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/table-lamp/model.glb',
365
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/table-lamp/floor-plan.png',
366
+ dimensions: [0.29, 0.74, 0.67],
354
367
  offset: [0, 0, 0],
355
368
  rotation: [0, 0, 0],
356
- dimensions: [0.5, 0.1, 0.5],
369
+ scale: [1, 1, 1],
357
370
  },
358
-
359
371
  {
360
- id: 'frying-pan',
361
- category: 'kitchen',
362
- tags: ['countertop'],
363
- name: 'Frying Pan',
364
- thumbnail: '/items/frying-pan/thumbnail.webp',
365
- src: '/items/frying-pan/model.glb',
366
- scale: [1, 1, 1],
367
- offset: [0, 0, 0],
372
+ id: 'ceiling-lamp',
373
+ category: 'furniture',
374
+ name: 'Ceiling Lamp',
375
+ tags: ['lamp', 'light', 'chandelier', 'pendant', 'luminaire', 'fixture', 'lighting', 'modern', 'minimalist', 'glass', 'metal', 'indoor', 'illumination', 'interior'],
376
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ceiling-lamp/thumbnail.png',
377
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ceiling-lamp/model.glb',
378
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ceiling-lamp/floor-plan.png',
379
+ dimensions: [0.55, 0.86, 0.55],
380
+ offset: [0, 0.8545, 0],
368
381
  rotation: [0, 0, 0],
369
- dimensions: [0.5, 0.1, 1],
382
+ scale: [1, 1, 1],
383
+ attachTo: 'ceiling',
384
+ interactive: {
385
+ controls: [
386
+ { kind: 'toggle' },
387
+ { kind: 'slider', label: 'Intensity', min: 0, max: 100, unit: '%', displayMode: 'dial', default: 100 },
388
+ ],
389
+ effects: [
390
+ { kind: 'light', intensityRange: [0, 2], color: '#ffffff', offset: [0, -0.3, 0] },
391
+ ],
392
+ },
370
393
  },
371
-
372
394
  {
373
- id: 'kitchen-utensils',
374
- category: 'kitchen',
375
- tags: ['countertop'],
376
- name: 'Kitchen Utensils',
377
- thumbnail: '/items/kitchen-utensils/thumbnail.webp',
378
- src: '/items/kitchen-utensils/model.glb',
379
- scale: [1, 1, 1],
380
- offset: [0, 0, 0],
395
+ id: 'closet',
396
+ category: 'furniture',
397
+ name: 'Closet',
398
+ tags: ['closet', 'wardrobe', 'armoire', 'cabinet', 'storage', 'organization', 'wood', 'bedroom', 'modern', 'minimalist', 'clothing', 'apparel', 'cupboard', 'locker'],
399
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/closet/thumbnail.png',
400
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/closet/model.glb',
401
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/closet/floor-plan.png',
402
+ dimensions: [1.95, 2.26, 0.6],
403
+ offset: [0, 0, -0.0141],
381
404
  rotation: [0, 0, 0],
382
- dimensions: [0.5, 0.5, 0.5],
405
+ scale: [1, 1, 1],
383
406
  },
384
-
385
407
  {
386
- id: 'microwave',
387
- category: 'kitchen',
388
- tags: ['countertop', 'electronics'],
389
- name: 'Microwave',
390
- thumbnail: '/items/microwave/thumbnail.webp',
391
- src: '/items/microwave/model.glb',
392
- scale: [1, 1, 1],
393
- offset: [0, 0, -0.03],
408
+ id: 'coffee-table',
409
+ category: 'furniture',
410
+ name: 'Coffee Table',
411
+ tags: ['table', 'cocktail', 'wood', 'modern', 'minimalist', 'furniture', 'living', 'lounge', 'walnut', 'metal', 'glass', 'surface', 'decor'],
412
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/coffee-table/thumbnail.png',
413
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/coffee-table/model.glb',
414
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/coffee-table/floor-plan.png',
415
+ dimensions: [1.72, 0.3, 1.04],
416
+ offset: [0, 0, 0.0089],
394
417
  rotation: [0, 0, 0],
395
- dimensions: [1, 0.3, 0.5],
418
+ scale: [1, 1, 1],
419
+ surface: { height: 0.3 },
396
420
  },
397
-
398
421
  {
399
- id: 'stove',
400
- category: 'kitchen',
401
- tags: ['floor', 'large'],
402
- name: 'Stove',
403
- thumbnail: '/items/stove/thumbnail.webp',
404
- src: '/items/stove/model.glb',
405
- scale: [1, 1, 1],
406
- offset: [0, 0, -0.05],
422
+ id: 'dining-chair',
423
+ category: 'furniture',
424
+ name: 'Dining Chair',
425
+ tags: ['chair', 'seating', 'dining', 'furniture', 'modern', 'wood', 'upholstered', 'kitchen', 'seat', 'minimalist', 'timber', 'bistro'],
426
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dining-chair/thumbnail.png',
427
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dining-chair/model.glb',
428
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dining-chair/floor-plan.png',
429
+ dimensions: [0.47, 0.87, 0.5],
430
+ offset: [0, 0, 0.0016],
407
431
  rotation: [0, 0, 0],
408
- dimensions: [1, 1, 1],
432
+ scale: [1, 1, 1],
409
433
  },
410
-
411
434
  {
412
- id: 'fridge',
413
- category: 'kitchen',
414
- tags: ['floor', 'large'],
415
- name: 'Fridge',
416
- thumbnail: '/items/fridge/thumbnail.webp',
417
- src: '/items/fridge/model.glb',
418
- scale: [1, 1, 1],
419
- offset: [0.01, 0, -0.05],
435
+ id: 'dresser',
436
+ category: 'furniture',
437
+ name: 'Dresser',
438
+ tags: ['dresser', 'chest', 'bureau', 'storage', 'bedroom', 'drawers', 'wood', 'modern', 'organization', 'cabinet', 'rustic', 'minimalist'],
439
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dresser/thumbnail.png',
440
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dresser/model.glb',
441
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/dresser/floor-plan.png',
442
+ dimensions: [1.23, 0.73, 0.61],
443
+ offset: [0, 0, -0.0066],
420
444
  rotation: [0, 0, 0],
421
- dimensions: [1, 2, 1],
445
+ scale: [1, 1, 1],
446
+ surface: { height: 0.73 },
422
447
  },
423
-
424
448
  {
425
- id: 'hood',
426
- category: 'kitchen',
427
- tags: ['wall'],
428
- name: 'Hood',
429
- thumbnail: '/items/hood/thumbnail.webp',
430
- src: '/items/hood/model.glb',
431
- scale: [1, 1, 1],
432
- offset: [0, 0.52, 0.01],
449
+ id: 'ikea-kallax-1x4-moa2y49n',
450
+ category: 'furniture',
451
+ name: 'Ikea Kallax 2x4',
452
+ tags: ['shelf', 'bookcase', 'shelving', 'storage', 'organizer', 'cubby', 'cube', 'scandinavian', 'modern', 'minimalist', 'wood', 'laminate', 'display', 'modular'],
453
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ikea-kallax-1x4-moa2y49n/thumbnail.png',
454
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ikea-kallax-1x4-moa2y49n/models/item_model_ocVHS1SWDex5DeYc.glb',
455
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ikea-kallax-1x4-moa2y49n/floor-plan.png',
456
+ dimensions: [1.09, 2.06, 0.55],
457
+ offset: [0, -0.0053, 0],
433
458
  rotation: [0, 0, 0],
434
- dimensions: [1.5, 1, 1.1],
435
- attachTo: 'wall-side',
459
+ scale: [1.4, 1.4, 1.4],
436
460
  },
437
-
438
461
  {
439
- id: 'kitchen-shelf',
440
- category: 'kitchen',
441
- tags: ['wall', 'storage'],
442
- name: 'Kitchen Shelf',
443
- thumbnail: '/items/kitchen-shelf/thumbnail.webp',
444
- src: '/items/kitchen-shelf/model.glb',
445
- scale: [1, 1, 1],
446
- offset: [0, 0.52, 0.01],
462
+ id: 'indoor-plant',
463
+ category: 'furniture',
464
+ name: 'Indoor Plant',
465
+ tags: ['plant', 'greenery', 'botanical', 'foliage', 'houseplant', 'organic', 'natural', 'modern', 'minimalist', 'tropical', 'decor', 'accent', 'green', 'ceramic'],
466
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/indoor-plant/thumbnail.png',
467
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/indoor-plant/model.glb',
468
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/indoor-plant/floor-plan.png',
469
+ dimensions: [0.69, 1.63, 0.83],
470
+ offset: [-0.0506, 0, 0.0664],
447
471
  rotation: [0, 0, 0],
448
- dimensions: [2.5, 1, 1.1],
449
- attachTo: 'wall-side',
472
+ scale: [1, 1, 1],
450
473
  },
451
-
452
474
  {
453
- id: 'kitchen-counter',
454
- category: 'kitchen',
455
- tags: ['floor', 'large', 'storage'],
456
- name: 'Kitchen Counter',
457
- thumbnail: '/items/kitchen-counter/thumbnail.webp',
458
- src: '/items/kitchen-counter/model.glb',
459
- scale: [1, 1, 1],
475
+ id: 'ironing-board',
476
+ category: 'furniture',
477
+ name: 'Ironing Board',
478
+ tags: ['ironing', 'board', 'laundry', 'foldable', 'metal', 'utility', 'pressing', 'collapsible', 'stand', 'table', 'organization', 'industrial'],
479
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ironing-board/thumbnail.png',
480
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ironing-board/model.glb',
481
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ironing-board/floor-plan.png',
482
+ dimensions: [1.31, 0.96, 0.48],
460
483
  offset: [0, 0, 0],
461
484
  rotation: [0, 0, 0],
462
- dimensions: [2, 0.8, 1],
463
- surface: {
464
- height: 0.75,
465
- },
485
+ scale: [1, 1, 1],
466
486
  },
467
-
468
487
  {
469
- id: 'kitchen-cabinet',
470
- category: 'kitchen',
471
- tags: ['floor', 'large', 'storage'],
472
- name: 'Kitchen Cabinet',
473
- thumbnail: '/items/kitchen-cabinet/thumbnail.webp',
474
- src: '/items/kitchen-cabinet/model.glb',
488
+ id: 'double-bed',
489
+ category: 'furniture',
490
+ name: 'Double Bed',
491
+ tags: ['bed', 'bedstead', 'double', 'frame', 'bedroom', 'sleeping', 'modern', 'minimalist', 'upholstered', 'wood', 'sleep', 'furniture', 'contemporary'],
492
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/double-bed/thumbnail.png',
493
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/double-bed/model.glb',
494
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/double-bed/floor-plan.png',
495
+ dimensions: [1.52, 0.71, 2],
496
+ offset: [0.0042, 0, -0.0277],
497
+ rotation: [0, 0, 0],
475
498
  scale: [1, 1, 1],
476
- offset: [0, 0, 0],
499
+ },
500
+ {
501
+ id: 'floor-lamp',
502
+ category: 'furniture',
503
+ name: 'Floor Lamp',
504
+ tags: ['lamp', 'luminaire', 'light', 'torchere', 'lighting', 'illumination', 'metal', 'brass', 'modern', 'minimalist', 'industrial', 'decor', 'ambient', 'reading', 'sleek'],
505
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/floor-lamp/thumbnail.png',
506
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/floor-lamp/model.glb',
507
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/floor-lamp/floor-plan.png',
508
+ dimensions: [0.7, 1.86, 0.69],
509
+ offset: [0.0341, 0.0045, 0.0219],
477
510
  rotation: [0, 0, 0],
478
- dimensions: [2, 1.1, 1],
479
- surface: {
480
- height: 1.1,
511
+ scale: [1, 1, 1],
512
+ interactive: {
513
+ controls: [
514
+ { kind: 'toggle' },
515
+ { kind: 'slider', label: 'Intensity', min: 0, max: 100, unit: '%', displayMode: 'dial', default: 100 },
516
+ ],
517
+ effects: [
518
+ { kind: 'light', intensityRange: [0, 2], color: '#ffffff', offset: [0, 1.4, 0] },
519
+ ],
481
520
  },
482
521
  },
483
-
484
522
  {
485
- id: 'kitchen',
486
- category: 'kitchen',
487
- tags: ['floor', 'large'],
488
- name: 'Kitchen',
489
- thumbnail: '/items/kitchen/thumbnail.webp',
490
- src: '/items/kitchen/model.glb',
491
- scale: [1, 1, 1],
492
- offset: [0, 0, 0],
523
+ id: 'herman-miller-aeron-mo8x36k9',
524
+ category: 'furniture',
525
+ name: 'Herman Miller Aeron',
526
+ tags: ['office'],
527
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/herman-miller-aeron-mo8x36k9/thumbnail.png',
528
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/herman-miller-aeron-mo8x36k9/models/item_model_YshL4maC8cHtry5c.glb',
529
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/herman-miller-aeron-mo8x36k9/floor-plan.png',
530
+ dimensions: [0.67, 1.06, 0.66],
531
+ offset: [-0.0013, 0.5256, 0.0028],
493
532
  rotation: [0, 0, 0],
494
- dimensions: [2.5, 1.1, 1],
533
+ scale: [1.05, 1.05, 1.05],
495
534
  },
496
-
497
535
  {
498
- id: 'toilet-paper',
499
- category: 'bathroom',
500
- tags: ['wall', 'decor'],
501
- name: 'Toilet Paper',
502
- thumbnail: '/items/toilet-paper/thumbnail.webp',
503
- src: '/items/toilet-paper/model.glb',
504
- scale: [1, 1, 1],
505
- offset: [0, 0.19, 0.12],
536
+ id: 'easel',
537
+ category: 'furniture',
538
+ name: 'Easel',
539
+ tags: ['easel', 'stand', 'tripod', 'art', 'studio', 'wood', 'display', 'canvas', 'atelier', 'presentation', 'wooden', 'sketching', 'painting', 'decor'],
540
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/easel/thumbnail.png',
541
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/easel/model.glb',
542
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/easel/floor-plan.png',
543
+ dimensions: [0.99, 2.32, 0.55],
544
+ offset: [0, 0.0402, 0.0116],
506
545
  rotation: [0, 0, 0],
507
- dimensions: [0.5, 0.5, 0.5],
508
- attachTo: 'wall-side',
546
+ scale: [1, 1, 1],
509
547
  },
510
-
511
548
  {
512
- id: 'shower-rug',
513
- category: 'bathroom',
514
- tags: ['floor', 'decor'],
515
- name: 'Shower Rug',
516
- thumbnail: '/items/shower-rug/thumbnail.webp',
517
- src: '/items/shower-rug/model.glb',
518
- scale: [1, 1, 1],
519
- offset: [0, 0, 0],
549
+ id: 'lounge-chair',
550
+ category: 'furniture',
551
+ name: 'Lounge Chair',
552
+ tags: ['chair', 'armchair', 'seating', 'lounge', 'seat', 'modern', 'contemporary', 'minimalist', 'comfort', 'relaxation', 'upholstered', 'interior', 'furniture'],
553
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/lounge-chair/thumbnail.png',
554
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/lounge-chair/model.glb',
555
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/lounge-chair/floor-plan.png',
556
+ dimensions: [0.68, 1.03, 1.26],
557
+ offset: [0, 0.0034, 0.0894],
520
558
  rotation: [0, 0, 0],
521
- dimensions: [1, 0.1, 0.5],
559
+ scale: [1, 1, 1],
522
560
  },
523
-
524
561
  {
525
- id: 'laundry-bag',
526
- category: 'bathroom',
527
- tags: ['floor'],
528
- name: 'Laundry Bag',
529
- thumbnail: '/items/laundry-bag/thumbnail.webp',
530
- src: '/items/laundry-bag/model.glb',
531
- scale: [1, 1, 1],
532
- offset: [0, 0, 0],
562
+ id: 'office-chair',
563
+ category: 'furniture',
564
+ name: 'Office Chair',
565
+ tags: ['chair', 'seating', 'ergonomic', 'swivel', 'office', 'desk', 'mesh', 'leather', 'modern', 'task', 'workspace', 'professional', 'computer'],
566
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/office-chair/thumbnail.png',
567
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/office-chair/model.glb',
568
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/office-chair/floor-plan.png',
569
+ dimensions: [0.66, 1.16, 0.69],
570
+ offset: [0.0024, 0.0015, 0.0332],
533
571
  rotation: [0, 0, 0],
534
- dimensions: [0.5, 0.8, 0.5],
572
+ scale: [1, 1, 1],
535
573
  },
536
-
537
574
  {
538
- id: 'drying-rack',
539
- category: 'bathroom',
540
- tags: ['floor'],
541
- name: 'Drying Rack',
542
- thumbnail: '/items/drying-rack/thumbnail.webp',
543
- src: '/items/drying-rack/model.glb',
544
- scale: [1, 1, 1],
545
- offset: [0, 0, 0],
575
+ id: 'piano',
576
+ category: 'furniture',
577
+ name: 'Piano',
578
+ tags: ['piano', 'instrument', 'musical', 'grand', 'upright', 'keyboard', 'wood', 'polished', 'lacquer', 'ebony', 'classic', 'traditional', 'music', 'entertainment', 'luxury'],
579
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/piano/thumbnail.png',
580
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/piano/model.glb',
581
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/piano/floor-plan.png',
582
+ dimensions: [1.54, 1.44, 0.69],
583
+ offset: [0, 0, 0.0162],
546
584
  rotation: [0, 0, 0],
547
- dimensions: [2, 1.1, 1],
585
+ scale: [1, 1, 1],
548
586
  },
549
-
550
587
  {
551
- id: 'washing-machine',
552
- category: 'bathroom',
553
- tags: ['floor', 'large', 'electronics'],
554
- name: 'Washing Machine',
555
- thumbnail: '/items/washing-machine/thumbnail.webp',
556
- src: '/items/washing-machine/model.glb',
557
- scale: [1, 1, 1],
558
- offset: [0, 0, 0],
588
+ id: 'picture',
589
+ category: 'furniture',
590
+ name: 'Picture',
591
+ tags: ['picture', 'frame', 'art', 'artwork', 'print', 'canvas', 'decor', 'modern', 'abstract', 'minimalist', 'decorative', 'glass', 'wood', 'illustration', 'portrait'],
592
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/picture/thumbnail.png',
593
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/picture/model.glb',
594
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/picture/floor-plan.png',
595
+ dimensions: [1.47, 0.82, 0.06],
596
+ offset: [0, 0.41, 0],
559
597
  rotation: [0, 0, 0],
560
- dimensions: [1, 1, 1],
598
+ scale: [1, 1, 1],
599
+ attachTo: 'wall-side',
561
600
  },
562
-
563
601
  {
564
- id: 'toilet',
565
- category: 'bathroom',
566
- tags: ['floor', 'large'],
567
- name: 'Toilet',
568
- thumbnail: '/items/toilet/thumbnail.webp',
569
- src: '/items/toilet/model.glb',
570
- scale: [1, 1, 1],
571
- offset: [0, 0, -0.23],
602
+ id: 'rectangular-carpet',
603
+ category: 'furniture',
604
+ name: 'Rectangular Carpet',
605
+ tags: ['carpet', 'rug', 'mat', 'textile', 'woven', 'rectangular', 'modern', 'wool', 'cotton', 'minimalist', 'decor', 'plush'],
606
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/rectangular-carpet/thumbnail.png',
607
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/rectangular-carpet/model.glb',
608
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/rectangular-carpet/floor-plan.png',
609
+ dimensions: [2.78, 0.04, 1.81],
610
+ offset: [0, 0, 0],
572
611
  rotation: [0, 0, 0],
573
- dimensions: [1, 0.9, 1],
612
+ scale: [1, 1, 1],
613
+ surface: { height: 0.03 },
574
614
  },
575
-
576
615
  {
577
- id: 'shower-square',
578
- category: 'bathroom',
579
- tags: ['floor', 'large'],
580
- name: 'Squared Shower',
581
- thumbnail: '/items/shower-square/thumbnail.webp',
582
- src: '/items/shower-square/model.glb',
583
- scale: [1, 1, 1],
584
- offset: [0.41, 0, -0.42],
616
+ id: 'round-mirror',
617
+ category: 'furniture',
618
+ name: 'Rounded Mirror',
619
+ tags: ['mirror', 'glass', 'reflective', 'circular', 'oval', 'modern', 'minimalist', 'contemporary', 'scandinavian', 'vanity', 'decor', 'curved', 'reflection', 'grooming'],
620
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/round-mirror/thumbnail.png',
621
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/round-mirror/model.glb',
622
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/round-mirror/floor-plan.png',
623
+ dimensions: [0.57, 0.57, 0.05],
624
+ offset: [0, 0.2848, 0],
585
625
  rotation: [0, 0, 0],
586
- dimensions: [1, 2, 1],
626
+ scale: [1, 1, 1],
627
+ attachTo: 'wall-side',
587
628
  },
588
-
589
629
  {
590
- id: 'shower-angle',
591
- category: 'bathroom',
592
- tags: ['floor', 'large'],
593
- name: 'Angle Shower',
594
- thumbnail: '/items/shower-angle/thumbnail.webp',
595
- src: '/items/shower-angle/model.glb',
596
- scale: [1, 1, 1],
597
- offset: [0.41, 0, -0.42],
630
+ id: 'round-carpet',
631
+ category: 'furniture',
632
+ name: 'Round Carpet',
633
+ tags: ['carpet', 'rug', 'mat', 'circular', 'modern', 'minimalist', 'scandinavian', 'textile', 'woven', 'decor', 'accent', 'wool', 'fiber', 'interior'],
634
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/round-carpet/thumbnail.png',
635
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/round-carpet/model.glb',
636
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/round-carpet/floor-plan.png',
637
+ dimensions: [1.99, 0.05, 1.99],
638
+ offset: [0, 0, 0],
598
639
  rotation: [0, 0, 0],
599
- dimensions: [1, 2, 1],
640
+ scale: [1, 1, 1],
641
+ surface: { height: 0.04 },
600
642
  },
601
-
602
643
  {
603
- id: 'bathtub',
604
- category: 'bathroom',
605
- tags: ['floor', 'large'],
606
- name: 'Bathtub',
607
- thumbnail: '/items/bathtub/thumbnail.webp',
608
- src: '/items/bathtub/model.glb',
609
- scale: [1, 1, 1],
610
- offset: [0, 0, 0.01],
644
+ id: 'threadmill',
645
+ category: 'furniture',
646
+ name: 'Threadmill',
647
+ tags: ['floor', 'fitness'],
648
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/threadmill/thumbnail.png',
649
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/threadmill/model.glb',
650
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/threadmill/floor-plan.png',
651
+ dimensions: [2.1, 1.45, 0.9],
652
+ offset: [0, 0, 0],
611
653
  rotation: [0, 0, 0],
612
- dimensions: [2.5, 0.8, 1.5],
654
+ scale: [1, 1, 1],
613
655
  },
614
-
615
656
  {
616
- id: 'bathroom-sink',
617
- category: 'bathroom',
618
- tags: ['floor', 'large'],
619
- name: 'Bathroom Sink',
620
- thumbnail: '/items/bathroom-sink/thumbnail.webp',
621
- src: '/items/bathroom-sink/model.glb',
622
- scale: [1, 1, 1],
623
- offset: [0.11, 0, 0.02],
657
+ id: 'standing-desk-mo8wgz95',
658
+ category: 'furniture',
659
+ name: 'Standing Desk',
660
+ tags: ['office'],
661
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/standing-desk-mo8wgz95/thumbnail.png',
662
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/standing-desk-mo8wgz95/models/item_model_zzZ58018waP8VY6Z.glb',
663
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/standing-desk-mo8wgz95/floor-plan.png',
664
+ dimensions: [1.41, 0.85, 0.68],
665
+ offset: [0, 0.4203, 0.0019],
624
666
  rotation: [0, 0, 0],
625
- dimensions: [2, 1, 1.5],
667
+ scale: [1.4, 1.4, 1.4],
626
668
  },
627
-
628
669
  {
629
- id: 'ceiling-fan',
670
+ id: 'sprinkler',
630
671
  category: 'appliance',
631
- tags: ['ceiling', 'climate'],
632
- name: 'Ceiling fan',
633
- thumbnail: '/items/ceiling-fan/thumbnail.webp',
634
- src: '/items/ceiling-fan/model.glb',
672
+ name: 'Sprinkler',
673
+ tags: ['ceiling', 'safety'],
674
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sprinkler/thumbnail.png',
675
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sprinkler/model.glb',
676
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sprinkler/floor-plan.png',
677
+ dimensions: [0.09, 0.04, 0.09],
678
+ offset: [0, 0.0386, 0],
679
+ rotation: [3.1416, 0, 0],
635
680
  scale: [1, 1, 1],
636
- offset: [-0.12, 0.49, 0],
637
- rotation: [0, 0, 0],
638
- dimensions: [1, 0.5, 1.5],
639
681
  attachTo: 'ceiling',
640
- interactive: {
641
- effects: [
642
- {
643
- kind: 'animation',
644
- clips: {
645
- on: 'On',
646
- },
647
- },
648
- ],
649
- controls: [
650
- {
651
- kind: 'toggle',
652
- },
653
- ],
654
- },
655
682
  },
656
-
657
683
  {
658
- id: 'electric-panel',
684
+ id: 'exit-sign',
659
685
  category: 'appliance',
660
- tags: ['wall', 'electrical'],
661
- name: 'Electric Panel',
662
- thumbnail: '/items/electric-panel/thumbnail.webp',
663
- src: '/items/electric-panel/model.glb',
664
- scale: [0.61, 0.74, 0.7],
665
- offset: [0, 0, 0.06],
686
+ name: 'Exit Sign',
687
+ tags: ['sign', 'signage', 'exit', 'emergency', 'safety', 'wayfinding', 'directional', 'lighting', 'led', 'commercial', 'industrial', 'marker', 'egress', 'appliance'],
688
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/exit-sign/thumbnail.png',
689
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/exit-sign/model.glb',
690
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/exit-sign/floor-plan.png',
691
+ dimensions: [0.54, 0.27, 0.1],
692
+ offset: [0, 0.0036, 0.0452],
666
693
  rotation: [0, 0, 0],
667
- dimensions: [0.5, 1, 0.3],
694
+ scale: [0.6, 0.5, 0.7],
668
695
  attachTo: 'wall-side',
669
696
  },
670
-
671
697
  {
672
- id: 'sprinkler',
698
+ id: 'sewing-machine',
673
699
  category: 'appliance',
674
- tags: ['ceiling', 'safety'],
675
- name: 'Sprinkler',
676
- thumbnail: '/items/sprinkler/thumbnail.webp',
677
- src: '/items/sprinkler/model.glb',
678
- scale: [1, 1, 1],
679
- offset: [0, 0.45, 0],
700
+ name: 'Sewing Machine',
701
+ tags: ['sewing', 'machine', 'appliance', 'tailor', 'craft', 'hobby', 'textile', 'metal', 'plastic', 'vintage', 'modern', 'industrial', 'mending', 'stitching'],
702
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sewing-machine/thumbnail.png',
703
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sewing-machine/model.glb',
704
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sewing-machine/floor-plan.png',
705
+ dimensions: [0.83, 0.68, 0.32],
706
+ offset: [0, 0, 0],
680
707
  rotation: [0, 0, 0],
681
- dimensions: [0.5, 0.5, 0.5],
682
- attachTo: 'ceiling',
708
+ scale: [1, 1, 1],
683
709
  },
684
-
685
710
  {
686
- id: 'smoke-detector',
711
+ id: 'television',
687
712
  category: 'appliance',
688
- tags: ['ceiling', 'safety'],
689
- name: 'Smoke Detector',
690
- thumbnail: '/items/smoke-detector/thumbnail.webp',
691
- src: '/items/smoke-detector/model.glb',
713
+ name: 'Television',
714
+ tags: ['floor', 'electronics'],
715
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/television/thumbnail.png',
716
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/television/model.glb',
717
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/television/floor-plan.png',
718
+ dimensions: [1.62, 1.07, 0.38],
719
+ offset: [0, 0, 0],
720
+ rotation: [0, 0, 0],
692
721
  scale: [1, 1, 1],
693
- offset: [0, 0.49, 0],
694
- rotation: [Math.PI, 0, 0],
695
- dimensions: [0.5, 0.5, 0.5],
696
- attachTo: 'ceiling',
697
722
  },
698
-
699
723
  {
700
- id: 'fire-detector',
701
- category: 'appliance',
702
- tags: ['wall', 'safety'],
703
- name: 'Fire Detector',
704
- thumbnail: '/items/fire-detector/thumbnail.webp',
705
- src: '/items/fire-detector/model.glb',
706
- scale: [0.9, 1.4, 0.7],
707
- offset: [0.02, 0.05, 0],
708
- rotation: [0, 0, 0],
709
- dimensions: [0.5, 0.5, 0.3],
710
- attachTo: 'wall',
711
- },
712
-
713
- {
714
- id: 'exit-sign',
724
+ id: 'power-outlet-moa09g0o',
715
725
  category: 'appliance',
716
- tags: ['wall', 'safety'],
717
- name: 'Exit Sign',
718
- thumbnail: '/items/exit-sign/thumbnail.webp',
719
- src: '/items/exit-sign/model.glb',
720
- scale: [0.6, 0.5, 0.7],
721
- offset: [0, 0.04, 0.05],
722
- rotation: [0, 0, 0],
723
- dimensions: [1, 0.5, 0.3],
726
+ name: 'Power Outlet',
727
+ tags: ['electric'],
728
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/power-outlet-moa09g0o/thumbnail.png',
729
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/power-outlet-moa09g0o/models/item_model_PTDhACPTrrrtLLeI.glb',
730
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/power-outlet-moa09g0o/floor-plan.png',
731
+ dimensions: [0.09, 0.09, 0.03],
732
+ offset: [0, 0.045, 0.0117],
733
+ rotation: [0, 0, 0],
734
+ scale: [0.09, 0.09, 0.09],
724
735
  attachTo: 'wall-side',
725
736
  },
726
-
727
737
  {
728
- id: 'hydrant',
738
+ id: 'ac-block',
729
739
  category: 'appliance',
730
- tags: ['floor', 'safety'],
731
- name: 'Hydrant',
732
- thumbnail: '/items/hydrant/thumbnail.webp',
733
- src: '/items/hydrant/model.glb',
734
- scale: [1, 1, 1],
740
+ name: 'AC block',
741
+ tags: ['conditioner', 'cooler', 'hvac', 'cooling', 'appliance', 'vent', 'modern', 'minimalist', 'metal', 'industrial', 'white', 'utility', 'ventilation', 'unit', 'climate'],
742
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ac-block/thumbnail.png',
743
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ac-block/model.glb',
744
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ac-block/floor-plan.png',
745
+ dimensions: [1.06, 0.95, 1.06],
735
746
  offset: [0, 0, 0],
736
747
  rotation: [0, 0, 0],
737
- dimensions: [1, 0.9, 1],
748
+ scale: [0.79, 0.79, 0.79],
738
749
  },
739
-
740
750
  {
741
- id: 'alarm-keypad',
751
+ id: 'stereo-speaker',
742
752
  category: 'appliance',
743
- tags: ['wall', 'safety', 'electrical'],
744
- name: 'Alarm Keypad',
745
- thumbnail: '/items/alarm-keypad/thumbnail.webp',
746
- src: '/items/alarm-keypad/model.glb',
747
- scale: [1, 1, 1],
748
- offset: [0, 0, 0],
753
+ name: 'Stereo Speaker',
754
+ tags: ['floor', 'electronics'],
755
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/stereo-speaker/thumbnail.png',
756
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/stereo-speaker/model.glb',
757
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/stereo-speaker/floor-plan.png',
758
+ dimensions: [0.23, 1, 0.34],
759
+ offset: [0, 0, -0.0129],
749
760
  rotation: [0, 0, 0],
750
- dimensions: [0.5, 0.1, 0.5],
761
+ scale: [1, 1, 1],
751
762
  },
752
-
753
763
  {
754
764
  id: 'thermostat',
755
765
  category: 'appliance',
756
- tags: ['wall', 'climate', 'electrical'],
757
766
  name: 'Thermostat',
758
- thumbnail: '/items/thermostat/thumbnail.webp',
759
- src: '/items/thermostat/model.glb',
760
- scale: [2.08, 2.1, 2.59],
761
- offset: [0, 0, 0.01],
767
+ tags: ['wall', 'climate', 'electrical'],
768
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/thermostat/thumbnail.png',
769
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/thermostat/model.glb',
770
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/thermostat/floor-plan.png',
771
+ dimensions: [0.1, 0.1, 0.01],
772
+ offset: [0, 0.0013, 0.0022],
762
773
  rotation: [0, 0, 0],
763
- dimensions: [0.5, 0.5, 0.1],
774
+ scale: [2.08, 2.1, 2.59],
764
775
  attachTo: 'wall-side',
765
776
  },
766
-
767
777
  {
768
- id: 'air-conditioning',
778
+ id: 'toaster',
769
779
  category: 'appliance',
770
- tags: ['wall', 'climate'],
771
- name: 'Air Conditioning',
772
- thumbnail: '/items/air-conditioning/thumbnail.webp',
773
- src: '/items/air-conditioning/model.glb',
774
- scale: [1, 1, 1],
775
- offset: [0, 0.37, 0.21],
780
+ name: 'Toaster',
781
+ tags: ['countertop', 'electronics'],
782
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toaster/thumbnail.png',
783
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toaster/model.glb',
784
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toaster/floor-plan.png',
785
+ dimensions: [0.28, 0.23, 0.17],
786
+ offset: [-0.0057, 0, 0],
776
787
  rotation: [0, 0, 0],
777
- dimensions: [2, 1, 0.9],
778
- attachTo: 'wall-side',
788
+ scale: [1, 1, 1],
779
789
  },
780
-
781
790
  {
782
- id: 'ac-block',
791
+ id: 'kettle',
783
792
  category: 'appliance',
784
- tags: ['floor', 'climate'],
785
- name: 'AC block',
786
- thumbnail: '/items/ac-block/thumbnail.webp',
787
- src: '/items/ac-block/model.glb',
788
- scale: [0.79, 0.79, 0.79],
789
- offset: [0, 0, 0],
793
+ name: 'Kettle',
794
+ tags: ['kettle', 'teapot', 'boiler', 'electric', 'kitchen', 'appliance', 'metal', 'steel', 'modern', 'tea', 'coffee', 'boiling', 'beverage', 'breakfast'],
795
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kettle/thumbnail.png',
796
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kettle/model.glb',
797
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kettle/floor-plan.png',
798
+ dimensions: [0.24, 0.25, 0.18],
799
+ offset: [-0.026, 0, 0],
790
800
  rotation: [0, 0, 0],
791
- dimensions: [1.1, 1, 1.1],
801
+ scale: [1, 1, 1],
792
802
  },
793
-
794
803
  {
795
- id: 'toaster',
804
+ id: 'hydrant',
796
805
  category: 'appliance',
797
- tags: ['countertop', 'electronics'],
798
- name: 'Toaster',
799
- thumbnail: '/items/toaster/thumbnail.webp',
800
- src: '/items/toaster/model.glb',
806
+ name: 'Hydrant',
807
+ tags: ['hydrant', 'faucet', 'spigot', 'valve', 'metal', 'iron', 'industrial', 'vintage', 'retro', 'plumbing', 'water', 'utility', 'outdoor', 'garden', 'red'],
808
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/hydrant/thumbnail.png',
809
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/hydrant/model.glb',
810
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/hydrant/floor-plan.png',
811
+ dimensions: [0.64, 0.88, 0.64],
812
+ offset: [-0.0046, 0, -0.0008],
813
+ rotation: [0, 0, 0],
801
814
  scale: [1, 1, 1],
802
- offset: [0, 0, 0],
815
+ },
816
+ {
817
+ id: 'fire-detector',
818
+ category: 'appliance',
819
+ name: 'Fire Detector',
820
+ tags: ['detector', 'alarm', 'sensor', 'smoke', 'alert', 'safety', 'security', 'protection', 'appliance', 'white', 'plastic', 'minimalist', 'modern', 'warning', 'electronic'],
821
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fire-detector/thumbnail.png',
822
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fire-detector/model.glb',
823
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fire-detector/floor-plan.png',
824
+ dimensions: [0.12, 0.19, 0.07],
825
+ offset: [0.0281, 0.012, 0.0015],
803
826
  rotation: [0, 0, 0],
804
- dimensions: [0.5, 0.3, 0.5],
827
+ scale: [0.9, 1.4, 0.7],
828
+ attachTo: 'wall',
805
829
  },
806
-
807
830
  {
808
- id: 'sewing-machine',
831
+ id: 'smoke-detector',
809
832
  category: 'appliance',
810
- tags: ['countertop', 'electronics'],
811
- name: 'Sewing Machine',
812
- thumbnail: '/items/sewing-machine/thumbnail.webp',
813
- src: '/items/sewing-machine/model.glb',
833
+ name: 'Smoke Detector',
834
+ tags: ['ceiling', 'safety'],
835
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/smoke-detector/thumbnail.png',
836
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/smoke-detector/model.glb',
837
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/smoke-detector/floor-plan.png',
838
+ dimensions: [0.16, 0.05, 0.16],
839
+ offset: [0, 0.0492, 0],
840
+ rotation: [3.1416, 0, 0],
814
841
  scale: [1, 1, 1],
815
- offset: [0, 0, 0],
816
- rotation: [0, 0, 0],
817
- dimensions: [1, 0.7, 0.5],
842
+ attachTo: 'ceiling',
818
843
  },
819
-
820
844
  {
821
- id: 'kettle',
845
+ id: 'coffee-machine',
822
846
  category: 'appliance',
823
- tags: ['countertop', 'electronics'],
824
- name: 'Kettle',
825
- thumbnail: '/items/kettle/thumbnail.webp',
826
- src: '/items/kettle/model.glb',
847
+ name: 'Coffee Machine',
848
+ tags: ['coffee', 'machine', 'maker', 'espresso', 'brewer', 'kitchen', 'appliance', 'modern', 'metal', 'sleek', 'black', 'silver', 'beverage', 'brewing'],
849
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/coffee-machine/thumbnail.png',
850
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/coffee-machine/model.glb',
851
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/coffee-machine/floor-plan.png',
852
+ dimensions: [0.16, 0.24, 0.23],
853
+ offset: [0.0003, 0.0003, -0.0366],
854
+ rotation: [0, 0, 0],
827
855
  scale: [1, 1, 1],
828
- offset: [0, 0, 0],
856
+ },
857
+ {
858
+ id: 'ceiling-fan',
859
+ category: 'appliance',
860
+ name: 'Ceiling fan',
861
+ tags: ['fan', 'ventilator', 'cooling', 'airflow', 'blades', 'modern', 'industrial', 'metal', 'wood', 'appliance', 'ventilation', 'breeze', 'climate', 'circulation'],
862
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ceiling-fan/thumbnail.png',
863
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ceiling-fan/model.glb',
864
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ceiling-fan/floor-plan.png',
865
+ dimensions: [0.92, 0.35, 1.04],
866
+ offset: [-0.1371, 0.3448, 0],
829
867
  rotation: [0, 0, 0],
830
- dimensions: [0.5, 0.3, 0.5],
868
+ scale: [1, 1, 1],
869
+ attachTo: 'ceiling',
870
+ interactive: {
871
+ controls: [
872
+ { kind: 'toggle' },
873
+ ],
874
+ effects: [
875
+ { kind: 'animation', clips: {"on":"On"} },
876
+ ],
877
+ },
831
878
  },
832
-
833
879
  {
834
880
  id: 'iron',
835
881
  category: 'appliance',
836
- tags: ['countertop', 'electronics'],
837
882
  name: 'Iron',
838
- thumbnail: '/items/iron/thumbnail.webp',
839
- src: '/items/iron/model.glb',
840
- scale: [1, 1, 1],
841
- offset: [0, 0, 0],
883
+ tags: ['iron', 'steamer', 'laundry', 'clothing', 'modern', 'metal', 'plastic', 'ceramic', 'garment', 'pressing', 'household', 'utility', 'appliance', 'sleek'],
884
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/iron/thumbnail.png',
885
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/iron/model.glb',
886
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/iron/floor-plan.png',
887
+ dimensions: [0.36, 0.24, 0.21],
888
+ offset: [0.026, 0, 0],
842
889
  rotation: [0, 0, 0],
843
- dimensions: [0.5, 0.3, 0.5],
890
+ scale: [1, 1, 1],
844
891
  },
845
-
846
892
  {
847
- id: 'coffee-machine',
893
+ id: 'air-conditioning',
848
894
  category: 'appliance',
849
- tags: ['countertop', 'electronics'],
850
- name: 'Coffee Machine',
851
- thumbnail: '/items/coffee-machine/thumbnail.webp',
852
- src: '/items/coffee-machine/model.glb',
853
- scale: [1, 1, 1],
854
- offset: [0, 0, -0.03],
895
+ name: 'Air Conditioning',
896
+ tags: ['conditioner', 'cooling', 'hvac', 'appliance', 'electronic', 'modern', 'minimalist', 'white', 'climate', 'temperature', 'ventilation', 'airflow', 'comfort', 'sleek'],
897
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/air-conditioning/thumbnail.png',
898
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/air-conditioning/model.glb',
899
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/air-conditioning/floor-plan.png',
900
+ dimensions: [1.56, 0.6, 0.41],
901
+ offset: [0, 0.3, 0.2018],
855
902
  rotation: [0, 0, 0],
856
- dimensions: [0.5, 0.3, 0.5],
903
+ scale: [1, 1, 1],
904
+ attachTo: 'wall-side',
857
905
  },
858
-
859
906
  {
860
- id: 'television',
907
+ id: 'computer',
861
908
  category: 'appliance',
862
- tags: ['floor', 'electronics'],
863
- name: 'Television',
864
- thumbnail: '/items/television/thumbnail.webp',
865
- src: '/items/television/model.glb',
866
- scale: [1, 1, 1],
909
+ name: 'Computer',
910
+ tags: ['computer', 'desktop', 'workstation', 'monitor', 'technology', 'office', 'electronics', 'modern', 'sleek', 'metal', 'silver', 'minimalist', 'hardware', 'productivity'],
911
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/computer/thumbnail.png',
912
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/computer/model.glb',
913
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/computer/floor-plan.png',
914
+ dimensions: [0.68, 0.48, 0.19],
867
915
  offset: [0, 0, 0],
868
916
  rotation: [0, 0, 0],
869
- dimensions: [2, 1.1, 0.5],
917
+ scale: [1, 1, 1],
870
918
  },
871
-
872
919
  {
873
- id: 'computer',
920
+ id: 'alarm-keypad',
874
921
  category: 'appliance',
875
- tags: ['countertop', 'electronics'],
876
- name: 'Computer',
877
- thumbnail: '/items/computer/thumbnail.webp',
878
- src: '/items/computer/model.glb',
922
+ name: 'Alarm Keypad',
923
+ tags: ['alarm', 'keypad', 'panel', 'security', 'interface', 'controller', 'modern', 'minimalist', 'digital', 'plastic', 'white', 'electronic', 'safety', 'automation', 'smart'],
924
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/alarm-keypad/thumbnail.png',
925
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/alarm-keypad/model.glb',
926
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/alarm-keypad/floor-plan.png',
927
+ dimensions: [0.18, 0.13, 0.03],
928
+ offset: [0, 0.0671, -0.0002],
929
+ rotation: [1.5708, 0, 0],
879
930
  scale: [1, 1, 1],
880
- offset: [0.01, 0, 0],
881
- rotation: [0, 0, 0],
882
- dimensions: [1, 0.5, 0.5],
931
+ attachTo: 'wall-side',
883
932
  },
884
-
885
933
  {
886
- id: 'stereo-speaker',
934
+ id: 'ev-wall-charger',
887
935
  category: 'appliance',
888
- tags: ['floor', 'electronics'],
889
- name: 'Stereo Speaker',
890
- thumbnail: '/items/stereo-speaker/thumbnail.webp',
891
- src: '/items/stereo-speaker/model.glb',
892
- scale: [1, 1, 1],
893
- offset: [0.02, 0, -0.01],
936
+ name: 'Ev-wall-charger',
937
+ tags: ['charger', 'station', 'electric', 'vehicle', 'automotive', 'garage', 'modern', 'minimalist', 'power', 'energy', 'appliance', 'tech', 'sleek', 'plastic', 'black'],
938
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ev-wall-charger/thumbnail.png',
939
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ev-wall-charger/model.glb',
940
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ev-wall-charger/floor-plan.png',
941
+ dimensions: [0.29, 0.65, 0.17],
942
+ offset: [-0.0677, 0.2979, 0.1503],
894
943
  rotation: [0, 0, 0],
895
- dimensions: [0.5, 1.1, 0.5],
944
+ scale: [1, 1, 1],
945
+ attachTo: 'wall',
896
946
  },
897
-
898
947
  {
899
- id: 'threadmill',
900
- category: 'furniture',
901
- tags: ['floor', 'fitness'],
902
- name: 'Threadmill',
903
- thumbnail: '/items/threadmill/thumbnail.webp',
904
- src: '/items/threadmill/model.glb',
905
- scale: [1, 1, 1],
906
- offset: [0, 0, 0],
948
+ id: 'electric-panel',
949
+ category: 'appliance',
950
+ name: 'Electric Panel',
951
+ tags: ['breaker', 'box', 'fusebox', 'electrical', 'utility', 'industrial', 'metal', 'steel', 'power', 'circuit', 'technical', 'maintenance', 'energy', 'appliance'],
952
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/electric-panel/thumbnail.png',
953
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/electric-panel/model.glb',
954
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/electric-panel/floor-plan.png',
955
+ dimensions: [0.4, 0.98, 0.11],
956
+ offset: [0, 0.0036, 0.0611],
907
957
  rotation: [0, 0, 0],
908
- dimensions: [2.5, 1.5, 1],
958
+ scale: [0.61, 0.74, 0.7],
959
+ attachTo: 'wall-side',
909
960
  },
910
-
911
961
  {
912
- id: 'barbell-stand',
913
- category: 'furniture',
914
- tags: ['floor', 'fitness'],
915
- name: 'Barbell Stand',
916
- thumbnail: '/items/barbell-stand/thumbnail.webp',
917
- src: '/items/barbell-stand/model.glb',
918
- scale: [1, 1, 1],
919
- offset: [0, 0, 0],
962
+ id: 'bathroom-sink',
963
+ category: 'bathroom',
964
+ name: 'Bathroom Sink',
965
+ tags: ['sink', 'basin', 'lavatory', 'washbasin', 'vanity', 'modern', 'minimalist', 'ceramic', 'porcelain', 'white', 'plumbing', 'washing', 'bathroom', 'hygiene'],
966
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bathroom-sink/thumbnail.png',
967
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bathroom-sink/model.glb',
968
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bathroom-sink/floor-plan.png',
969
+ dimensions: [1.83, 0.97, 0.63],
970
+ offset: [0.1037, 0, 0.0221],
920
971
  rotation: [0, 0, 0],
921
- dimensions: [1.5, 1.3, 2],
972
+ scale: [1, 1, 1],
922
973
  },
923
-
924
974
  {
925
- id: 'barbell',
926
- category: 'furniture',
927
- tags: ['floor', 'fitness'],
928
- name: 'Barbell',
929
- thumbnail: '/items/barbell/thumbnail.webp',
930
- src: '/items/barbell/model.glb',
931
- scale: [1, 1, 1],
932
- offset: [0, 0, 0],
975
+ id: 'shower-angle',
976
+ category: 'bathroom',
977
+ name: 'Angle Shower',
978
+ tags: ['shower', 'enclosure', 'cubicle', 'modern', 'glass', 'corner', 'bathroom', 'chrome', 'minimalist', 'washing', 'hygiene', 'plumbing', 'stall', 'sleek'],
979
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shower-angle/thumbnail.png',
980
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shower-angle/model.glb',
981
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shower-angle/floor-plan.png',
982
+ dimensions: [0.83, 1.81, 0.83],
983
+ offset: [0.4102, 0, -0.4102],
933
984
  rotation: [0, 0, 0],
934
- dimensions: [0.5, 0.4, 2],
985
+ scale: [1, 1, 1],
935
986
  },
936
-
937
987
  {
938
- id: 'toy',
939
- category: 'furniture',
940
- tags: ['floor', 'kids', 'decor'],
941
- name: 'Toy',
942
- thumbnail: '/items/toy/thumbnail.webp',
943
- src: '/items/toy/model.glb',
944
- scale: [1, 1, 1],
945
- offset: [0, 0, 0],
988
+ id: 'toilet-paper',
989
+ category: 'bathroom',
990
+ name: 'Toilet Paper',
991
+ tags: ['wall', 'decor'],
992
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toilet-paper/thumbnail.png',
993
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toilet-paper/model.glb',
994
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toilet-paper/floor-plan.png',
995
+ dimensions: [0.26, 0.27, 0.24],
996
+ offset: [0, 0.145, 0.1147],
946
997
  rotation: [0, 0, 0],
947
- dimensions: [0.5, 0.5, 0.5],
998
+ scale: [1, 1, 1],
999
+ attachTo: 'wall-side',
948
1000
  },
949
-
950
1001
  {
951
- id: 'car-toy',
952
- category: 'furniture',
953
- tags: ['floor', 'kids', 'decor'],
954
- name: 'Car Toy',
955
- thumbnail: '/items/car-toy/thumbnail.webp',
956
- src: '/items/car-toy/model.glb',
957
- scale: [1, 1, 1],
958
- offset: [0, 0, 0],
1002
+ id: 'washing-machine',
1003
+ category: 'bathroom',
1004
+ name: 'Washing Machine',
1005
+ tags: ['floor', 'large', 'electronics'],
1006
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/washing-machine/thumbnail.png',
1007
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/washing-machine/model.glb',
1008
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/washing-machine/floor-plan.png',
1009
+ dimensions: [0.6, 0.86, 0.53],
1010
+ offset: [0, 0, -0.0114],
959
1011
  rotation: [0, 0, 0],
960
- dimensions: [0.5, 0.4, 1],
1012
+ scale: [1, 1, 1],
961
1013
  },
962
-
963
1014
  {
964
- id: 'easel',
965
- category: 'furniture',
966
- tags: ['floor', 'decor'],
967
- name: 'Easel',
968
- thumbnail: '/items/easel/thumbnail.webp',
969
- src: '/items/easel/model.glb',
970
- scale: [1, 1, 1],
1015
+ id: 'shower-rug',
1016
+ category: 'bathroom',
1017
+ name: 'Shower Rug',
1018
+ tags: ['rug', 'mat', 'bathmat', 'absorbent', 'cotton', 'chenille', 'modern', 'soft', 'minimalist', 'spa', 'bathroom', 'hygiene', 'plush', 'microfiber', 'woven'],
1019
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shower-rug/thumbnail.png',
1020
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shower-rug/model.glb',
1021
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shower-rug/floor-plan.png',
1022
+ dimensions: [0.77, 0.03, 0.48],
971
1023
  offset: [0, 0, 0],
972
1024
  rotation: [0, 0, 0],
973
- dimensions: [1.5, 2.3, 1],
1025
+ scale: [1, 1, 1],
1026
+ surface: { height: 0.03 },
974
1027
  },
975
-
976
1028
  {
977
- id: 'pool-table',
978
- category: 'furniture',
979
- tags: ['floor', 'leisure'],
980
- name: 'Pool table',
981
- thumbnail: '/items/pool-table/thumbnail.webp',
982
- src: '/items/pool-table/model.glb',
983
- scale: [1, 1, 1],
1029
+ id: 'bathtub',
1030
+ category: 'bathroom',
1031
+ name: 'Bathtub',
1032
+ tags: ['bathtub', 'tub', 'bath', 'soaking', 'modern', 'minimalist', 'porcelain', 'acrylic', 'ceramic', 'bathroom', 'relaxation', 'spa'],
1033
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bathtub/thumbnail.png',
1034
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bathtub/model.glb',
1035
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bathtub/floor-plan.png',
1036
+ dimensions: [2.34, 0.79, 1.11],
984
1037
  offset: [0, 0, 0],
985
1038
  rotation: [0, 0, 0],
986
- dimensions: [2.5, 1, 4],
1039
+ scale: [1, 1, 1],
987
1040
  },
988
-
989
1041
  {
990
- id: 'guitar',
991
- category: 'furniture',
992
- tags: ['floor', 'decor'],
993
- name: 'Guitar',
994
- thumbnail: '/items/guitar/thumbnail.webp',
995
- src: '/items/guitar/model.glb',
996
- scale: [1, 1, 1],
997
- offset: [0, 0.32, 0],
1042
+ id: 'laundry-bag',
1043
+ category: 'bathroom',
1044
+ name: 'Laundry Bag',
1045
+ tags: ['laundry', 'bag', 'hamper', 'basket', 'canvas', 'fabric', 'storage', 'organization', 'modern', 'minimalist', 'utility', 'cleaning', 'linen'],
1046
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/laundry-bag/thumbnail.png',
1047
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/laundry-bag/model.glb',
1048
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/laundry-bag/floor-plan.png',
1049
+ dimensions: [0.46, 0.78, 0.48],
1050
+ offset: [0, 0, -0.0006],
998
1051
  rotation: [0, 0, 0],
999
- dimensions: [0.5, 1.2, 0.5],
1052
+ scale: [1, 1, 1],
1000
1053
  },
1001
-
1002
1054
  {
1003
- id: 'piano',
1004
- category: 'furniture',
1005
- tags: ['floor', 'decor'],
1006
- name: 'Piano',
1007
- thumbnail: '/items/piano/thumbnail.webp',
1008
- src: '/items/piano/model.glb',
1009
- scale: [1, 1, 1],
1010
- offset: [0, 0, 0],
1055
+ id: 'shower-square',
1056
+ category: 'bathroom',
1057
+ name: 'Squared Shower',
1058
+ tags: ['floor', 'large'],
1059
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shower-square/thumbnail.png',
1060
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shower-square/model.glb',
1061
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/shower-square/floor-plan.png',
1062
+ dimensions: [0.81, 1.8, 0.81],
1063
+ offset: [0.4, 0, -0.3995],
1011
1064
  rotation: [0, 0, 0],
1012
- dimensions: [2, 1.5, 1],
1065
+ scale: [1, 1, 1],
1013
1066
  },
1014
-
1015
1067
  {
1016
- id: 'round-carpet',
1017
- category: 'furniture',
1018
- tags: ['floor', 'decor'],
1019
- name: 'Round Carpet',
1020
- thumbnail: '/items/round-carpet/thumbnail.webp',
1021
- src: '/items/round-carpet/model.glb',
1022
- scale: [1, 1, 1],
1023
- offset: [0, 0, 0],
1068
+ id: 'drying-rack',
1069
+ category: 'bathroom',
1070
+ name: 'Drying Rack',
1071
+ tags: ['dryer', 'rack', 'airer', 'laundry', 'hanging', 'organizer', 'metal', 'steel', 'modern', 'minimalist', 'storage', 'bathroom'],
1072
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/drying-rack/thumbnail.png',
1073
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/drying-rack/model.glb',
1074
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/drying-rack/floor-plan.png',
1075
+ dimensions: [1.79, 1.05, 0.58],
1076
+ offset: [0, -0.0058, 0],
1024
1077
  rotation: [0, 0, 0],
1025
- dimensions: [2.5, 0.1, 2.5],
1078
+ scale: [1, 1, 1],
1026
1079
  },
1027
-
1028
1080
  {
1029
- id: 'rectangular-carpet',
1030
- category: 'furniture',
1031
- tags: ['floor', 'decor'],
1032
- name: 'Rectangular Carpet',
1033
- thumbnail: '/items/rectangular-carpet/thumbnail.webp',
1034
- src: '/items/rectangular-carpet/model.glb',
1035
- scale: [1, 1, 1],
1036
- offset: [0, 0, 0],
1081
+ id: 'toilet',
1082
+ category: 'bathroom',
1083
+ name: 'Toilet',
1084
+ tags: ['floor', 'large'],
1085
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toilet/thumbnail.png',
1086
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toilet/model.glb',
1087
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/toilet/floor-plan.png',
1088
+ dimensions: [0.42, 0.82, 0.72],
1089
+ offset: [0, 0, -0.2393],
1037
1090
  rotation: [0, 0, 0],
1038
- dimensions: [3, 0.1, 2],
1091
+ scale: [1, 1, 1],
1039
1092
  },
1040
-
1041
1093
  {
1042
- id: 'cactus',
1043
- category: 'furniture',
1044
- tags: ['floor', 'decor', 'vegetation'],
1045
- name: 'Cactus',
1046
- thumbnail: '/items/cactus/thumbnail.webp',
1047
- src: '/items/cactus/model.glb',
1094
+ id: 'microwave',
1095
+ category: 'kitchen',
1096
+ name: 'Microwave',
1097
+ tags: ['microwave', 'oven', 'appliance', 'kitchen', 'cooking', 'heating', 'metal', 'steel', 'modern', 'sleek', 'black', 'silver', 'electronics', 'glass', 'contemporary'],
1098
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/microwave/thumbnail.png',
1099
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/microwave/model.glb',
1100
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/microwave/floor-plan.png',
1101
+ dimensions: [0.52, 0.27, 0.41],
1102
+ offset: [0, 0, -0.0225],
1103
+ rotation: [0, 0, 0],
1048
1104
  scale: [1, 1, 1],
1105
+ },
1106
+ {
1107
+ id: 'cutting-board',
1108
+ category: 'kitchen',
1109
+ name: 'Cutting Board',
1110
+ tags: ['board', 'wood', 'kitchen', 'prep', 'chopping', 'serving', 'block', 'rustic', 'culinary', 'timber', 'natural', 'chef', 'cooking'],
1111
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/cutting-board/thumbnail.png',
1112
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/cutting-board/model.glb',
1113
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/cutting-board/floor-plan.png',
1114
+ dimensions: [0.27, 0.07, 0.41],
1049
1115
  offset: [0, 0, 0],
1050
1116
  rotation: [0, 0, 0],
1051
- dimensions: [0.5, 0.4, 0.5],
1117
+ scale: [1, 1, 1],
1052
1118
  },
1053
-
1054
1119
  {
1055
- id: 'small-indoor-plant',
1056
- category: 'furniture',
1057
- tags: ['countertop', 'decor', 'vegetation'],
1058
- name: 'Small Plant',
1059
- thumbnail: '/items/small-indoor-plant/thumbnail.webp',
1060
- src: '/items/small-indoor-plant/model.glb',
1120
+ id: 'kitchen-utensils',
1121
+ category: 'kitchen',
1122
+ name: 'Kitchen Utensils',
1123
+ tags: ['utensils', 'tools', 'kitchenware', 'cooking', 'prep', 'steel', 'silicone', 'wood', 'modern', 'gadgets', 'accessories', 'silverware', 'chef', 'serving', 'baking'],
1124
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-utensils/thumbnail.png',
1125
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-utensils/model.glb',
1126
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-utensils/floor-plan.png',
1127
+ dimensions: [0.23, 0.49, 0.21],
1128
+ offset: [0.0184, 0, 0.0165],
1129
+ rotation: [0, 0, 0],
1061
1130
  scale: [1, 1, 1],
1062
- offset: [-0.01, 0, 0.01],
1131
+ },
1132
+ {
1133
+ id: 'kitchen-counter',
1134
+ category: 'kitchen',
1135
+ name: 'Kitchen Counter',
1136
+ tags: ['counter', 'countertop', 'island', 'surface', 'workspace', 'stone', 'granite', 'marble', 'modern', 'kitchen', 'cooking', 'prep', 'sleek', 'polished'],
1137
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-counter/thumbnail.png',
1138
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-counter/model.glb',
1139
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-counter/floor-plan.png',
1140
+ dimensions: [1.96, 0.73, 0.63],
1141
+ offset: [0.0012, 0, -0.0004],
1063
1142
  rotation: [0, 0, 0],
1064
- dimensions: [0.5, 0.7, 0.5],
1143
+ scale: [1, 1, 1],
1144
+ surface: { height: 0.73 },
1065
1145
  },
1066
-
1067
1146
  {
1068
- id: 'indoor-plant',
1069
- category: 'furniture',
1070
- tags: ['floor', 'decor', 'vegetation'],
1071
- name: 'Indoor Plant',
1072
- thumbnail: '/items/indoor-plant/thumbnail.webp',
1073
- src: '/items/indoor-plant/model.glb',
1147
+ id: 'hood',
1148
+ category: 'kitchen',
1149
+ name: 'Hood',
1150
+ tags: ['hood', 'vent', 'extractor', 'ventilation', 'kitchen', 'cooking', 'appliance', 'metal', 'steel', 'stainless', 'modern', 'sleek', 'industrial', 'minimalist'],
1151
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/hood/thumbnail.png',
1152
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/hood/model.glb',
1153
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/hood/floor-plan.png',
1154
+ dimensions: [1.21, 0.52, 0.51],
1155
+ offset: [0, 0.2718, 0],
1156
+ rotation: [0, 0, 0],
1074
1157
  scale: [1, 1, 1],
1075
- offset: [-0.05, 0, 0.07],
1158
+ attachTo: 'wall-side',
1159
+ },
1160
+ {
1161
+ id: 'wooden-kitchen-bar-moa2hhh4',
1162
+ category: 'kitchen',
1163
+ name: 'Kitchen Bar',
1164
+ tags: ['bar', 'counter', 'island', 'breakfast', 'modern', 'contemporary', 'wood', 'stone', 'quartz', 'seating', 'dining', 'prep', 'entertaining'],
1165
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/wooden-kitchen-bar-moa2hhh4/thumbnail.png',
1166
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/wooden-kitchen-bar-moa2hhh4/models/item_model_c6iR1M2eE2I8k5M3.glb',
1167
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/wooden-kitchen-bar-moa2hhh4/floor-plan.png',
1168
+ dimensions: [2.5, 1.06, 0.96],
1169
+ offset: [0.0003, 0.5322, -0.0024],
1076
1170
  rotation: [0, 0, 0],
1077
- dimensions: [1, 1.7, 1],
1171
+ scale: [2.49, 2.49, 2.49],
1172
+ surface: { height: 1.06 },
1078
1173
  },
1079
-
1080
1174
  {
1081
- id: 'ironing-board',
1082
- category: 'furniture',
1083
- tags: ['floor'],
1084
- name: 'Ironing Board',
1085
- thumbnail: '/items/ironing-board/thumbnail.webp',
1086
- src: '/items/ironing-board/model.glb',
1175
+ id: 'kitchen-cabinet',
1176
+ category: 'kitchen',
1177
+ name: 'Kitchen Cabinet',
1178
+ tags: ['cabinet', 'cupboard', 'storage', 'kitchen', 'shaker', 'pantry', 'wood', 'timber', 'modern', 'contemporary', 'minimalist', 'organization'],
1179
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-cabinet/thumbnail.png',
1180
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-cabinet/model.glb',
1181
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-cabinet/floor-plan.png',
1182
+ dimensions: [1.65, 1.09, 0.77],
1183
+ offset: [0, 0.0004, 0],
1184
+ rotation: [0, 0, 0],
1087
1185
  scale: [1, 1, 1],
1186
+ surface: { height: 1.09 },
1187
+ },
1188
+ {
1189
+ id: 'kitchen',
1190
+ category: 'kitchen',
1191
+ name: 'Kitchen',
1192
+ tags: ['kitchen', 'cabinetry', 'cabinet', 'island', 'cooking', 'storage', 'modern', 'contemporary', 'minimalist', 'wood', 'marble', 'culinary', 'pantry'],
1193
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen/thumbnail.png',
1194
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen/model.glb',
1195
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen/floor-plan.png',
1196
+ dimensions: [2.38, 1.03, 0.84],
1088
1197
  offset: [0, 0, 0],
1089
1198
  rotation: [0, 0, 0],
1090
- dimensions: [1.5, 1, 1],
1199
+ scale: [1, 1, 1],
1200
+ surface: { height: 0.797 },
1091
1201
  },
1092
-
1093
1202
  {
1094
- id: 'coat-rack',
1095
- category: 'furniture',
1096
- tags: ['floor', 'storage'],
1097
- name: 'Coat Rack',
1098
- thumbnail: '/items/coat-rack/thumbnail.webp',
1099
- src: '/items/coat-rack/model.glb',
1100
- scale: [1, 1, 1],
1203
+ id: 'frying-pan',
1204
+ category: 'kitchen',
1205
+ name: 'Frying Pan',
1206
+ tags: ['frying', 'pan', 'skillet', 'cookware', 'kitchen', 'cooking', 'metal', 'steel', 'nonstick', 'culinary', 'modern', 'chef', 'stove', 'utensil'],
1207
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/frying-pan/thumbnail.png',
1208
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/frying-pan/model.glb',
1209
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/frying-pan/floor-plan.png',
1210
+ dimensions: [0.36, 0.09, 0.64],
1101
1211
  offset: [0, 0, 0],
1102
1212
  rotation: [0, 0, 0],
1103
- dimensions: [0.5, 1.8, 0.5],
1213
+ scale: [1, 1, 1],
1104
1214
  },
1105
-
1106
1215
  {
1107
- id: 'trash-bin',
1108
- category: 'furniture',
1109
- tags: ['floor'],
1110
- name: 'Trash Bin',
1111
- thumbnail: '/items/trash-bin/thumbnail.webp',
1112
- src: '/items/trash-bin/model.glb',
1113
- scale: [1, 1, 1],
1216
+ id: 'fruits',
1217
+ category: 'kitchen',
1218
+ name: 'Fruits',
1219
+ tags: ['fruit', 'produce', 'food', 'kitchen', 'dining', 'centerpiece', 'tabletop', 'vibrant', 'fresh', 'organic', 'natural', 'accessory', 'decor', 'colorful'],
1220
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fruits/thumbnail.png',
1221
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fruits/model.glb',
1222
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fruits/floor-plan.png',
1223
+ dimensions: [0.39, 0.27, 0.39],
1114
1224
  offset: [0, 0, 0],
1115
1225
  rotation: [0, 0, 0],
1116
- dimensions: [0.5, 0.6, 0.5],
1226
+ scale: [1, 1, 1],
1117
1227
  },
1118
-
1119
1228
  {
1120
- id: 'round-mirror',
1121
- category: 'furniture',
1122
- tags: ['wall', 'decor'],
1123
- name: 'Rounded Mirror',
1124
- thumbnail: '/items/round-mirror/thumbnail.webp',
1125
- src: '/items/round-mirror/model.glb',
1126
- scale: [1, 1, 1],
1127
- offset: [0, 0.32, 0],
1229
+ id: 'fridge',
1230
+ category: 'kitchen',
1231
+ name: 'Fridge',
1232
+ tags: ['fridge', 'refrigerator', 'freezer', 'appliance', 'kitchen', 'storage', 'cooling', 'metal', 'steel', 'modern', 'industrial', 'minimalist', 'silver', 'sleek'],
1233
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fridge/thumbnail.png',
1234
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fridge/model.glb',
1235
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fridge/floor-plan.png',
1236
+ dimensions: [0.7, 1.92, 0.72],
1237
+ offset: [0, 0, -0.0507],
1128
1238
  rotation: [0, 0, 0],
1129
- dimensions: [1, 1, 0.1],
1130
- attachTo: 'wall-side',
1239
+ scale: [1, 1, 1],
1131
1240
  },
1132
-
1133
1241
  {
1134
- id: 'picture',
1135
- category: 'furniture',
1136
- tags: ['wall', 'decor'],
1137
- name: 'Picture',
1138
- thumbnail: '/items/picture/thumbnail.webp',
1139
- src: '/items/picture/model.glb',
1140
- scale: [1, 1, 1],
1141
- offset: [0.02, 0.45, 0.01],
1242
+ id: 'kitchen-shelf',
1243
+ category: 'kitchen',
1244
+ name: 'Kitchen Shelf',
1245
+ tags: ['shelf', 'shelving', 'rack', 'ledge', 'storage', 'organizer', 'kitchen', 'pantry', 'modern', 'minimalist', 'industrial', 'wood', 'metal', 'utility'],
1246
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-shelf/thumbnail.png',
1247
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-shelf/model.glb',
1248
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/kitchen-shelf/floor-plan.png',
1249
+ dimensions: [2.21, 0.89, 0.52],
1250
+ offset: [-0.0009, 0.4478, 0],
1142
1251
  rotation: [0, 0, 0],
1143
- dimensions: [2, 1, 0.2],
1252
+ scale: [1, 1, 1],
1144
1253
  attachTo: 'wall-side',
1145
1254
  },
1146
-
1147
1255
  {
1148
- id: 'books',
1149
- category: 'furniture',
1256
+ id: 'wine-bottle',
1257
+ category: 'kitchen',
1258
+ name: 'Wine Bottle',
1150
1259
  tags: ['countertop', 'decor'],
1151
- name: 'Books',
1152
- thumbnail: '/items/books/thumbnail.webp',
1153
- src: '/items/books/model.glb',
1154
- scale: [1, 1, 1],
1155
- offset: [-0.08, 0, 0.02],
1260
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/wine-bottle/thumbnail.png',
1261
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/wine-bottle/model.glb',
1262
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/wine-bottle/floor-plan.png',
1263
+ dimensions: [0.38, 0.35, 0.17],
1264
+ offset: [-0.0461, 0, 0.0135],
1156
1265
  rotation: [0, 0, 0],
1157
- dimensions: [0.5, 0.3, 0.5],
1158
- },
1159
-
1160
- {
1161
- id: 'column',
1162
- category: 'furniture',
1163
- tags: ['floor', 'structure'],
1164
- name: 'Column',
1165
- thumbnail: '/items/column/thumbnail.webp',
1166
- src: '/items/column/model.glb',
1167
1266
  scale: [1, 1, 1],
1168
- offset: [0, 1.26, 0],
1169
- rotation: [0, 0, 0],
1170
- dimensions: [0.5, 2.6, 0.5],
1171
1267
  },
1172
-
1173
1268
  {
1174
- id: 'stairs',
1175
- category: 'furniture',
1176
- tags: ['floor', 'structure'],
1177
- name: 'Stairs',
1178
- thumbnail: '/items/stairs/thumbnail.webp',
1179
- src: '/items/stairs/model.glb',
1180
- scale: [0.61, 0.61, 0.61],
1181
- offset: [0, 0.03, 1.8],
1269
+ id: 'stove',
1270
+ category: 'kitchen',
1271
+ name: 'Stove',
1272
+ tags: ['floor', 'large'],
1273
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/stove/thumbnail.png',
1274
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/stove/model.glb',
1275
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/stove/floor-plan.png',
1276
+ dimensions: [0.92, 0.85, 0.76],
1277
+ offset: [0.0043, 0, -0.0505],
1182
1278
  rotation: [0, 0, 0],
1183
- dimensions: [1.5, 2.5, 3.5],
1279
+ scale: [1, 1, 1],
1184
1280
  },
1185
-
1186
- // {
1187
- // id: "suspended-fireplace",
1188
- // category: "furniture",
1189
- // tags: ["ceiling", "decor"],
1190
- // name: "Suspended Fireplace",
1191
- // thumbnail: "/items/suspended-fireplace/thumbnail.webp",
1192
- // src: "/items/suspended-fireplace/model.glb",
1193
- // scale: [1, 1, 1],
1194
- // offset: [0, 0.45, 0],
1195
- // rotation: [0, 0, 0],
1196
- // dimensions: [0.5, 0.5, 0.5],
1197
- // attachTo: "ceiling",
1198
- // },
1199
-
1200
1281
  {
1201
- id: 'tv-stand',
1202
- category: 'furniture',
1203
- tags: ['floor', 'storage'],
1204
- name: 'TV Stand',
1205
- thumbnail: '/items/tv-stand/thumbnail.webp',
1206
- src: '/items/tv-stand/model.glb',
1207
- scale: [1, 1, 1],
1208
- offset: [0, 0.21, 0],
1282
+ id: 'ball',
1283
+ category: 'outdoor',
1284
+ name: 'Ball',
1285
+ tags: ['ball', 'sphere', 'orb', 'globe', 'round', 'modern', 'minimalist', 'decor', 'garden', 'patio', 'sculpture', 'ornament', 'accent', 'circular', 'contemporary'],
1286
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ball/thumbnail.png',
1287
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ball/model.glb',
1288
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/ball/floor-plan.png',
1289
+ dimensions: [0.24, 0.24, 0.24],
1290
+ offset: [-0.0001, 0.1194, -0.0001],
1209
1291
  rotation: [0, 0, 0],
1210
- dimensions: [2, 0.4, 0.5],
1211
- surface: {
1212
- height: 0.36,
1213
- },
1292
+ scale: [1, 1, 1],
1214
1293
  },
1215
-
1216
1294
  {
1217
- id: 'shelf',
1218
- category: 'furniture',
1219
- tags: ['wall', 'storage'],
1220
- name: 'Shelf',
1221
- thumbnail: '/items/shelf/thumbnail.webp',
1222
- src: '/items/shelf/model.glb',
1223
- scale: [1, 1, 1],
1224
- offset: [0, 0.1, 0.01],
1295
+ id: 'bush',
1296
+ category: 'outdoor',
1297
+ name: 'Bush',
1298
+ tags: ['bush', 'shrub', 'plant', 'greenery', 'foliage', 'hedge', 'natural', 'organic', 'lush', 'landscaping', 'garden', 'yard', 'botanical', 'outdoor', 'decorative'],
1299
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bush/thumbnail.png',
1300
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bush/model.glb',
1301
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/bush/floor-plan.png',
1302
+ dimensions: [3, 1.04, 1.01],
1303
+ offset: [-0.1463, 0.0094, -0.113],
1225
1304
  rotation: [0, 0, 0],
1226
- dimensions: [1, 0.5, 0.7],
1227
- attachTo: 'wall-side',
1228
- surface: {
1229
- height: 0.12,
1230
- },
1305
+ scale: [0.96, 0.96, 0.96],
1231
1306
  },
1232
-
1233
1307
  {
1234
- id: 'bookshelf',
1235
- category: 'furniture',
1236
- tags: ['floor', 'storage'],
1237
- name: 'Bookshelf',
1238
- thumbnail: '/items/bookshelf/thumbnail.webp',
1239
- src: '/items/bookshelf/model.glb',
1240
- scale: [1, 1, 1],
1308
+ id: 'basket-hoop',
1309
+ category: 'outdoor',
1310
+ name: 'Basket Hoop',
1311
+ tags: ['hoop', 'basketball', 'rim', 'net', 'goal', 'sporty', 'recreation', 'outdoor', 'metal', 'steel', 'athletic', 'game', 'play', 'leisure', 'activity'],
1312
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/basket-hoop/thumbnail.png',
1313
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/basket-hoop/model.glb',
1314
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/basket-hoop/floor-plan.png',
1315
+ dimensions: [0.58, 1.78, 0.56],
1241
1316
  offset: [0, 0, 0],
1242
1317
  rotation: [0, 0, 0],
1243
- dimensions: [1, 2, 0.5],
1244
- },
1245
-
1246
- {
1247
- id: 'ceiling-lamp',
1248
- category: 'furniture',
1249
- tags: ['ceiling', 'lighting'],
1250
- name: 'Ceiling Lamp',
1251
- thumbnail: '/items/ceiling-lamp/thumbnail.webp',
1252
- src: '/items/ceiling-lamp/model.glb',
1253
1318
  scale: [1, 1, 1],
1254
- offset: [0, 0.98, 0],
1255
- rotation: [0, 0, 0],
1256
- dimensions: [1, 1, 1],
1257
- attachTo: 'ceiling',
1258
- interactive: {
1259
- controls: [
1260
- {
1261
- kind: 'toggle',
1262
- },
1263
- {
1264
- kind: 'slider',
1265
- label: 'Intensity',
1266
- min: 0,
1267
- max: 100,
1268
- unit: '%',
1269
- displayMode: 'dial',
1270
- default: 100,
1271
- },
1272
- ],
1273
- effects: [
1274
- {
1275
- kind: 'light',
1276
- intensityRange: [0, 2],
1277
- color: '#ffffff',
1278
- offset: [0, -0.5, 0],
1279
- },
1280
- ],
1281
- },
1282
1319
  },
1283
1320
  {
1284
- id: 'recessed-light',
1285
- category: 'furniture',
1286
- tags: ['ceiling', 'lighting'],
1287
- name: 'Recessed Light',
1288
- thumbnail: '/items/recessed-light/thumbnail.webp',
1289
- src: '/items/recessed-light/model.glb',
1290
- scale: [1, 1, 1],
1291
- offset: [0, 0.094, 0],
1321
+ id: 'parking-spot',
1322
+ category: 'outdoor',
1323
+ name: 'Parking Spot',
1324
+ tags: ['parking', 'space', 'stall', 'driveway', 'pavement', 'asphalt', 'concrete', 'urban', 'industrial', 'utility', 'vehicle', 'outdoor'],
1325
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/parking-spot/thumbnail.png',
1326
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/parking-spot/model.glb',
1327
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/parking-spot/floor-plan.png',
1328
+ dimensions: [4.95, 0.12, 2.28],
1329
+ offset: [0, 0.0121, 0.015],
1292
1330
  rotation: [0, 0, 0],
1293
- dimensions: [0.5, 0.1, 0.5],
1294
- attachTo: 'ceiling',
1295
- interactive: {
1296
- controls: [
1297
- {
1298
- kind: 'toggle',
1299
- },
1300
- {
1301
- kind: 'slider',
1302
- label: 'Intensity',
1303
- min: 0,
1304
- max: 100,
1305
- unit: '%',
1306
- displayMode: 'dial',
1307
- default: 100,
1308
- },
1309
- ],
1310
- effects: [
1311
- {
1312
- kind: 'light',
1313
- intensityRange: [0, 2],
1314
- color: '#ffffff',
1315
- offset: [0, -0.1, 0],
1316
- },
1317
- ],
1318
- },
1331
+ scale: [0.9, 1, 0.78],
1332
+ surface: { height: 0.015 },
1319
1333
  },
1320
-
1321
1334
  {
1322
- id: 'floor-lamp',
1323
- category: 'furniture',
1324
- tags: ['floor', 'lighting'],
1325
- name: 'Floor Lamp',
1326
- thumbnail: '/items/floor-lamp/thumbnail.webp',
1327
- src: '/items/floor-lamp/model.glb',
1328
- scale: [1, 1, 1],
1329
- offset: [0.04, 0, 0.02],
1335
+ id: 'palm',
1336
+ category: 'outdoor',
1337
+ name: 'Palm',
1338
+ tags: ['palm', 'tree', 'plant', 'tropical', 'exotic', 'foliage', 'greenery', 'botanical', 'garden', 'patio', 'outdoor', 'lush', 'organic', 'nature'],
1339
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/palm/thumbnail.png',
1340
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/palm/model.glb',
1341
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/palm/floor-plan.png',
1342
+ dimensions: [0.525, 4.5, 0.496],
1343
+ offset: [0, 0.08, 0],
1330
1344
  rotation: [0, 0, 0],
1331
- dimensions: [1, 1.9, 1],
1332
- interactive: {
1333
- controls: [
1334
- {
1335
- kind: 'toggle',
1336
- },
1337
- {
1338
- kind: 'slider',
1339
- label: 'Intensity',
1340
- min: 0,
1341
- max: 100,
1342
- unit: '%',
1343
- displayMode: 'dial',
1344
- default: 100,
1345
- },
1346
- ],
1347
- effects: [
1348
- {
1349
- kind: 'light',
1350
- intensityRange: [0, 2],
1351
- color: '#ffffff',
1352
- offset: [0, 1.4, 0],
1353
- },
1354
- ],
1355
- },
1345
+ scale: [0.37, 0.37, 0.37],
1356
1346
  },
1357
-
1358
1347
  {
1359
- id: 'table-lamp',
1360
- category: 'furniture',
1361
- tags: ['countertop', 'lighting'],
1362
- name: 'Table Lamp',
1363
- thumbnail: '/items/table-lamp/thumbnail.webp',
1364
- src: '/items/table-lamp/model.glb',
1365
- scale: [1, 1, 1],
1366
- offset: [0, 0, 0],
1348
+ id: 'sunbed',
1349
+ category: 'outdoor',
1350
+ name: 'Sunbed',
1351
+ tags: ['leisure', 'seating', 'floor'],
1352
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sunbed/thumbnail.png',
1353
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sunbed/model.glb',
1354
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/sunbed/floor-plan.png',
1355
+ dimensions: [0.86, 1.13, 1.01],
1356
+ offset: [0, 0.0516, 0.0137],
1367
1357
  rotation: [0, 0, 0],
1368
- dimensions: [0.5, 0.8, 1],
1369
- },
1370
-
1371
- {
1372
- id: 'closet',
1373
- category: 'furniture',
1374
- tags: ['floor', 'storage', 'bedroom'],
1375
- name: 'Closet',
1376
- thumbnail: '/items/closet/thumbnail.webp',
1377
- src: '/items/closet/model.glb',
1378
1358
  scale: [1, 1, 1],
1379
- offset: [0, 0, -0.01],
1380
- rotation: [0, 0, 0],
1381
- dimensions: [2, 2.5, 1],
1382
1359
  },
1383
-
1384
1360
  {
1385
- id: 'dresser',
1386
- category: 'furniture',
1387
- tags: ['floor', 'storage', 'bedroom'],
1388
- name: 'Dresser',
1389
- thumbnail: '/items/dresser/thumbnail.webp',
1390
- src: '/items/dresser/model.glb',
1391
- scale: [1, 1, 1],
1392
- offset: [0, 0, 0],
1361
+ id: 'fir-tree',
1362
+ category: 'outdoor',
1363
+ name: 'Fir',
1364
+ tags: ['fir', 'tree', 'plant', 'evergreen', 'conifer', 'foliage', 'greenery', 'natural', 'garden', 'outdoor', 'botanical', 'rustic', 'alpine', 'woodland'],
1365
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fir-tree/thumbnail.png',
1366
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fir-tree/model.glb',
1367
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/fir-tree/floor-plan.png',
1368
+ dimensions: [0.27, 3, 0.23],
1369
+ offset: [0.02, 0.05, -0.06],
1393
1370
  rotation: [0, 0, 0],
1394
- dimensions: [1.5, 0.8, 1],
1395
- surface: {
1396
- height: 0.8,
1397
- },
1398
- },
1399
-
1400
- {
1401
- id: 'bunkbed',
1402
- category: 'furniture',
1403
- tags: ['floor', 'bedroom'],
1404
- name: 'Bunkbed',
1405
- thumbnail: '/items/bunkbed/thumbnail.webp',
1406
- src: '/items/bunkbed/model.glb',
1407
1371
  scale: [1, 1, 1],
1408
- offset: [0, 0, -0.09],
1409
- rotation: [0, 0, 0],
1410
- dimensions: [2, 1.6, 1.5],
1411
1372
  },
1412
-
1413
1373
  {
1414
- id: 'double-bed',
1415
- category: 'furniture',
1416
- tags: ['floor', 'bedroom'],
1417
- name: 'Double Bed',
1418
- thumbnail: '/items/double-bed/thumbnail.webp',
1419
- src: '/items/double-bed/model.glb',
1420
- scale: [1, 1, 1],
1421
- offset: [0, 0, -0.03],
1374
+ id: 'tree',
1375
+ category: 'outdoor',
1376
+ name: 'Tree',
1377
+ tags: ['vegetation'],
1378
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/tree/thumbnail.png',
1379
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/tree/model.glb',
1380
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/tree/floor-plan.png',
1381
+ dimensions: [0.79, 5, 0.85],
1382
+ offset: [-0.02, 0.17, -0.04],
1422
1383
  rotation: [0, 0, 0],
1423
- dimensions: [2, 0.8, 2.5],
1384
+ scale: [0.65, 0.65, 0.65],
1424
1385
  },
1425
-
1426
1386
  {
1427
- id: 'single-bed',
1428
- category: 'furniture',
1429
- tags: ['floor', 'bedroom'],
1430
- name: 'Single Bed',
1431
- thumbnail: '/items/single-bed/thumbnail.webp',
1432
- src: '/items/single-bed/model.glb',
1433
- scale: [1, 1, 1],
1387
+ id: 'skate',
1388
+ category: 'outdoor',
1389
+ name: 'Skate',
1390
+ tags: ['leisure', 'kids', 'floor'],
1391
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/skate/thumbnail.png',
1392
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/skate/model.glb',
1393
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/skate/floor-plan.png',
1394
+ dimensions: [0.86, 0.11, 0.2],
1434
1395
  offset: [0, 0, 0],
1435
1396
  rotation: [0, 0, 0],
1436
- dimensions: [1.5, 0.7, 2.5],
1437
- },
1438
-
1439
- {
1440
- id: 'sofa',
1441
- category: 'furniture',
1442
- tags: ['floor', 'seating'],
1443
- name: 'Sofa',
1444
- thumbnail: '/items/sofa/thumbnail.webp',
1445
- src: '/items/sofa/model.glb',
1446
1397
  scale: [1, 1, 1],
1447
- offset: [0, 0, 0.04],
1448
- rotation: [0, 0, 0],
1449
- dimensions: [2.5, 0.8, 1.5],
1450
1398
  },
1451
-
1452
1399
  {
1453
- id: 'lounge-chair',
1454
- category: 'furniture',
1455
- tags: ['floor', 'seating'],
1456
- name: 'Lounge Chair',
1457
- thumbnail: '/items/lounge-chair/thumbnail.webp',
1458
- src: '/items/lounge-chair/model.glb',
1459
- scale: [1, 1, 1],
1460
- offset: [0, 0, 0.09],
1400
+ id: '1967-chevrolet-camaro-moa24wsf',
1401
+ category: 'outdoor',
1402
+ name: '1967 Chevrolet Camaro',
1403
+ tags: ['car'],
1404
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/1967-chevrolet-camaro-moa24wsf/thumbnail.png',
1405
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/1967-chevrolet-camaro-moa24wsf/models/item_model_vUIp1N69V9RXLqoJ.glb',
1406
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/1967-chevrolet-camaro-moa24wsf/floor-plan.png',
1407
+ dimensions: [4.09, 1.22, 1.89],
1408
+ offset: [-0.0018, 0.5987, 0.0205],
1461
1409
  rotation: [0, 0, 0],
1462
- dimensions: [1, 1.1, 1.5],
1410
+ scale: [4.09, 4.09, 4.09],
1463
1411
  },
1464
-
1465
1412
  {
1466
- id: 'stool',
1467
- category: 'furniture',
1468
- tags: ['floor', 'seating'],
1469
- name: 'Stool',
1470
- thumbnail: '/items/stool/thumbnail.webp',
1471
- src: '/items/stool/model.glb',
1472
- scale: [1, 1, 1],
1473
- offset: [0, 0, 0],
1413
+ id: 'outdoor-playhouse',
1414
+ category: 'outdoor',
1415
+ name: 'Outdoor Playhouse',
1416
+ tags: ['playhouse', 'cottage', 'cabin', 'fort', 'wood', 'cedar', 'garden', 'backyard', 'kids', 'children', 'play', 'recreation', 'outdoor', 'rustic', 'timber'],
1417
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/outdoor-playhouse/thumbnail.png',
1418
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/outdoor-playhouse/model.glb',
1419
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/outdoor-playhouse/floor-plan.png',
1420
+ dimensions: [0.3, 0.47, 0.72],
1421
+ offset: [-0.0062, 0, -0.0268],
1474
1422
  rotation: [0, 0, 0],
1475
- dimensions: [1, 1.2, 1],
1423
+ scale: [1, 1, 1],
1476
1424
  },
1477
-
1478
1425
  {
1479
- id: 'dining-chair',
1480
- category: 'furniture',
1481
- tags: ['floor', 'seating'],
1482
- name: 'Dining Chair',
1483
- thumbnail: '/items/dining-chair/thumbnail.webp',
1484
- src: '/items/dining-chair/model.glb',
1485
- scale: [1, 1, 1],
1426
+ id: 'patio-umbrella',
1427
+ category: 'outdoor',
1428
+ name: 'Patio Umbrella',
1429
+ tags: ['umbrella', 'parasol', 'shade', 'canopy', 'sunshade', 'outdoor', 'patio', 'garden', 'modern', 'polyester', 'fabric', 'aluminum', 'poolside', 'protection', 'summer'],
1430
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/patio-umbrella/thumbnail.png',
1431
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/patio-umbrella/model.glb',
1432
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/patio-umbrella/floor-plan.png',
1433
+ dimensions: [0.139, 3.603, 0.15],
1486
1434
  offset: [0, 0, 0],
1487
1435
  rotation: [0, 0, 0],
1488
- dimensions: [0.5, 1, 0.5],
1489
- },
1490
-
1491
- {
1492
- id: 'office-chair',
1493
- category: 'furniture',
1494
- tags: ['floor', 'seating'],
1495
- name: 'Office Chair',
1496
- thumbnail: '/items/office-chair/thumbnail.webp',
1497
- src: '/items/office-chair/model.glb',
1498
1436
  scale: [1, 1, 1],
1499
- offset: [0.01, 0, 0.03],
1500
- rotation: [0, 0, 0],
1501
- dimensions: [1, 1.2, 1],
1502
1437
  },
1503
-
1504
1438
  {
1505
- id: 'livingroom-chair',
1506
- category: 'furniture',
1507
- tags: ['floor', 'seating'],
1508
- name: 'Livingroom Chair',
1509
- thumbnail: '/items/livingroom-chair/thumbnail.webp',
1510
- src: '/items/livingroom-chair/model.glb',
1511
- scale: [1, 1, 1],
1512
- offset: [0.01, 0, 0],
1439
+ id: 'pillar',
1440
+ category: 'outdoor',
1441
+ name: 'Pillar',
1442
+ tags: ['pillar', 'column', 'pedestal', 'plinth', 'stone', 'concrete', 'classical', 'architectural', 'garden', 'ornament', 'decoration', 'support'],
1443
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/pillar/thumbnail.png',
1444
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/pillar/model.glb',
1445
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/pillar/floor-plan.png',
1446
+ dimensions: [0.34, 1.26, 0.3],
1447
+ offset: [0, 0, 0],
1513
1448
  rotation: [0, 0, 0],
1514
- dimensions: [1.5, 0.8, 1.5],
1515
- },
1516
-
1517
- {
1518
- id: 'bedside-table',
1519
- category: 'furniture',
1520
- tags: ['floor', 'bedroom'],
1521
- name: 'Bedside Table',
1522
- thumbnail: '/items/bedside-table/thumbnail.webp',
1523
- src: '/items/bedside-table/model.glb',
1524
1449
  scale: [1, 1, 1],
1525
- offset: [0, 0, -0.01],
1526
- rotation: [0, 0, 0],
1527
- dimensions: [0.5, 0.5, 0.5],
1528
- surface: {
1529
- height: 0.5,
1530
- },
1531
1450
  },
1532
-
1533
1451
  {
1534
- id: 'coffee-table',
1535
- category: 'furniture',
1536
- tags: ['floor', 'table'],
1537
- name: 'Coffee Table',
1538
- thumbnail: '/items/coffee-table/thumbnail.webp',
1539
- src: '/items/coffee-table/model.glb',
1540
- scale: [1, 1, 1],
1541
- offset: [0, 0, 0],
1452
+ id: 'scooter',
1453
+ category: 'outdoor',
1454
+ name: 'Scooter',
1455
+ tags: ['scooter', 'kickscooter', 'transport', 'mobility', 'outdoor', 'wheels', 'metal', 'aluminum', 'modern', 'sleek', 'urban', 'active', 'travel', 'ride', 'commute'],
1456
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/scooter/thumbnail.png',
1457
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/scooter/model.glb',
1458
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/scooter/floor-plan.png',
1459
+ dimensions: [0.85, 0.85, 0.45],
1460
+ offset: [0.1127, 0.0017, 0.1744],
1542
1461
  rotation: [0, 0, 0],
1543
- dimensions: [2, 0.4, 1.5],
1544
- surface: {
1545
- height: 0.3,
1546
- },
1547
- },
1548
-
1549
- {
1550
- id: 'office-table',
1551
- category: 'furniture',
1552
- tags: ['floor', 'table'],
1553
- name: 'Office Table',
1554
- thumbnail: '/items/office-table/thumbnail.webp',
1555
- src: '/items/office-table/model.glb',
1556
1462
  scale: [1, 1, 1],
1557
- offset: [0, 0, 0],
1558
- rotation: [0, 0, 0],
1559
- dimensions: [2, 0.8, 1],
1560
- surface: {
1561
- height: 0.75,
1562
- },
1563
1463
  },
1564
-
1565
1464
  {
1566
- id: 'dining-table',
1567
- category: 'furniture',
1568
- tags: ['floor', 'table'],
1569
- name: 'Dining Table',
1570
- thumbnail: '/items/dining-table/thumbnail.webp',
1571
- src: '/items/dining-table/model.glb',
1572
- scale: [1, 1, 1],
1573
- offset: [0, 0, -0.01],
1465
+ id: 'tesla',
1466
+ category: 'outdoor',
1467
+ name: 'Tesla Model Y',
1468
+ tags: ['tesla', 'car', 'vehicle', 'automobile', 'electric', 'modern', 'minimalist', 'sleek', 'metal', 'glass', 'luxury', 'transportation', 'commuting'],
1469
+ thumbnail: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/tesla/thumbnail.png',
1470
+ src: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/tesla/model.glb',
1471
+ floorPlanUrl: 'https://byrpxoiotywskoojsrzd.supabase.co/storage/v1/object/public/items/system/tesla/floor-plan.png',
1472
+ dimensions: [1.98, 1.62, 4.76],
1473
+ offset: [0.0039, -0.0102, -0.0148],
1574
1474
  rotation: [0, 0, 0],
1575
- dimensions: [2.5, 0.8, 1],
1576
- surface: {
1577
- height: 0.8,
1578
- },
1475
+ scale: [1, 1, 1],
1579
1476
  },
1580
1477
  ]
1581
1478