You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

editor.tsx 1.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import useKeyboardEvents from "hooks/useKeyboardEvents"
  2. import useLoadOnMount from "hooks/useLoadOnMount"
  3. import Canvas from "./canvas/canvas"
  4. import StatusBar from "./status-bar"
  5. import Toolbar from "./toolbar"
  6. import CodePanel from "./code-panel/code-panel"
  7. import ControlsPanel from "./controls-panel/controls-panel"
  8. import styled from "styles"
  9. export default function Editor() {
  10. useKeyboardEvents()
  11. useLoadOnMount()
  12. return (
  13. <Layout>
  14. <Canvas />
  15. <StatusBar />
  16. <Toolbar />
  17. <LeftPanels>
  18. <CodePanel />
  19. <ControlsPanel />
  20. </LeftPanels>
  21. </Layout>
  22. )
  23. }
  24. const Layout = styled("div", {
  25. position: "fixed",
  26. top: 0,
  27. left: 0,
  28. bottom: 0,
  29. right: 0,
  30. display: "grid",
  31. gridTemplateRows: "40px 1fr 40px",
  32. gridTemplateColumns: "auto 1fr",
  33. gridTemplateAreas: `
  34. "toolbar toolbar"
  35. "leftPanels main"
  36. "statusbar statusbar"
  37. `,
  38. })
  39. const LeftPanels = styled("main", {
  40. display: "grid",
  41. gridArea: "leftPanels",
  42. gridTemplateRows: "1fr auto",
  43. padding: 8,
  44. gap: 8,
  45. })