diff --git a/COMPONENT_INDEX.md b/COMPONENT_INDEX.md
index e2fd91f0..b0b7e881 100644
--- a/COMPONENT_INDEX.md
+++ b/COMPONENT_INDEX.md
@@ -3216,6 +3216,7 @@ None.
| :-------- | :--------------- | :------- | :------------------- | ------------------ | ------------------------------------------ |
| isOpen | let
| Yes | boolean
| false
| Set to `true` to toggle the expanded state |
| fixed | let
| No | boolean
| false
| Set to `true` to use the fixed variant |
+| rail | let
| No | boolean
| false
| Set to `true` to use the rail variant |
| ariaLabel | let
| No | string
| -- | Specify the ARIA label for the nav |
### Slots
diff --git a/docs/src/COMPONENT_API.json b/docs/src/COMPONENT_API.json
index 117368d0..9bb03b8f 100644
--- a/docs/src/COMPONENT_API.json
+++ b/docs/src/COMPONENT_API.json
@@ -8477,6 +8477,16 @@
"constant": false,
"reactive": false
},
+ {
+ "name": "rail",
+ "kind": "let",
+ "description": "Set to `true` to use the rail variant",
+ "type": "boolean",
+ "value": "false",
+ "isFunction": false,
+ "constant": false,
+ "reactive": false
+ },
{
"name": "ariaLabel",
"kind": "let",
diff --git a/docs/src/pages/components/UIShell.svx b/docs/src/pages/components/UIShell.svx
index 76bd3b76..a8b46c00 100644
--- a/docs/src/pages/components/UIShell.svx
+++ b/docs/src/pages/components/UIShell.svx
@@ -36,6 +36,12 @@ The hamburger menu will automatically be rendered if the `SideNav` component is
+### Header with side navigation (rail)
+
+Set `rail` to `true` on `SideNav` to use the rail variant.
+
+
+
### Header with app switcher
The `HeaderAction` component uses the [transition:slide API](https://svelte.dev/docs#slide); you can customize the transition duration, delay, and easing with the `transition` prop.
diff --git a/docs/src/pages/framed/UIShell/HeaderNavRail.svelte b/docs/src/pages/framed/UIShell/HeaderNavRail.svelte
new file mode 100644
index 00000000..e5b7c20e
--- /dev/null
+++ b/docs/src/pages/framed/UIShell/HeaderNavRail.svelte
@@ -0,0 +1,65 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Welcome
+
+
+
+
diff --git a/src/UIShell/SideNav/SideNav.svelte b/src/UIShell/SideNav/SideNav.svelte
index c6599986..a8b0804e 100644
--- a/src/UIShell/SideNav/SideNav.svelte
+++ b/src/UIShell/SideNav/SideNav.svelte
@@ -8,6 +8,9 @@
/** Set to `true` to use the fixed variant */
export let fixed = false;
+ /** Set to `true` to use the rail variant */
+ export let rail = false;
+
/**
* Specify the ARIA label for the nav
* @type {string}
@@ -46,8 +49,9 @@
class:bx--side-nav__navigation="{true}"
class:bx--side-nav="{true}"
class:bx--side-nav--ux="{true}"
- class:bx--side-nav--expanded="{isOpen}"
- class:bx--side-nav--collapsed="{!isOpen}"
+ class:bx--side-nav--expanded="{isOpen && !rail}"
+ class:bx--side-nav--collapsed="{!isOpen && !rail}"
+ class:bx--side-nav--rail="{rail}"
{...$$restProps}
>
diff --git a/types/UIShell/SideNav/SideNav.d.ts b/types/UIShell/SideNav/SideNav.d.ts
index 4663c9fb..83790d44 100644
--- a/types/UIShell/SideNav/SideNav.d.ts
+++ b/types/UIShell/SideNav/SideNav.d.ts
@@ -9,6 +9,12 @@ export interface SideNavProps
*/
fixed?: boolean;
+ /**
+ * Set to `true` to use the rail variant
+ * @default false
+ */
+ rail?: boolean;
+
/**
* Specify the ARIA label for the nav
*/