diff --git a/packages/react/src/App.tsx b/packages/react/src/App.tsx
index 1a60154..4ba7358 100644
--- a/packages/react/src/App.tsx
+++ b/packages/react/src/App.tsx
@@ -33,6 +33,9 @@ import ComponentsDrawer, {
 import ComponentsLabel, {
   tableOfContents as componentsLabelToc,
 } from "./docs/components/Label.mdx";
+import ComponentsSwitch, {
+  tableOfContents as componentsSwitchToc,
+} from "./docs/components/Switch.mdx";
 import ComponentsTabs, {
   tableOfContents as componentsTabsToc,
 } from "./docs/components/Tabs.mdx";
@@ -191,6 +194,14 @@ const router = createBrowserRouter(
               </DynamicLayout>
             }
           />
+          <Route
+            path="switch"
+            element={
+              <DynamicLayout toc={componentsSwitchToc}>
+                <ComponentsSwitch components={overrideComponents} />
+              </DynamicLayout>
+            }
+          />
           <Route
             path="tabs"
             element={
diff --git a/packages/react/src/RouteObject.ts b/packages/react/src/RouteObject.ts
index b750445..d55ee47 100644
--- a/packages/react/src/RouteObject.ts
+++ b/packages/react/src/RouteObject.ts
@@ -55,6 +55,11 @@ export default {
         name: "Label",
         eq: (pathname: string) => pathname === "/docs/components/label"
       },
+      {
+        path: "/docs/components/switch",
+        name: "Switch",
+        eq: (pathname: string) => pathname === "/docs/components/switch"
+      },
       {
         path: "/docs/components/tabs",
         name: "Tabs",
diff --git a/packages/react/src/docs/components/Switch.mdx b/packages/react/src/docs/components/Switch.mdx
new file mode 100644
index 0000000..e60cf3f
--- /dev/null
+++ b/packages/react/src/docs/components/Switch.mdx
@@ -0,0 +1,40 @@
+import { TabProvider, TabTrigger, TabContent, TabList } from "@components/Tabs";
+import { Story } from "@/components/Story";
+import { LoadedCode, GITHUB } from "@/components/LoadedCode";
+import { SwitchDemo } from "./SwitchBlocks/Preview";
+
+# Switch
+Toggle between two states with a sleek design. Perfect for enabling/disabling options.
+
+<TabProvider defaultName="preview">
+    <TabList>
+        <TabTrigger name="preview">Preview</TabTrigger>
+        <TabTrigger name="code">Code</TabTrigger>
+    </TabList>
+    <TabContent name="preview">
+        <Story layout="centered">
+            <SwitchDemo />
+        </Story>
+    </TabContent>
+    <TabContent name="code">
+        <LoadedCode from={`${GITHUB}/packages/react/src/docs/components/SwitchBlocks/Preview.tsx`} />
+    </TabContent>
+</TabProvider>
+
+## Installation
+
+1. Create a new file `Switch.tsx` in your component folder.
+2. Copy and paste the following code into the file.
+
+<LoadedCode from={`${GITHUB}/packages/react/components/Switch.tsx`} />
+
+## Usage
+
+```tsx
+import { Switch } from "@components/Switch";
+```
+
+```html
+<Switch />
+```
+
diff --git a/packages/react/src/docs/components/SwitchBlocks/Preview.tsx b/packages/react/src/docs/components/SwitchBlocks/Preview.tsx
new file mode 100644
index 0000000..ccc389b
--- /dev/null
+++ b/packages/react/src/docs/components/SwitchBlocks/Preview.tsx
@@ -0,0 +1,5 @@
+import { Switch } from "@components/Switch";
+
+export function SwitchDemo() {
+  return <Switch />;
+}