From 4558fa63756561088138895fa7be9a2b834120b6 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 13:05:44 +0000 Subject: [PATCH 1/6] Changes Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com> --- src/stores/useModelStore.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/stores/useModelStore.ts b/src/stores/useModelStore.ts index c9ce865..a5ac3f5 100644 --- a/src/stores/useModelStore.ts +++ b/src/stores/useModelStore.ts @@ -100,6 +100,7 @@ interface ModelStore { setActiveModel: (id: string | null) => void; toggleModelVisible: (id: string) => void; toggleModelLocked: (id: string) => void; + setModelColor: (id: string, color: string) => void; duplicateModel: (id: string) => void; clearAllModels: () => void; maxModels: number; From 245a4e9ba221cb89be1e9882928175f619692a2c Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 13:06:02 +0000 Subject: [PATCH 2/6] Changes Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com> --- src/stores/useModelStore.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/stores/useModelStore.ts b/src/stores/useModelStore.ts index a5ac3f5..328ba54 100644 --- a/src/stores/useModelStore.ts +++ b/src/stores/useModelStore.ts @@ -244,6 +244,10 @@ export const useModelStore = create((set, get) => ({ models: state.models.map(m => m.id === id ? { ...m, locked: !m.locked } : m), })), + setModelColor: (id, color) => set((state) => ({ + models: state.models.map(m => m.id === id ? { ...m, color } : m), + })), + duplicateModel: (id) => { const state = get(); if (state.models.length >= MAX_MODELS) return; From f7c685589bd7cbb14192823b9aaaf11757b1a593 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 13:06:16 +0000 Subject: [PATCH 3/6] Changes Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com> --- src/components/SceneModelList.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/SceneModelList.tsx b/src/components/SceneModelList.tsx index 0575237..2fc6487 100644 --- a/src/components/SceneModelList.tsx +++ b/src/components/SceneModelList.tsx @@ -1,8 +1,16 @@ -import { Eye, EyeOff, Lock, Unlock, Copy, Trash2, Box, Layers } from 'lucide-react'; +import { Eye, EyeOff, Lock, Unlock, Copy, Trash2, Box, Layers, Check } from 'lucide-react'; import { Button } from '@/components/ui/button'; +import { Popover, PopoverContent, PopoverTrigger } from '@/components/ui/popover'; import { useModelStore } from '@/stores/useModelStore'; import { toast } from 'sonner'; +const COLOR_PALETTE = [ + '#ef4444', '#f97316', '#f59e0b', '#eab308', '#84cc16', '#22c55e', + '#10b981', '#14b8a6', '#06b6d4', '#0ea5e9', '#3b82f6', '#6366f1', + '#8b5cf6', '#a855f7', '#d946ef', '#ec4899', '#f43f5e', '#64748b', + '#ffffff', '#1f2937', +]; + interface SceneModelListProps { compact?: boolean; } @@ -15,6 +23,7 @@ export function SceneModelList({ compact = false }: SceneModelListProps) { const toggleVisible = useModelStore((s) => s.toggleModelVisible); const toggleLocked = useModelStore((s) => s.toggleModelLocked); const duplicate = useModelStore((s) => s.duplicateModel); + const setModelColor = useModelStore((s) => s.setModelColor); const max = useModelStore((s) => s.maxModels); if (models.length === 0) { From 0a430e5c609fd70ae1388159067f8878b5c1665f Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 13:06:30 +0000 Subject: [PATCH 4/6] Changes Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com> --- src/components/SceneModelList.tsx | 46 +++++++++++++++++++++++++++---- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/src/components/SceneModelList.tsx b/src/components/SceneModelList.tsx index 2fc6487..fb14696 100644 --- a/src/components/SceneModelList.tsx +++ b/src/components/SceneModelList.tsx @@ -65,11 +65,47 @@ export function SceneModelList({ compact = false }: SceneModelListProps) { }`} onClick={() => setActive(m.id)} > -
+ + + + ); + })} +
+ + {m.fileName} From b2c82f247f7286995265682ab122e802121433a3 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 13:06:44 +0000 Subject: [PATCH 5/6] Changes Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com> --- src/pages/Viewer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Viewer.tsx b/src/pages/Viewer.tsx index d1282ba..6c26fba 100644 --- a/src/pages/Viewer.tsx +++ b/src/pages/Viewer.tsx @@ -21,7 +21,7 @@ import { convertIFCtoGLB } from "@/lib/convertIFC"; const Viewer = () => { const navigate = useNavigate(); - const { model, xrSupported, addModel, models, maxModels } = useModelStore(); + const { model, xrSupported, addModel, models, maxModels, scaleRatio } = useModelStore(); const fileInputRef = useRef(null); const [converting, setConverting] = useState(false); From 1f2193dc5e66c478c755932fd363a6f6bb5d8966 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Fri, 15 May 2026 13:06:50 +0000 Subject: [PATCH 6/6] Changes Co-authored-by: Reifonas <211114984+Reifonas@users.noreply.github.com> --- src/pages/Viewer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Viewer.tsx b/src/pages/Viewer.tsx index 6c26fba..3c3f616 100644 --- a/src/pages/Viewer.tsx +++ b/src/pages/Viewer.tsx @@ -177,7 +177,7 @@ const Viewer = () => {
- +