From 8daf1a601ccb821e8555f0e379aede8ca717c091 Mon Sep 17 00:00:00 2001 From: likegears <30487484+likegears@users.noreply.github.com> Date: Fri, 12 Dec 2025 17:51:47 +0800 Subject: [PATCH] Refactor settings panel to compact floating toolbar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the bulky side panel (290-340px wide) with a compact floating toolbar at the bottom center of the viewer, maximizing the model viewing area. New toolbar components: - FloatingToolbar.vue: Main container with all controls - ToolbarButton.vue: Reusable icon button with active state - ToolbarPopup.vue: Reusable popup with click-outside close - RenderModeSelector.vue: 3-segment render mode control - ExplodePopup.vue: Explosion settings popup - SectionPopup.vue: Cross-section settings popup - RenderPopup.vue: Material and lighting settings popup Toolbar features: - Direct controls: Render mode, edge lines toggle, auto-color toggle - Popup controls: Explode (click for animation), section, render settings - Screenshot button with preview modal Removed old components: - FeaturePanel.vue, ExplodedView.vue, CrossSection.vue - RenderSettings.vue, ThumbnailCapture.vue 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../src/components/layout/ViewerPanel.vue | 4 +- .../src/components/viewer/ExplodedView.vue | 153 ------ .../src/components/viewer/FeaturePanel.vue | 18 - .../src/components/viewer/RenderSettings.vue | 481 ------------------ .../components/viewer/ThumbnailCapture.vue | 288 ----------- .../viewer/toolbar/ExplodePopup.vue | 176 +++++++ .../viewer/toolbar/FloatingToolbar.vue | 456 +++++++++++++++++ .../viewer/toolbar/RenderModeSelector.vue | 64 +++ .../components/viewer/toolbar/RenderPopup.vue | 356 +++++++++++++ .../SectionPopup.vue} | 299 ++++++----- .../viewer/toolbar/ToolbarButton.vue | 59 +++ .../viewer/toolbar/ToolbarPopup.vue | 136 +++++ 12 files changed, 1417 insertions(+), 1073 deletions(-) delete mode 100644 frontend/src/components/viewer/ExplodedView.vue delete mode 100644 frontend/src/components/viewer/FeaturePanel.vue delete mode 100644 frontend/src/components/viewer/RenderSettings.vue delete mode 100644 frontend/src/components/viewer/ThumbnailCapture.vue create mode 100644 frontend/src/components/viewer/toolbar/ExplodePopup.vue create mode 100644 frontend/src/components/viewer/toolbar/FloatingToolbar.vue create mode 100644 frontend/src/components/viewer/toolbar/RenderModeSelector.vue create mode 100644 frontend/src/components/viewer/toolbar/RenderPopup.vue rename frontend/src/components/viewer/{CrossSection.vue => toolbar/SectionPopup.vue} (67%) create mode 100644 frontend/src/components/viewer/toolbar/ToolbarButton.vue create mode 100644 frontend/src/components/viewer/toolbar/ToolbarPopup.vue diff --git a/frontend/src/components/layout/ViewerPanel.vue b/frontend/src/components/layout/ViewerPanel.vue index ffdaf7e..82a399c 100644 --- a/frontend/src/components/layout/ViewerPanel.vue +++ b/frontend/src/components/layout/ViewerPanel.vue @@ -3,7 +3,7 @@ import { computed } from 'vue' import { useModelsStore } from '@/stores/models' import { useViewerStore } from '@/stores/viewer' import ModelViewer from '@/components/viewer/ModelViewer.vue' -import FeaturePanel from '@/components/viewer/FeaturePanel.vue' +import FloatingToolbar from '@/components/viewer/toolbar/FloatingToolbar.vue' const modelsStore = useModelsStore() const viewerStore = useViewerStore() @@ -20,7 +20,7 @@ const isModelReady = computed(() => diff --git a/frontend/src/components/viewer/toolbar/ToolbarButton.vue b/frontend/src/components/viewer/toolbar/ToolbarButton.vue new file mode 100644 index 0000000..8d962f0 --- /dev/null +++ b/frontend/src/components/viewer/toolbar/ToolbarButton.vue @@ -0,0 +1,59 @@ + + + + + diff --git a/frontend/src/components/viewer/toolbar/ToolbarPopup.vue b/frontend/src/components/viewer/toolbar/ToolbarPopup.vue new file mode 100644 index 0000000..0f93a15 --- /dev/null +++ b/frontend/src/components/viewer/toolbar/ToolbarPopup.vue @@ -0,0 +1,136 @@ + + + + +