editor-sidebar.tsx 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import React from 'react'
  2. import { Panel, PanelGroup } from 'react-resizable-panels'
  3. import { VerticalResizeHandle } from '@/features/ide-react/components/resize/vertical-resize-handle'
  4. import { FileTree } from '@/features/ide-react/components/file-tree'
  5. import {
  6. FileTreeDeleteHandler,
  7. FileTreeSelectHandler,
  8. } from '@/features/ide-react/types/file-tree'
  9. type EditorSidebarProps = {
  10. shouldPersistLayout: boolean
  11. onFileTreeInit: () => void
  12. onFileTreeSelect: FileTreeSelectHandler
  13. onFileTreeDelete: FileTreeDeleteHandler
  14. }
  15. export default function EditorSidebar({
  16. shouldPersistLayout,
  17. onFileTreeInit,
  18. onFileTreeSelect,
  19. onFileTreeDelete,
  20. }: EditorSidebarProps) {
  21. return (
  22. <>
  23. <aside className="ide-react-editor-sidebar">
  24. <PanelGroup
  25. autoSaveId={
  26. shouldPersistLayout ? 'ide-react-editor-sidebar-layout' : undefined
  27. }
  28. direction="vertical"
  29. >
  30. <Panel defaultSize={75} className="ide-react-file-tree-panel">
  31. <FileTree
  32. onInit={onFileTreeInit}
  33. onSelect={onFileTreeSelect}
  34. onDelete={onFileTreeDelete}
  35. />
  36. </Panel>
  37. <VerticalResizeHandle />
  38. <Panel defaultSize={25}>
  39. <div className="outline-container" />
  40. </Panel>
  41. </PanelGroup>
  42. </aside>
  43. </>
  44. )
  45. }