diff --git a/browser_tests/tests/domWidget.spec.ts-snapshots/focus-mode-on-chromium-linux.png b/browser_tests/tests/domWidget.spec.ts-snapshots/focus-mode-on-chromium-linux.png index 02c2e31a2..cb8e7c17f 100644 Binary files a/browser_tests/tests/domWidget.spec.ts-snapshots/focus-mode-on-chromium-linux.png and b/browser_tests/tests/domWidget.spec.ts-snapshots/focus-mode-on-chromium-linux.png differ diff --git a/browser_tests/tests/graphCanvasMenu.spec.ts b/browser_tests/tests/graphCanvasMenu.spec.ts index daa165fa4..fc8385e49 100644 --- a/browser_tests/tests/graphCanvasMenu.spec.ts +++ b/browser_tests/tests/graphCanvasMenu.spec.ts @@ -39,15 +39,15 @@ test.describe('Graph Canvas Menu', () => { ) }) - test('Focus mode button is clickable and has correct test id', async ({ + test('Toggle minimap button is clickable and has correct test id', async ({ comfyPage }) => { - const focusButton = comfyPage.page.getByTestId('focus-mode-button') - await expect(focusButton).toBeVisible() - await expect(focusButton).toBeEnabled() + const minimapButton = comfyPage.page.getByTestId('toggle-minimap-button') + await expect(minimapButton).toBeVisible() + await expect(minimapButton).toBeEnabled() // Test that the button can be clicked without error - await focusButton.click() + await minimapButton.click() await comfyPage.nextFrame() }) diff --git a/browser_tests/tests/graphCanvasMenu.spec.ts-snapshots/canvas-with-hidden-links-chromium-linux.png b/browser_tests/tests/graphCanvasMenu.spec.ts-snapshots/canvas-with-hidden-links-chromium-linux.png index 2736a50c5..382a7d03f 100644 Binary files a/browser_tests/tests/graphCanvasMenu.spec.ts-snapshots/canvas-with-hidden-links-chromium-linux.png and b/browser_tests/tests/graphCanvasMenu.spec.ts-snapshots/canvas-with-hidden-links-chromium-linux.png differ diff --git a/browser_tests/tests/graphCanvasMenu.spec.ts-snapshots/canvas-with-visible-links-chromium-linux.png b/browser_tests/tests/graphCanvasMenu.spec.ts-snapshots/canvas-with-visible-links-chromium-linux.png index fd72c2d0a..8a87725f3 100644 Binary files a/browser_tests/tests/graphCanvasMenu.spec.ts-snapshots/canvas-with-visible-links-chromium-linux.png and b/browser_tests/tests/graphCanvasMenu.spec.ts-snapshots/canvas-with-visible-links-chromium-linux.png differ diff --git a/browser_tests/tests/interaction.spec.ts b/browser_tests/tests/interaction.spec.ts index 2fc753490..d1afc696f 100644 --- a/browser_tests/tests/interaction.spec.ts +++ b/browser_tests/tests/interaction.spec.ts @@ -3,10 +3,10 @@ import { expect } from '@playwright/test' import type { Position } from '@vueuse/core' import { - type ComfyPage, comfyPageFixture as test, testComfySnapToGridGridSize } from '../fixtures/ComfyPage' +import type { ComfyPage } from '../fixtures/ComfyPage' import type { NodeReference } from '../fixtures/utils/litegraphUtils' test.beforeEach(async ({ comfyPage }) => { @@ -786,16 +786,8 @@ test.describe('Viewport settings', () => { // Screenshot the canvas element await comfyPage.setSetting('Comfy.Graph.CanvasMenu', true) - // Open zoom controls dropdown first - const zoomControlsButton = comfyPage.page.getByTestId( - 'zoom-controls-button' - ) - await zoomControlsButton.click() - const toggleButton = comfyPage.page.getByTestId('toggle-minimap-button') await toggleButton.click() - // close zoom menu - await zoomControlsButton.click() await comfyPage.setSetting('Comfy.Graph.CanvasMenu', false) await comfyPage.menu.topbar.saveWorkflow('Workflow A') diff --git a/browser_tests/tests/minimap.spec.ts b/browser_tests/tests/minimap.spec.ts index d1ab05fc5..cea5fe9a8 100644 --- a/browser_tests/tests/minimap.spec.ts +++ b/browser_tests/tests/minimap.spec.ts @@ -35,12 +35,6 @@ test.describe('Minimap', () => { }) test('Validate minimap toggle button state', async ({ comfyPage }) => { - // Open zoom controls dropdown first - const zoomControlsButton = comfyPage.page.getByTestId( - 'zoom-controls-button' - ) - await zoomControlsButton.click() - const toggleButton = comfyPage.page.getByTestId('toggle-minimap-button') await expect(toggleButton).toBeVisible() @@ -51,13 +45,6 @@ test.describe('Minimap', () => { test('Validate minimap can be toggled off and on', async ({ comfyPage }) => { const minimapContainer = comfyPage.page.locator('.litegraph-minimap') - - // Open zoom controls dropdown first - const zoomControlsButton = comfyPage.page.getByTestId( - 'zoom-controls-button' - ) - await zoomControlsButton.click() - const toggleButton = comfyPage.page.getByTestId('toggle-minimap-button') await expect(minimapContainer).toBeVisible() @@ -67,22 +54,10 @@ test.describe('Minimap', () => { await expect(minimapContainer).not.toBeVisible() - // Open zoom controls dropdown again - await zoomControlsButton.click() - await comfyPage.nextFrame() - - await expect(toggleButton).toContainText('Show Minimap') - await toggleButton.click() await comfyPage.nextFrame() await expect(minimapContainer).toBeVisible() - - // Open zoom controls dropdown again to verify button text - await zoomControlsButton.click() - await comfyPage.nextFrame() - - await expect(toggleButton).toContainText('Hide Minimap') }) test('Validate minimap keyboard shortcut Alt+M', async ({ comfyPage }) => { diff --git a/browser_tests/tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-linux.png b/browser_tests/tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-linux.png index d66ea8927..2dca958d5 100644 Binary files a/browser_tests/tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-linux.png and b/browser_tests/tests/rerouteNode.spec.ts-snapshots/reroute-inserted-chromium-linux.png differ diff --git a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-nodes-border-chromium-linux.png b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-nodes-border-chromium-linux.png index 96f6507e1..bcc9e7e30 100644 Binary files a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-nodes-border-chromium-linux.png and b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-nodes-border-chromium-linux.png differ diff --git a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-selections-border-chromium-linux.png b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-selections-border-chromium-linux.png index af92221f3..ce3118790 100644 Binary files a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-selections-border-chromium-linux.png and b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-multiple-selections-border-chromium-linux.png differ diff --git a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-single-node-no-border-chromium-linux.png b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-single-node-no-border-chromium-linux.png index f9b9b012c..3e804b0ab 100644 Binary files a/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-single-node-no-border-chromium-linux.png and b/browser_tests/tests/selectionToolbox.spec.ts-snapshots/selection-toolbox-single-node-no-border-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png b/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png index bb95e63aa..b5583be8f 100644 Binary files a/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png and b/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-create-group-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-fit-to-contents-chromium-linux.png b/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-fit-to-contents-chromium-linux.png index 13484da06..2091d962f 100644 Binary files a/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-fit-to-contents-chromium-linux.png and b/browser_tests/tests/vueNodes/groups/groups.spec.ts-snapshots/vue-groups-fit-to-contents-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/canvas/pan.spec.ts-snapshots/vue-nodes-paned-with-touch-mobile-chrome-linux.png b/browser_tests/tests/vueNodes/interactions/canvas/pan.spec.ts-snapshots/vue-nodes-paned-with-touch-mobile-chrome-linux.png index 16a40d83d..f1b14b491 100644 Binary files a/browser_tests/tests/vueNodes/interactions/canvas/pan.spec.ts-snapshots/vue-nodes-paned-with-touch-mobile-chrome-linux.png and b/browser_tests/tests/vueNodes/interactions/canvas/pan.spec.ts-snapshots/vue-nodes-paned-with-touch-mobile-chrome-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/canvas/zoom.spec.ts-snapshots/zoomed-in-ctrl-shift-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/canvas/zoom.spec.ts-snapshots/zoomed-in-ctrl-shift-chromium-linux.png index 15065b8f2..e4edbc459 100644 Binary files a/browser_tests/tests/vueNodes/interactions/canvas/zoom.spec.ts-snapshots/zoomed-in-ctrl-shift-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/canvas/zoom.spec.ts-snapshots/zoomed-in-ctrl-shift-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png index ab898a31d..49d875ac2 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-dragging-link-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-ctrl-alt-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-ctrl-alt-chromium-linux.png index 49f0ea7de..b3dd3c9e3 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-ctrl-alt-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-ctrl-alt-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-reuses-origin-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-reuses-origin-chromium-linux.png index b9ffc504e..f923dd0f4 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-reuses-origin-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-input-drag-reuses-origin-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-input-drag-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-input-drag-chromium-linux.png index ff95fb20b..c55cf2f89 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-input-drag-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-input-drag-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-output-shift-drag-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-output-shift-drag-chromium-linux.png index e18081fc3..051c2e3ee 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-output-shift-drag-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-reroute-output-shift-drag-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-shift-output-multi-link-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-shift-output-multi-link-chromium-linux.png index f68ed4a56..62d043713 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-shift-output-multi-link-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-shift-output-multi-link-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-node-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-node-chromium-linux.png index d4ad89217..625caa9af 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-node-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-node-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-slot-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-slot-chromium-linux.png index 886b44deb..465a9e7c0 100644 Binary files a/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-slot-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/links/linkInteraction.spec.ts-snapshots/vue-node-snap-to-slot-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-chromium-linux.png b/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-chromium-linux.png index bb87c1787..60ab7ea0d 100644 Binary files a/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-chromium-linux.png and b/browser_tests/tests/vueNodes/interactions/node/move.spec.ts-snapshots/vue-node-moved-node-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png index ed4d464d4..b0d14bfa8 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/bypass.spec.ts-snapshots/vue-node-bypassed-state-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png index fb390cbd1..d75aaa7ad 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-color-blue-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-dark-all-colors-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-dark-all-colors-chromium-linux.png index ce629c555..ca65a1de1 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-dark-all-colors-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-dark-all-colors-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-light-all-colors-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-light-all-colors-chromium-linux.png index 139acf177..0485a92d4 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-light-all-colors-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/colors.spec.ts-snapshots/vue-node-custom-colors-light-all-colors-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png b/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png index 272363ac8..4018175b1 100644 Binary files a/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png and b/browser_tests/tests/vueNodes/nodeStates/mute.spec.ts-snapshots/vue-node-muted-state-chromium-linux.png differ diff --git a/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts-snapshots/vue-nodes-upload-widgets-chromium-linux.png b/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts-snapshots/vue-nodes-upload-widgets-chromium-linux.png index 9f0cbc649..1c4bacd6d 100644 Binary files a/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts-snapshots/vue-nodes-upload-widgets-chromium-linux.png and b/browser_tests/tests/vueNodes/widgets/load/uploadWidgets.spec.ts-snapshots/vue-nodes-upload-widgets-chromium-linux.png differ diff --git a/packages/design-system/src/css/style.css b/packages/design-system/src/css/style.css index 2c58a4976..780e25f07 100644 --- a/packages/design-system/src/css/style.css +++ b/packages/design-system/src/css/style.css @@ -24,11 +24,14 @@ --text-xxs: 0.625rem; --text-xxs--line-height: calc(1 / 0.625); + /* Spacing */ + --spacing-xs: 8px; + /* Font Families */ --font-inter: 'Inter', sans-serif; /* Palette Colors */ - --color-charcoal-100: #55565e; + --color-charcoal-100: #171718; --color-charcoal-200: #494a50; --color-charcoal-300: #3c3d42; --color-charcoal-400: #313235; @@ -146,8 +149,15 @@ --accent-primary: var(--color-charcoal-700); --backdrop: var(--color-white); + --button-hover-surface: var(--color-gray-200); + --button-active-surface: var(--color-gray-400); --dialog-surface: var(--color-neutral-200); + --interface-panel-surface: var(--color-pure-white); + --interface-stroke: var(--color-gray-300); + --nav-background: var(--color-pure-white); + --node-border: var(--color-gray-300); --node-component-border: var(--color-gray-400); + --node-component-disabled: var(--color-alpha-stone-100-20); --node-component-executing: var(--color-blue-500); --node-component-header: var(--fg-color); --node-component-header-icon: var(--color-stone-200); @@ -159,7 +169,7 @@ --node-component-slot-dot-outline: var(--color-black); --node-component-slot-text: var(--color-stone-200); --node-component-surface-highlight: var(--color-stone-100); - --node-component-surface-hovered: var(--color-charcoal-400); + --node-component-surface-hovered: var(--color-gray-200); --node-component-surface-selected: var(--color-charcoal-200); --node-component-surface: var(--color-white); --node-component-tooltip: var(--color-charcoal-700); @@ -170,18 +180,27 @@ from var(--color-zinc-500) r g b / 10% ); --node-component-widget-skeleton-surface: var(--color-zinc-300); - --node-component-disabled: var(--color-alpha-stone-100-20); + --node-divider: var(--color-sand-100); --node-icon-disabled: var(--color-alpha-gray-500-50); --node-stroke: var(--color-gray-400); --node-stroke-selected: var(--color-accent-primary); --node-stroke-error: var(--color-error); --node-stroke-executing: var(--color-blue-100); + --text-secondary: var(--color-stone-100); + --text-primary: var(--color-charcoal-700); + --input-surface: rgba(0, 0, 0, 0.15); } .dark-theme { --accent-primary: var(--color-pure-white); --backdrop: var(--color-neutral-900); + --button-hover-surface: var(--color-charcoal-600); + --button-active-surface: var(--color-charcoal-600); --dialog-surface: var(--color-neutral-700); + --interface-panel-surface: var(--color-charcoal-100); + --interface-stroke: var(--color-charcoal-400); + --nav-background: var(--color-charcoal-100); + --node-border: var(--color-charcoal-500); --node-component-border: var(--color-stone-200); --node-component-border-error: var(--color-danger-100); --node-component-border-executing: var(--color-blue-500); @@ -194,7 +213,7 @@ --node-component-slot-dot-outline: var(--color-white); --node-component-slot-text: var(--color-slate-200); --node-component-surface-highlight: var(--color-slate-100); - --node-component-surface-hovered: var(--color-charcoal-400); + --node-component-surface-hovered: var(--color-charcoal-600); --node-component-surface-selected: var(--color-charcoal-200); --node-component-surface: var(--color-charcoal-800); --node-component-tooltip: var(--color-white); @@ -202,16 +221,26 @@ --node-component-tooltip-surface: var(--color-charcoal-800); --node-component-widget-skeleton-surface: var(--color-zinc-800); --node-component-disabled: var(--color-alpha-charcoal-600-30); + --node-divider: var(--color-charcoal-500); --node-icon-disabled: var(--color-alpha-stone-100-20); --node-stroke: var(--color-stone-200); --node-stroke-selected: var(--color-pure-white); --node-stroke-error: var(--color-error); --node-stroke-executing: var(--color-blue-100); + --text-secondary: var(--color-slate-100); + --text-primary: var(--color-pure-white); + --input-surface: rgba(130, 130, 130, 0.1); } @theme inline { --color-backdrop: var(--backdrop); + --color-button-hover-surface: var(--button-hover-surface); + --color-button-active-surface: var(--button-active-surface); --color-dialog-surface: var(--dialog-surface); + --color-interface-panel-surface: var(--interface-panel-surface); + --color-interface-stroke: var(--interface-stroke); + --color-nav-background: var(--nav-background); + --color-node-border: var(--node-border); --color-node-component-border: var(--node-component-border); --color-node-component-executing: var(--node-component-executing); --color-node-component-header: var(--node-component-header); @@ -244,11 +273,15 @@ --node-component-widget-skeleton-surface ); --color-node-component-disabled: var(--node-component-disabled); + --color-node-divider: var(--node-divider); --color-node-icon-disabled: var(--node-icon-disabled); --color-node-stroke: var(--node-stroke); --color-node-stroke-selected: var(--node-stroke-selected); --color-node-stroke-error: var(--node-stroke-error); --color-node-stroke-executing: var(--node-stroke-executing); + --color-text-secondary: var(--text-secondary); + --color-text-primary: var(--text-primary); + --color-input-surface: var(--input-surface); } @custom-variant dark-theme { diff --git a/src/components/graph/CanvasModeSelector.vue b/src/components/graph/CanvasModeSelector.vue new file mode 100644 index 000000000..0644269e1 --- /dev/null +++ b/src/components/graph/CanvasModeSelector.vue @@ -0,0 +1,126 @@ + + + diff --git a/src/components/graph/GraphCanvasMenu.vue b/src/components/graph/GraphCanvasMenu.vue index f0f2d61d4..b4172cdcc 100644 --- a/src/components/graph/GraphCanvasMenu.vue +++ b/src/components/graph/GraphCanvasMenu.vue @@ -10,41 +10,15 @@ > - + - - - -
+
@@ -71,26 +45,26 @@ :style="stringifiedMinimapStyles.buttonStyles" @click="toggleModal" > - + {{ canvasStore.appScalePercentage }}% - + -
+
@@ -111,7 +85,7 @@ @click="() => commandStore.execute('Comfy.Canvas.ToggleLinkVisibility')" > @@ -131,8 +105,8 @@ import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions' import { useMinimap } from '@/renderer/extensions/minimap/composables/useMinimap' import { useCommandStore } from '@/stores/commandStore' -import { useWorkspaceStore } from '@/stores/workspaceStore' +import CanvasModeSelector from './CanvasModeSelector.vue' import ZoomControlsModal from './modals/ZoomControlsModal.vue' const { t } = useI18n() @@ -141,21 +115,16 @@ const { formatKeySequence } = useCommandStore() const canvasStore = useCanvasStore() const settingStore = useSettingStore() const canvasInteractions = useCanvasInteractions() -const workspaceStore = useWorkspaceStore() const minimap = useMinimap() const { isModalVisible, toggleModal, hideModal, hasActivePopup } = useZoomControls() const stringifiedMinimapStyles = computed(() => { - const buttonGroupKeys = ['backgroundColor', 'borderRadius', ''] - const buttonKeys = ['backgroundColor', 'borderRadius'] + const buttonGroupKeys = ['borderRadius'] + const buttonKeys = ['borderRadius'] const additionalButtonStyles = { - border: 'none', - width: '35px', - height: '35px', - 'margin-right': '2px', - 'margin-left': '2px' + border: 'none' } const containerStyles = minimap.containerStyles.value @@ -176,72 +145,56 @@ const stringifiedMinimapStyles = computed(() => { }) // Computed properties for reactive states -const isCanvasReadOnly = computed(() => canvasStore.canvas?.read_only ?? false) -const isCanvasUnlocked = computed(() => !isCanvasReadOnly.value) const linkHidden = computed( () => settingStore.get('Comfy.LinkRenderMode') === LiteGraph.HIDDEN_LINK ) // Computed properties for command text -const unlockCommandText = computed(() => - formatKeySequence( - commandStore.getCommand('Comfy.Canvas.Unlock') - ).toUpperCase() -) -const lockCommandText = computed(() => - formatKeySequence(commandStore.getCommand('Comfy.Canvas.Lock')).toUpperCase() -) const fitViewCommandText = computed(() => formatKeySequence( commandStore.getCommand('Comfy.Canvas.FitView') ).toUpperCase() ) -const focusCommandText = computed(() => +const minimapCommandText = computed(() => formatKeySequence( - commandStore.getCommand('Workspace.ToggleFocusMode') + commandStore.getCommand('Comfy.Canvas.ToggleMinimap') ).toUpperCase() ) // Computed properties for button classes and states -const selectButtonClass = computed(() => - isCanvasUnlocked.value - ? 'not-active:dark-theme:bg-[#262729]! not-active:bg-[#E7E6E6]!' - : '' -) - -const handButtonClass = computed(() => - isCanvasReadOnly.value - ? 'not-active:dark-theme:bg-[#262729]! not-active:bg-[#E7E6E6]!' - : '' -) - const zoomButtonClass = computed(() => [ - 'w-16!', - isModalVisible.value - ? 'not-active:dark-theme:bg-[#262729]! not-active:bg-[#E7E6E6]!' - : '', - 'dark-theme:hover:bg-[#262729]! hover:bg-[#E7E6E6]!' + 'bg-interface-panel-surface', + isModalVisible.value ? 'not-active:bg-button-active-surface!' : '', + 'hover:bg-button-hover-surface!', + 'p-0', + 'h-8', + 'w-15' ]) -const focusButtonClass = computed(() => ({ - 'dark-theme:hover:bg-[#262729]! hover:bg-[#E7E6E6]!': true, - 'not-active:dark-theme:bg-[#262729]! not-active:bg-[#E7E6E6]!': - workspaceStore.focusMode +const minimapButtonClass = computed(() => ({ + 'bg-interface-panel-surface': true, + 'hover:bg-button-hover-surface!': true, + 'not-active:bg-button-active-surface!': settingStore.get( + 'Comfy.Minimap.Visible' + ), + 'p-0': true, + 'w-8': true, + 'h-8': true })) // Computed properties for tooltip and aria-label texts -const selectTooltip = computed( - () => `${t('graphCanvasMenu.select')} (${unlockCommandText.value})` -) -const handTooltip = computed( - () => `${t('graphCanvasMenu.hand')} (${lockCommandText.value})` -) -const fitViewTooltip = computed( - () => `${t('graphCanvasMenu.fitView')} (${fitViewCommandText.value})` -) -const focusModeTooltip = computed( - () => `${t('graphCanvasMenu.focusMode')} (${focusCommandText.value})` -) +const fitViewTooltip = computed(() => { + const label = t('graphCanvasMenu.fitView') + const shortcut = fitViewCommandText.value + return shortcut ? `${label} (${shortcut})` : label +}) +const minimapTooltip = computed(() => { + const label = settingStore.get('Comfy.Minimap.Visible') + ? t('zoomControls.hideMinimap') + : t('zoomControls.showMinimap') + const shortcut = minimapCommandText.value + return shortcut ? `${label} (${shortcut})` : label +}) const linkVisibilityTooltip = computed(() => linkHidden.value ? t('graphCanvasMenu.showLinks') @@ -253,10 +206,12 @@ const linkVisibilityAriaLabel = computed(() => : t('graphCanvasMenu.hideLinks') ) const linkVisibleClass = computed(() => [ - linkHidden.value - ? 'not-active:dark-theme:bg-[#262729]! not-active:bg-[#E7E6E6]!' - : '', - 'dark-theme:hover:bg-[#262729]! hover:bg-[#E7E6E6]!' + 'bg-interface-panel-surface', + linkHidden.value ? 'not-active:bg-button-active-surface!' : '', + 'hover:bg-button-hover-surface!', + 'p-0', + 'w-8', + 'h-8' ]) onMounted(() => { @@ -267,19 +222,3 @@ onBeforeUnmount(() => { canvasStore.cleanupScaleSync() }) - - diff --git a/src/components/graph/SelectionToolbox.vue b/src/components/graph/SelectionToolbox.vue index 3fc0a661a..06626ab1e 100644 --- a/src/components/graph/SelectionToolbox.vue +++ b/src/components/graph/SelectionToolbox.vue @@ -7,11 +7,10 @@ @@ -65,7 +64,6 @@ import { useSelectionToolboxPosition } from '@/composables/canvas/useSelectionTo import { useSelectionState } from '@/composables/graph/useSelectionState' import { useCanvasStore } from '@/renderer/core/canvas/canvasStore' import { useCanvasInteractions } from '@/renderer/core/canvas/useCanvasInteractions' -import { useMinimap } from '@/renderer/extensions/minimap/composables/useMinimap' import { useExtensionService } from '@/services/extensionService' import { useCommandStore } from '@/stores/commandStore' import type { ComfyCommandImpl } from '@/stores/commandStore' @@ -78,8 +76,6 @@ const commandStore = useCommandStore() const canvasStore = useCanvasStore() const extensionService = useExtensionService() const canvasInteractions = useCanvasInteractions() -const minimap = useMinimap() -const containerStyles = minimap.containerStyles const toolboxRef = ref() const { visible } = useSelectionToolboxPosition(toolboxRef) diff --git a/src/components/graph/modals/ZoomControlsModal.vue b/src/components/graph/modals/ZoomControlsModal.vue index b4c9781a7..8170cdf95 100644 --- a/src/components/graph/modals/ZoomControlsModal.vue +++ b/src/components/graph/modals/ZoomControlsModal.vue @@ -1,118 +1,51 @@