diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectButton.test.ts b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectButton.test.ts index 52cfe11986..9eb13dd2ae 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectButton.test.ts +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetSelectButton.test.ts @@ -107,10 +107,14 @@ describe('WidgetSelectButton Button Selection', () => { const selectedButton = buttons[1] // 'banana' const unselectedButton = buttons[0] // 'apple' - expect(selectedButton.classes()).toContain('bg-white') - expect(selectedButton.classes()).toContain('text-neutral-900') - expect(unselectedButton.classes()).not.toContain('bg-white') - expect(unselectedButton.classes()).not.toContain('text-neutral-900') + expect(selectedButton.classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(selectedButton.classes()).toContain('text-primary') + expect(unselectedButton.classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(unselectedButton.classes()).toContain('text-secondary') }) it('handles no selection gracefully', () => { @@ -120,8 +124,10 @@ describe('WidgetSelectButton Button Selection', () => { const buttons = wrapper.findAll('button') buttons.forEach((button) => { - expect(button.classes()).not.toContain('bg-white') - expect(button.classes()).not.toContain('text-neutral-900') + expect(button.classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(button.classes()).toContain('text-secondary') }) }) @@ -134,13 +140,19 @@ describe('WidgetSelectButton Button Selection', () => { // Initially 'first' is selected let buttons = wrapper.findAll('button') - expect(buttons[0].classes()).toContain('bg-white') + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // Update to 'second' await wrapper.setProps({ modelValue: 'second' }) buttons = wrapper.findAll('button') - expect(buttons[0].classes()).not.toContain('bg-white') - expect(buttons[1].classes()).toContain('bg-white') + expect(buttons[0].classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(buttons[1].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) }) }) @@ -222,7 +234,9 @@ describe('WidgetSelectButton Button Selection', () => { expect(buttons[2].text()).toBe('3') // The selected button should be the one with '2' - expect(buttons[1].classes()).toContain('bg-white') + expect(buttons[1].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('handles object options with label and value', () => { @@ -240,7 +254,9 @@ describe('WidgetSelectButton Button Selection', () => { expect(buttons[2].text()).toBe('Third Option') // 'second' should be selected - expect(buttons[1].classes()).toContain('bg-white') + expect(buttons[1].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('emits correct values for object options', async () => { @@ -277,7 +293,9 @@ describe('WidgetSelectButton Button Selection', () => { const buttons = wrapper.findAll('button') expect(buttons).toHaveLength(4) - expect(buttons[0].classes()).toContain('bg-white') // Empty string is selected + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // Empty string is selected }) it('handles null/undefined in options', () => { @@ -292,7 +310,9 @@ describe('WidgetSelectButton Button Selection', () => { const buttons = wrapper.findAll('button') expect(buttons).toHaveLength(4) - expect(buttons[0].classes()).toContain('bg-white') + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('handles very long option text', () => { @@ -313,7 +333,9 @@ describe('WidgetSelectButton Button Selection', () => { const buttons = wrapper.findAll('button') expect(buttons).toHaveLength(20) - expect(buttons[4].classes()).toContain('bg-white') // option5 is at index 4 + expect(buttons[4].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // option5 is at index 4 }) it('handles duplicate options', () => { @@ -324,8 +346,12 @@ describe('WidgetSelectButton Button Selection', () => { const buttons = wrapper.findAll('button') expect(buttons).toHaveLength(4) // Both 'duplicate' buttons should be highlighted (due to value matching) - expect(buttons[0].classes()).toContain('bg-white') - expect(buttons[2].classes()).toContain('bg-white') + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(buttons[2].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) }) }) @@ -354,7 +380,9 @@ describe('WidgetSelectButton Button Selection', () => { const buttons = wrapper.findAll('button') const unselectedButton = buttons[1] // 'option2' - expect(unselectedButton.classes()).toContain('hover:bg-zinc-200/50') + expect(unselectedButton.classes()).toContain( + 'hover:bg-interface-menu-component-surface-hovered' + ) expect(unselectedButton.classes()).toContain('cursor-pointer') }) }) diff --git a/src/renderer/extensions/vueNodes/widgets/components/audio/AudioPreviewPlayer.vue b/src/renderer/extensions/vueNodes/widgets/components/audio/AudioPreviewPlayer.vue index 730c79956d..9c2632d777 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/audio/AudioPreviewPlayer.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/audio/AudioPreviewPlayer.vue @@ -24,17 +24,14 @@ role="button" :tabindex="0" aria-label="Play/Pause" - class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-black/10 dark-theme:hover:bg-white/10" + class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered" @click="togglePlayPause" > - + @@ -44,11 +41,9 @@ -
+
- +
@@ -94,12 +86,10 @@ role="button" :tabindex="0" aria-label="More Options" - class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-black/10 dark-theme:hover:bg-white/10" + class="flex size-6 cursor-pointer items-center justify-center rounded hover:bg-interface-menu-component-surface-hovered" @click="toggleOptionsMenu" > - +
diff --git a/src/renderer/extensions/vueNodes/widgets/components/form/FormSelectButton.test.ts b/src/renderer/extensions/vueNodes/widgets/components/form/FormSelectButton.test.ts index eb337aabff..0e4f9d9da3 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/form/FormSelectButton.test.ts +++ b/src/renderer/extensions/vueNodes/widgets/components/form/FormSelectButton.test.ts @@ -124,10 +124,16 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('option2', options) const buttons = wrapper.findAll('button') - expect(buttons[1].classes()).toContain('bg-white') - expect(buttons[1].classes()).toContain('text-neutral-900') - expect(buttons[0].classes()).not.toContain('bg-white') - expect(buttons[2].classes()).not.toContain('bg-white') + expect(buttons[1].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(buttons[1].classes()).toContain('text-primary') + expect(buttons[0].classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(buttons[2].classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) }) }) @@ -159,8 +165,10 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('200', options) const buttons = wrapper.findAll('button') - expect(buttons[1].classes()).toContain('bg-white') - expect(buttons[1].classes()).toContain('text-neutral-900') + expect(buttons[1].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(buttons[1].classes()).toContain('text-primary') }) }) @@ -201,9 +209,15 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('md', options) const buttons = wrapper.findAll('button') - expect(buttons[1].classes()).toContain('bg-white') // Medium - expect(buttons[0].classes()).not.toContain('bg-white') - expect(buttons[2].classes()).not.toContain('bg-white') + expect(buttons[1].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // Medium + expect(buttons[0].classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(buttons[2].classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('handles objects without value field', () => { @@ -216,7 +230,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') expect(buttons[0].text()).toBe('First') expect(buttons[1].text()).toBe('Second') - expect(buttons[0].classes()).toContain('bg-white') + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('handles objects without label field', () => { @@ -253,8 +269,12 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('first_id', options, { optionValue: 'id' }) const buttons = wrapper.findAll('button') - expect(buttons[0].classes()).toContain('bg-white') - expect(buttons[1].classes()).not.toContain('bg-white') + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(buttons[1].classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('emits custom optionValue when clicked', async () => { @@ -301,7 +321,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') buttons.forEach((button) => { - expect(button.classes()).not.toContain('hover:bg-zinc-200/50') + expect(button.classes()).not.toContain( + 'hover:bg-interface-menu-component-surface-hovered' + ) expect(button.classes()).not.toContain('cursor-pointer') }) }) @@ -311,7 +333,9 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('option1', options, { disabled: true }) const buttons = wrapper.findAll('button') - expect(buttons[0].classes()).not.toContain('bg-white') // Selected styling disabled + expect(buttons[0].classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) // Selected styling disabled expect(buttons[0].classes()).toContain('opacity-50') expect(buttons[0].classes()).toContain('text-secondary') }) @@ -324,7 +348,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') buttons.forEach((button) => { - expect(button.classes()).not.toContain('bg-white') + expect(button.classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) }) }) @@ -334,7 +360,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') buttons.forEach((button) => { - expect(button.classes()).not.toContain('bg-white') + expect(button.classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) }) }) @@ -343,8 +371,12 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('', options) const buttons = wrapper.findAll('button') - expect(buttons[0].classes()).toContain('bg-white') // Empty string is selected - expect(buttons[1].classes()).not.toContain('bg-white') + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // Empty string is selected + expect(buttons[1].classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('compares values as strings', () => { @@ -352,7 +384,9 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('1', options) const buttons = wrapper.findAll('button') - expect(buttons[0].classes()).toContain('bg-white') // '1' matches number 1 as string + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // '1' matches number 1 as string }) }) @@ -362,8 +396,10 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('option1', options) const selectedButton = wrapper.findAll('button')[0] - expect(selectedButton.classes()).toContain('bg-white') - expect(selectedButton.classes()).toContain('text-neutral-900') + expect(selectedButton.classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(selectedButton.classes()).toContain('text-primary') }) it('applies unselected styling to inactive options', () => { @@ -380,7 +416,9 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('option1', options, { disabled: false }) const unselectedButton = wrapper.findAll('button')[1] - expect(unselectedButton.classes()).toContain('hover:bg-zinc-200/50') + expect(unselectedButton.classes()).toContain( + 'hover:bg-interface-menu-component-surface-hovered' + ) expect(unselectedButton.classes()).toContain('cursor-pointer') }) }) @@ -403,7 +441,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') expect(buttons[0].text()).toBe('@#$%^&*()') - expect(buttons[0].classes()).toContain('bg-white') + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('handles unicode characters in options', () => { @@ -412,7 +452,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') expect(buttons[0].text()).toBe('🎨 Art') - expect(buttons[0].classes()).toContain('bg-white') + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('handles duplicate option values', () => { @@ -420,9 +462,15 @@ describe('FormSelectButton Core Component', () => { const wrapper = mountComponent('duplicate', duplicateOptions) const buttons = wrapper.findAll('button') - expect(buttons[0].classes()).toContain('bg-white') - expect(buttons[2].classes()).toContain('bg-white') // Both duplicates selected - expect(buttons[1].classes()).not.toContain('bg-white') + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) + expect(buttons[2].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // Both duplicates selected + expect(buttons[1].classes()).not.toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('handles mixed type options safely', () => { @@ -436,7 +484,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') expect(buttons).toHaveLength(4) - expect(buttons[1].classes()).toContain('bg-white') // Number 123 as string + expect(buttons[1].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // Number 123 as string }) it('handles objects with missing properties gracefully', () => { @@ -450,7 +500,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') expect(buttons).toHaveLength(4) - expect(buttons[2].classes()).toContain('bg-white') + expect(buttons[2].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) }) it('handles large number of options', () => { @@ -462,7 +514,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') expect(buttons).toHaveLength(50) - expect(buttons[24].classes()).toContain('bg-white') // Option 25 at index 24 + expect(buttons[24].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // Option 25 at index 24 }) it('fallback to index when all object properties are missing', () => { @@ -474,7 +528,9 @@ describe('FormSelectButton Core Component', () => { const buttons = wrapper.findAll('button') expect(buttons).toHaveLength(2) - expect(buttons[0].classes()).toContain('bg-white') // Falls back to index 0 + expect(buttons[0].classes()).toContain( + 'bg-interface-menu-component-surface-selected' + ) // Falls back to index 0 }) }) diff --git a/src/renderer/extensions/vueNodes/widgets/components/form/FormSelectButton.vue b/src/renderer/extensions/vueNodes/widgets/components/form/FormSelectButton.vue index 633c18a62a..3745bc6029 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/form/FormSelectButton.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/form/FormSelectButton.vue @@ -16,14 +16,14 @@ 'bg-transparent border-none', 'text-center text-xs font-normal', { - 'bg-white': isSelected(option) && !disabled, - 'hover:bg-zinc-200/50': !isSelected(option) && !disabled, + 'bg-interface-menu-component-surface-selected': + isSelected(option) && !disabled, + 'hover:bg-interface-menu-component-surface-hovered': + !isSelected(option) && !disabled, 'opacity-50 cursor-not-allowed': disabled, 'cursor-pointer': !disabled }, - isSelected(option) && !disabled - ? 'text-neutral-900' - : 'text-secondary' + isSelected(option) && !disabled ? 'text-primary' : 'text-secondary' ) " :disabled="disabled" diff --git a/src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdownMenuFilter.vue b/src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdownMenuFilter.vue index a0dd111991..db8fc9cff3 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdownMenuFilter.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/form/dropdown/FormDropdownMenuFilter.vue @@ -11,7 +11,7 @@ const filterSelected = defineModel('filterSelected')