{"id":24734607,"url":"https://github.com/devbookhq/splitter","last_synced_at":"2025-05-16T09:04:44.778Z","repository":{"id":46284333,"uuid":"341019855","full_name":"devbookhq/splitter","owner":"devbookhq","description":"React component for building split views like in VS Code","archived":false,"fork":false,"pushed_at":"2023-08-24T03:26:16.000Z","size":13237,"stargazers_count":446,"open_issues_count":12,"forks_count":31,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-05-11T15:02:52.634Z","etag":null,"topics":["devbook","javascript","react","resize","split","typescript"],"latest_commit_sha":null,"homepage":"https://usedevbook.com","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/devbookhq.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-21T22:39:13.000Z","updated_at":"2025-04-17T07:45:49.000Z","dependencies_parsed_at":"2024-06-18T17:39:13.185Z","dependency_job_id":"294f0033-4305-4906-b3cb-346083fa8978","html_url":"https://github.com/devbookhq/splitter","commit_stats":{"total_commits":89,"total_committers":4,"mean_commits":22.25,"dds":0.0674157303370787,"last_synced_commit":"1dee86514dbd62cc02e48d676a92342720bbdff8"},"previous_names":["devbookhq/react-split"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devbookhq%2Fsplitter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devbookhq%2Fsplitter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devbookhq%2Fsplitter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/devbookhq%2Fsplitter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/devbookhq","download_url":"https://codeload.github.com/devbookhq/splitter/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254501557,"owners_count":22081528,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["devbook","javascript","react","resize","split","typescript"],"created_at":"2025-01-27T19:39:01.949Z","updated_at":"2025-05-16T09:04:39.760Z","avatar_url":"https://github.com/devbookhq.png","language":"TypeScript","readme":"# Splitter\nSplitter is a React component that allows you to split views into resizable panels. Similar to tabs in Visual Studio Code, for example.\nHere's a gif of what you can build with Splitter:\n![](example.gif)\n\nSplitter is inspired by [Split.js](https://split.js.org/) and written as 100% functional component:\n- All size calculation is done through CSS using `calc` with minimal JS. This makes it much faster\n- Fully responsive\n- No dependencies beside React\n- Minimal assumptions about your styling and views\n\n[CodeSandbox project](https://codesandbox.io/s/devbookhqspliiter-example-l23s4)\n\n## Installing\n```\nnpm install @devbookhq/splitter\n# or\nyarn add @devbookhq/splitter\n```\n\n## Usage\n\n### Horizontal split\n```tsx\nimport Splitter, { SplitDirection } from '@devbookhq/splitter'\n\nfunction MyComponent() {\n  return (\n    \u003cSplitter\u003e\n      \u003cdiv\u003eTile 1\u003c/div\u003e\n      \u003cdiv\u003eTile 2\u003c/div\u003e\n    \u003c/Splitter\u003e\n  );\n}\n```\n\n### Vertical split\n```tsx\nimport Splitter, { SplitDirection } from '@devbookhq/splitter'\n\nfunction MyComponent() {\n  return (\n    \u003cSplitter direction={SplitDirection.Vertical}\u003e\n      \u003cdiv\u003eTile 1\u003c/div\u003e\n      \u003cdiv\u003eTile 2\u003c/div\u003e\n    \u003c/Splitter\u003e\n  );\n}\n```\n\n### Nested split\n```tsx\nimport Splitter, { SplitDirection } from '@devbookhq/splitter'\n\nfunction MyComponent() {\n  return (\n    \u003cSplitter direction={SplitDirection.Vertical}\u003e\n      \u003cdiv\u003eTile 1\u003c/div\u003e\n      \u003cSplitter direction={SplitDirection.Horizontal}\u003e\n        \u003cdiv\u003eTile 2\u003c/div\u003e\n        \u003cSplitter direction={SplitDirection.Vertical}\u003e\n          \u003cdiv\u003eTile 3\u003c/div\u003e\n          \u003cdiv\u003eTile 4\u003c/div\u003e\n        \u003c/Splitter\u003e\n      \u003c/Splitter\u003e\n    \u003c/Splitter\u003e\n  );\n}\n```\n\n### Get sizes of tiles\n```tsx\nimport Splitter, { SplitDirection } from '@devbookhq/splitter'\n\nfunction MyComponent() {\n  function handleResizeStarted(gutterIdx: number) {\n    console.log('Resize started!', gutterIdx);\n  }\n  function handleResizeFinished(gutterIdx: number, newSizes: number[]) {\n    console.log('Resize finished!', gutterIdx, newSizes);\n  }\n\n  return (\n    \u003cSplitter\n      direction={SplitDirection.Vertical}\n      onResizeStarted={handleResizeStarted}\n      onResizeFinished={handleResizeFinished}\n    \u003e\n      \u003cdiv\u003eTile 1\u003c/div\u003e\n      \u003cdiv\u003eTile 2\u003c/div\u003e\n    \u003c/Splitter\u003e\n  );\n}\n```\n\nTo see more examples check out the [examples](#Example) section.\n\n## Examples\nCheck the [`example`](./example/src/App.tsx) folder or the [CodeSandbox project](https://codesandbox.io/s/devbookhqspliiter-example-l23s4).\n- [Horizontal](./example/src/HorizontalSplit/index.tsx)\n- [Vertical](./example/src/VerticalSplit/index.tsx)\n- [Nested](./example/src/NestedSplit/index.tsx)\n- [Styled gutter](./example/src/StyledGutter/index.tsx)\n- [Minimal tile size](./example/src/MinSize/index.tsx)\n- [Initial tile sizes](./example/src/InitialSizes/index.tsx)\n- [Scrollable tiles](./example/src/ScrollableChildren/index.tsx)\n- [Get sizes of tiles](./example/src/OnDidResize/index.tsx)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevbookhq%2Fsplitter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdevbookhq%2Fsplitter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdevbookhq%2Fsplitter/lists"}