{label}
-{isManualBoolean ? 'Switch to selector' : 'Switch to manual value'}
-
diff --git a/packages/emcn/src/components/icon-switch/icon-switch.test.tsx b/packages/emcn/src/components/icon-switch/icon-switch.test.tsx
new file mode 100644
index 00000000000..569ec48d82a
--- /dev/null
+++ b/packages/emcn/src/components/icon-switch/icon-switch.test.tsx
@@ -0,0 +1,138 @@
+/** @vitest-environment jsdom */
+import { act, useState } from 'react'
+import { ChipModalField, IconSwitch } from '@sim/emcn'
+import { Code, List } from '@sim/emcn/icons'
+import { createRoot, type Root } from 'react-dom/client'
+import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
+
+const OPTIONS = [
+ { value: 'selector', label: 'Selector', icon: List },
+ { value: 'variable', label: 'Variable', icon: Code },
+] as const
+
+interface HarnessProps {
+ disabled?: boolean
+ showTooltips?: boolean
+ inModalField?: boolean
+ onValueChange: (value: string) => void
+}
+
+function Harness({ disabled, showTooltips, inModalField, onValueChange }: HarnessProps) {
+ const [value, setValue] = useState('selector')
+ const toggle = (
+