{"_id":"@agencecinq/windowsplitter","_rev":"7-a9af52abc04ed047fa20d4a8f40ef5da","name":"@agencecinq/windowsplitter","dist-tags":{"latest":"3.0.0"},"versions":{"1.0.0":{"name":"@agencecinq/windowsplitter","version":"1.0.0","author":{"url":"https://agencecinq.com","name":"Jérémy Levron","email":"jeremy@agencecinq.com"},"license":"MIT","_id":"@agencecinq/windowsplitter@1.0.0","maintainers":[{"name":"19h47","email":"jeremylevron@19h47.fr"}],"homepage":"https://github.com/agencecinq/shopify#readme","bugs":{"url":"https://github.com/agencecinq/shopify/issues"},"dist":{"shasum":"86e66e7d1d6d6f0216295807f50ffdb821fd67e9","tarball":"https://registry.npmjs.org/@agencecinq/windowsplitter/-/windowsplitter-1.0.0.tgz","fileCount":9,"integrity":"sha512-yEFszFfIJRzZh+vaKGOSot0jMuDQPr5eYo4PHJE265V4DpQDb2/p6JZMPbLCsRY7W7junUa9FoKfzhamUrc9wA==","signatures":[{"sig":"MEUCICKxb/Ywd28Y6vKaTeASmhVVqdEZTWshEY1VqyXOKXPoAiEAt9UVRhGqz7zYdGoIs32mI18HXeh7D/XaVMLM/NMsc/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20950},"main":"./dist/index.js","type":"module","_from":"file:agencecinq-windowsplitter-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","build":"vite build"},"_npmUser":{"name":"19h47","email":"jeremylevron@19h47.fr"},"_resolved":"/private/var/folders/vt/kpbgrh4d7k14zvxmcm01bfxh0000gn/T/4176a8a618a29ba70e884874a16f38fe/agencecinq-windowsplitter-1.0.0.tgz","_integrity":"sha512-yEFszFfIJRzZh+vaKGOSot0jMuDQPr5eYo4PHJE265V4DpQDb2/p6JZMPbLCsRY7W7junUa9FoKfzhamUrc9wA==","repository":{"url":"git+https://github.com/agencecinq/shopify.git","type":"git","directory":"packages/windowsplitter"},"_npmVersion":"11.18.0","description":"Accessible WAI-ARIA window splitter as a lightweight Web Component.","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","vite-plugin-dts":"^5.0.3","@agencecinq/utils":"5.0.6"},"peerDependencies":{"@agencecinq/utils":"*"},"_npmOperationalInternal":{"tmp":"tmp/windowsplitter_1.0.0_1784278765492_0.15111130153880925","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@agencecinq/windowsplitter","version":"1.0.1","author":{"url":"https://agencecinq.com","name":"Jérémy Levron","email":"jeremy@agencecinq.com"},"license":"MIT","_id":"@agencecinq/windowsplitter@1.0.1","maintainers":[{"name":"19h47","email":"jeremylevron@19h47.fr"}],"homepage":"https://github.com/agencecinq/shopify#readme","bugs":{"url":"https://github.com/agencecinq/shopify/issues"},"dist":{"shasum":"1c862268a6ddee77290668d7b9a15d2411de86a2","tarball":"https://registry.npmjs.org/@agencecinq/windowsplitter/-/windowsplitter-1.0.1.tgz","fileCount":9,"integrity":"sha512-QAhCY0wWJySBAXgFulGLCnH/ptHrq2PqTKuVACXbh9l5AWSrXZF2HavfMBPT3/i+eWOsZnkp2P7pBxbjqN3sVg==","signatures":[{"sig":"MEYCIQCndSczVlEGRk6lr+lESQfq38+QNOe3nj5kdMXLw+u52QIhAKkZtvyO1xNKJC5KT2MHIUx/bdpgTcVhnqM7n1P5KWZr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21083},"main":"./dist/index.js","type":"module","_from":"file:agencecinq-windowsplitter-1.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","build":"vite build"},"_npmUser":{"name":"19h47","email":"jeremylevron@19h47.fr"},"_resolved":"/private/var/folders/vt/kpbgrh4d7k14zvxmcm01bfxh0000gn/T/af9d97e8bd0df1b21e4186d14856e7ac/agencecinq-windowsplitter-1.0.1.tgz","_integrity":"sha512-QAhCY0wWJySBAXgFulGLCnH/ptHrq2PqTKuVACXbh9l5AWSrXZF2HavfMBPT3/i+eWOsZnkp2P7pBxbjqN3sVg==","repository":{"url":"git+https://github.com/agencecinq/shopify.git","type":"git","directory":"packages/windowsplitter"},"_npmVersion":"11.18.0","description":"Accessible WAI-ARIA window splitter as a lightweight Web Component.","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","vite-plugin-dts":"^5.0.3","@agencecinq/utils":"5.1.0"},"peerDependencies":{"@agencecinq/utils":"*"},"_npmOperationalInternal":{"tmp":"tmp/windowsplitter_1.0.1_1784557079080_0.43218738940113033","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@agencecinq/windowsplitter","version":"1.0.2","author":{"url":"https://agencecinq.com","name":"Jérémy Levron","email":"jeremy@agencecinq.com"},"license":"MIT","_id":"@agencecinq/windowsplitter@1.0.2","maintainers":[{"name":"19h47","email":"jeremylevron@19h47.fr"}],"homepage":"https://github.com/agencecinq/shopify#readme","bugs":{"url":"https://github.com/agencecinq/shopify/issues"},"dist":{"shasum":"51ec7f50118df96139dd85e9fb2ff7f4bacb429d","tarball":"https://registry.npmjs.org/@agencecinq/windowsplitter/-/windowsplitter-1.0.2.tgz","fileCount":9,"integrity":"sha512-ZNZuko6BICGgzVq8quWp/+1kxOJircXGqUcYmo+035nwG0Id8SOJyDCn6nqWQwyLZA82HTjBNKaqsK2e3kcVsg==","signatures":[{"sig":"MEUCIFeBmpNJA30LH6zEoi7OCGBPzRG0zwzijuh36XpJR4BIAiEAy9/OY+ZQlMh1kLnouY4eUaWbR0e7P5ouBYY9ZehPMbk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21044},"main":"./dist/index.js","type":"module","_from":"file:agencecinq-windowsplitter-1.0.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","build":"vite build"},"_npmUser":{"name":"19h47","email":"jeremylevron@19h47.fr"},"_resolved":"/private/var/folders/vt/kpbgrh4d7k14zvxmcm01bfxh0000gn/T/480b1fb350e4698c065276439df16521/agencecinq-windowsplitter-1.0.2.tgz","_integrity":"sha512-ZNZuko6BICGgzVq8quWp/+1kxOJircXGqUcYmo+035nwG0Id8SOJyDCn6nqWQwyLZA82HTjBNKaqsK2e3kcVsg==","repository":{"url":"git+https://github.com/agencecinq/shopify.git","type":"git","directory":"packages/windowsplitter"},"_npmVersion":"11.18.0","description":"Accessible WAI-ARIA window splitter as a lightweight Web Component.","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","vite-plugin-dts":"^5.0.3","@agencecinq/utils":"5.1.1"},"peerDependencies":{"@agencecinq/utils":"*"},"_npmOperationalInternal":{"tmp":"tmp/windowsplitter_1.0.2_1784612354709_0.26250850912708024","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@agencecinq/windowsplitter","version":"2.0.0","author":{"url":"https://agencecinq.com","name":"Jérémy Levron","email":"jeremy@agencecinq.com"},"license":"MIT","_id":"@agencecinq/windowsplitter@2.0.0","maintainers":[{"name":"19h47","email":"jeremylevron@19h47.fr"}],"homepage":"https://github.com/agencecinq/shopify#readme","bugs":{"url":"https://github.com/agencecinq/shopify/issues"},"dist":{"shasum":"fc5ee7ad3ffbffed7b2c38ea1405be06d6609c01","tarball":"https://registry.npmjs.org/@agencecinq/windowsplitter/-/windowsplitter-2.0.0.tgz","fileCount":11,"integrity":"sha512-tJNeQNWWFN1ZAdXlQCH0PAxS5RlIodqZ+HaNrxw1Dl/2rvAnlAUMZD0mvdsIGF8Cw1LKzY/AdNs6fzhZFkD/0A==","signatures":[{"sig":"MEQCIHc7H9p4atgn6EDgpnGoqO7cstMY13q3vVw52rpdTmO3AiAQoqJ6SOt1ubGanFVC88afeFJD/sYVwxf+bbXjlwuFzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24035},"main":"./dist/index.js","type":"module","_from":"file:agencecinq-windowsplitter-2.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","build":"vite build"},"_npmUser":{"name":"19h47","email":"jeremylevron@19h47.fr"},"_resolved":"/private/var/folders/vt/kpbgrh4d7k14zvxmcm01bfxh0000gn/T/a04b35f3d87ca459084ce68330ab44ef/agencecinq-windowsplitter-2.0.0.tgz","_integrity":"sha512-tJNeQNWWFN1ZAdXlQCH0PAxS5RlIodqZ+HaNrxw1Dl/2rvAnlAUMZD0mvdsIGF8Cw1LKzY/AdNs6fzhZFkD/0A==","repository":{"url":"git+https://github.com/agencecinq/shopify.git","type":"git","directory":"packages/windowsplitter"},"_npmVersion":"11.18.0","description":"Accessible WAI-ARIA window splitter as a lightweight Web Component.","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.1.4","vite-plugin-dts":"^5.0.3","@agencecinq/utils":"5.2.0"},"peerDependencies":{"@agencecinq/utils":"*"},"_npmOperationalInternal":{"tmp":"tmp/windowsplitter_2.0.0_1784619161706_0.2669901276538771","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@agencecinq/windowsplitter","version":"2.0.1","author":{"url":"https://agencecinq.com","name":"Jérémy Levron","email":"jeremy@agencecinq.com"},"license":"MIT","_id":"@agencecinq/windowsplitter@2.0.1","maintainers":[{"name":"19h47","email":"jeremylevron@19h47.fr"}],"homepage":"https://github.com/agencecinq/shopify#readme","bugs":{"url":"https://github.com/agencecinq/shopify/issues"},"dist":{"shasum":"2c559503e5e633c3bb1c2f2a9aeb32993cd2163d","tarball":"https://registry.npmjs.org/@agencecinq/windowsplitter/-/windowsplitter-2.0.1.tgz","fileCount":11,"integrity":"sha512-rpw0fTsrFXPsHCriOBTYuP3WpW4kBXmeDKcVUq3t1tzhUzSJ0k4YbmKj9KSrbuH7Zcgp3Aalzn556umuyEJ26Q==","signatures":[{"sig":"MEYCIQCExPLZX5V3zVWBerErdXCOHgJcspmSnNYcfY5HTlL6nAIhAO9awyfL8J6NDvC6Af/xon4g8ZK3/AAWOAcRuF7WMqyu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":23151},"main":"./dist/index.js","type":"module","_from":"file:agencecinq-windowsplitter-2.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","build":"vite build"},"_npmUser":{"name":"19h47","email":"jeremylevron@19h47.fr"},"_resolved":"/private/var/folders/vt/kpbgrh4d7k14zvxmcm01bfxh0000gn/T/174e2b67043c81bc07c867a322823b54/agencecinq-windowsplitter-2.0.1.tgz","_integrity":"sha512-rpw0fTsrFXPsHCriOBTYuP3WpW4kBXmeDKcVUq3t1tzhUzSJ0k4YbmKj9KSrbuH7Zcgp3Aalzn556umuyEJ26Q==","repository":{"url":"git+https://github.com/agencecinq/shopify.git","type":"git","directory":"packages/windowsplitter"},"_npmVersion":"11.18.0","description":"Accessible WAI-ARIA window splitter as a lightweight Web Component.","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","vite-plugin-dts":"^5.0.3","@agencecinq/utils":"6.1.0"},"peerDependencies":{"@agencecinq/utils":"*"},"_npmOperationalInternal":{"tmp":"tmp/windowsplitter_2.0.1_1786088910265_0.5187017615079883","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@agencecinq/windowsplitter","version":"3.0.0","author":{"url":"https://agencecinq.com","name":"Jérémy Levron","email":"jeremy@agencecinq.com"},"license":"MIT","_id":"@agencecinq/windowsplitter@3.0.0","maintainers":[{"name":"19h47","email":"jeremylevron@19h47.fr"}],"homepage":"https://github.com/agencecinq/shopify#readme","bugs":{"url":"https://github.com/agencecinq/shopify/issues"},"dist":{"shasum":"79f4d9229aa97f0b1c25086ef5934dd773d562e0","tarball":"https://registry.npmjs.org/@agencecinq/windowsplitter/-/windowsplitter-3.0.0.tgz","fileCount":11,"integrity":"sha512-1WETzhwrPJPQfcAk88kRbvVHN5zmcsg2hFDb2Gus5tDx8irkp+NT61YaNTg98T9/JenNRwwBpQjI2f5MaFeP6A==","signatures":[{"sig":"MEYCIQDZJSPIvEGB65F3oq4YZGMgMhRTjKtAnawppvJPH4SBSwIhAI6K/A1bGqLTaOBLh7JecQdvsqrqzIDxQWmhVpIt/LRT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22912},"main":"./dist/index.js","type":"module","_from":"file:agencecinq-windowsplitter-3.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"vite build --watch","build":"vite build"},"_npmUser":{"name":"19h47","email":"jeremylevron@19h47.fr"},"_resolved":"/private/var/folders/vt/kpbgrh4d7k14zvxmcm01bfxh0000gn/T/33e04079d7bba8ccb260257dedd9482f/agencecinq-windowsplitter-3.0.0.tgz","_integrity":"sha512-1WETzhwrPJPQfcAk88kRbvVHN5zmcsg2hFDb2Gus5tDx8irkp+NT61YaNTg98T9/JenNRwwBpQjI2f5MaFeP6A==","repository":{"url":"git+https://github.com/agencecinq/shopify.git","type":"git","directory":"packages/windowsplitter"},"_npmVersion":"11.19.1","description":"Accessible WAI-ARIA window splitter as a lightweight Web Component.","directories":{},"_nodeVersion":"22.22.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.0","vite-plugin-dts":"^5.0.3","@agencecinq/utils":"7.1.0"},"peerDependencies":{"@agencecinq/utils":"*"},"_npmOperationalInternal":{"tmp":"tmp/windowsplitter_3.0.0_1788171627291_0.6035182585322298","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-07-17T08:59:25.393Z","modified":"2026-09-15T13:10:37.834Z","1.0.0":"2026-07-17T08:59:25.623Z","1.0.1":"2026-07-20T14:17:59.228Z","1.0.2":"2026-07-21T05:39:14.850Z","2.0.0":"2026-07-21T07:32:41.824Z","2.0.1":"2026-08-07T07:48:30.406Z","3.0.0":"2026-08-31T10:20:27.421Z"},"bugs":{"url":"https://github.com/agencecinq/shopify/issues"},"author":{"url":"https://agencecinq.com","name":"Jérémy Levron","email":"jeremy@agencecinq.com"},"license":"MIT","homepage":"https://github.com/agencecinq/shopify#readme","repository":{"url":"git+https://github.com/agencecinq/shopify.git","type":"git","directory":"packages/windowsplitter"},"description":"Accessible WAI-ARIA window splitter as a lightweight Web Component.","maintainers":[{"email":"jeremylevron@19h47.fr","name":"19h47"},{"email":"pauline@agencecinq.com","name":"paulinecinq"}],"readme":"[![](https://img.shields.io/npm/v/@agencecinq/windowsplitter)](https://www.npmjs.com/package/@agencecinq/windowsplitter)\n[![](https://img.shields.io/npm/dm/@agencecinq/windowsplitter)](https://www.npmjs.com/package/@agencecinq/windowsplitter)\n\n# @agencecinq/windowsplitter\n\n> Accessible, WAI-ARIA window splitter as a lightweight Web Component.\n\nA window splitter lets users resize a primary pane with a focusable separator.\n`<cinq-windowsplitter>` is the **layout wrapper** (bounds + CSS custom\nproperties). A nested `[role=\"separator\"]` (or `slider`) is the interactive\ncontrol. You deliver clean markup. The component wires pointer / keyboard\nresizing and mirrors layout onto the primary pane.\n\nImplementation follows the\n[WAI-ARIA Authoring Practices window splitter pattern](https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/).\nInspired by [`@19h47/windowsplitter`](https://github.com/19h47/19h47-windowsplitter).\n\n## Installation\n\n```bash\npnpm add @agencecinq/windowsplitter\n```\n\n## Usage\n\n```js\nimport \"@agencecinq/windowsplitter\";\n```\n\n```html\n<cinq-windowsplitter class=\"panes\">\n  <div id=\"toc\" class=\"pane pane--primary\" style=\"width: 30%\">\n    <strong id=\"toc-label\">Table of Contents</strong>\n  </div>\n  <div\n    role=\"separator\"\n    tabindex=\"0\"\n    aria-orientation=\"vertical\"\n    aria-valuemin=\"0\"\n    aria-valuemax=\"100\"\n    aria-valuenow=\"30\"\n    aria-controls=\"toc\"\n    aria-labelledby=\"toc-label\"\n  ></div>\n  <div class=\"pane pane--secondary\">Content</div>\n</cinq-windowsplitter>\n```\n\n> **HTML is the source of truth.** ARIA values, orientation, labelling, and\n> `aria-controls` live on the separator. The component will not auto-set `role`,\n> auto-migrate attributes, or warn about missing labels. Use an a11y linter\n> (axe-core, Lighthouse) to catch invalid markup.\n\nThe primary pane is resolved live via\n[`ariaControlsElements`](https://developer.mozilla.org/en-US/docs/Web/API/Element/ariaControlsElements)\non the separator.\n\n### Required markup\n\n| Selector / attribute | Required | Role |\n| -------------------- | -------- | ---- |\n| `<cinq-windowsplitter>` | **Yes** | Layout wrapper / bounds container. |\n| Nested `[role=\"separator\"]` or `[role=\"slider\"]` | **Yes** | Focusable control (`$separator`). |\n| `tabindex=\"0\"` | **Yes** | On the separator. |\n| `aria-orientation` | **Yes** | On the separator: `vertical` or `horizontal`. |\n| `aria-valuemin` / `aria-valuemax` / `aria-valuenow` | **Yes** | On the separator. |\n| `aria-controls` | **Yes** (for `resize` / `clip`) | On the separator: id of the primary pane. |\n| `aria-label` / `aria-labelledby` | **Yes** | On the separator. |\n\n### Options\n\n| Attribute / property | Description |\n| -------------------- | ----------- |\n| `data-mode` | `resize` (default) \\| `clip` \\| `none` |\n| `data-step` | Arrow key step (default `1`) |\n| `data-page` | Page / Shift+Arrow step (default `10`) |\n| `data-fixed` | Enter / pointer toggle only |\n| `disabled` / `aria-disabled` | Disable interaction (host and/or separator) |\n| `formatSize` | `FormatSize`: CSS size for the primary pane in `resize` mode |\n| `formatValue` | `FormatValue`: `aria-valuetext` formatter |\n\n### API\n\n| Method | Description |\n| ------ | ----------- |\n| `setValue(value, trigger?)` | Set `aria-valuenow` on the separator and update layout. |\n| `collapse(trigger?)` / `restore(trigger?)` / `toggle(trigger?)` | Collapse helpers (`history` only from `collapse` / Enter). |\n| `sync()` | Re-read ARIA and re-apply layout. |\n| `destroy()` | Removes listeners and observers. Called automatically from `disconnectedCallback`. |\n\n| Property | Description |\n| -------- | ----------- |\n| `$separator` | Focusable separator control. |\n| `$primary` | Primary pane from `ariaControlsElements` (live). |\n| `value` / `min` / `max` / `ratio` / `orientation` | Read from separator ARIA (HTML source of truth). |\n| `collapsed` / `disabled` | Derived state. |\n| `mode` / `step` / `page` / `fixed` | Options (also via data attributes). |\n| `formatSize` / `formatValue` | Formatters. |\n\n## Events\n\nDispatched on the **host** `<cinq-windowsplitter>` (bubble). Prefer constants\nfrom `@agencecinq/utils`:\n\n| Event | Constant | Detail | When |\n| ----- | -------- | ------ | ---- |\n| `windowsplitter:change` | `WINDOWSPLITTER_CHANGE` | `{ value, min, max, ratio, collapsed }` | After a user-driven (or `trigger: true`) value change |\n\n```js\nimport { EVENTS } from \"@agencecinq/utils\";\n\nconst host = document.querySelector(\"cinq-windowsplitter\");\n\nhost.addEventListener(EVENTS.WINDOWSPLITTER_CHANGE, ({ detail }) => {\n  console.log(detail.value, detail.collapsed);\n});\n```\n\n## Styling hooks\n\n| Hook | When |\n| ---- | ---- |\n| `[collapsed]` | Primary pane at `aria-valuemin` (on the host) |\n| `[dragging]` | Pointer drag in progress (on the host) |\n| `[disabled]` / `[aria-disabled=\"true\"]` | Interaction disabled |\n| `:focus-visible` on `[role=\"separator\"]` | Keyboard focus on the separator |\n| `--value` / `--ratio` / `--offset` | On the host |\n\n## Keyboard\n\n| Key | Function |\n| --- | -------- |\n| `ArrowLeft` / `ArrowRight` | Move a **vertical** splitter |\n| `ArrowUp` / `ArrowDown` | Move a **horizontal** splitter |\n| `Enter` | Collapse / restore |\n| `Home` / `End` | Jump to min / max |\n| `PageUp` / `PageDown` | Step by `page` |\n| `Shift` + Arrow | Step by `page` |\n\nA fixed splitter (`data-fixed`) omits arrow keys and only\nimplements Enter (and pointer toggle).\n\n## Build setup\n\n```bash\npnpm -C packages/windowsplitter build\n```\n\n## Acknowledgments\n\n- [Window Splitter Pattern (WAI-ARIA Practices)](https://www.w3.org/WAI/ARIA/apg/patterns/windowsplitter/)\n- [`@19h47/windowsplitter`](https://github.com/19h47/19h47-windowsplitter): original implementation\n\nSee the [interactive docs](https://agencecinq.github.io/ui/components/windowsplitter/) for live examples.\n","readmeFilename":"README.md"}