Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

editor.tsx 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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. import StylePanel from "./style-panel/style-panel"
  10. export default function Editor() {
  11. useKeyboardEvents()
  12. useLoadOnMount()
  13. return (
  14. <Layout>
  15. <Canvas />
  16. <StatusBar />
  17. <Toolbar />
  18. <LeftPanels>
  19. <CodePanel />
  20. <ControlsPanel />
  21. </LeftPanels>
  22. <RightPanels>
  23. <StylePanel />
  24. </RightPanels>
  25. </Layout>
  26. )
  27. }
  28. const Layout = styled("div", {
  29. position: "fixed",
  30. top: 0,
  31. left: 0,
  32. bottom: 0,
  33. right: 0,
  34. display: "grid",
  35. gridTemplateRows: "40px 1fr 40px",
  36. gridTemplateColumns: "minmax(50%, 400px) 1fr auto",
  37. gridTemplateAreas: `
  38. "toolbar toolbar toolbar"
  39. "leftPanels main rightPanels"
  40. "statusbar statusbar statusbar"
  41. `,
  42. })
  43. const LeftPanels = styled("main", {
  44. display: "grid",
  45. gridArea: "leftPanels",
  46. gridTemplateRows: "1fr auto",
  47. padding: 8,
  48. gap: 8,
  49. })
  50. const RightPanels = styled("main", {
  51. display: "grid",
  52. gridArea: "rightPanels",
  53. gridTemplateRows: "auto",
  54. height: "fit-content",
  55. justifyContent: "flex-end",
  56. padding: 8,
  57. gap: 8,
  58. })