123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- import state, { useSelector } from "state"
- import styled from "styles"
- import { Menu } from "react-feather"
-
- export default function Toolbar() {
- const activeTool = useSelector((state) =>
- state.whenIn({
- selecting: "select",
- creatingDot: "dot",
- creatingCircle: "circle",
- creatingEllipse: "ellipse",
- creatingRay: "ray",
- creatingLine: "line",
- creatingPolyline: "polyline",
- creatingRectangle: "rectangle",
- })
- )
-
- return (
- <ToolbarContainer>
- <Section>
- <Button>
- <Menu />
- </Button>
- <Button
- isSelected={activeTool === "select"}
- onClick={() => state.send("SELECTED_SELECT_TOOL")}
- >
- Select
- </Button>
- <Button
- isSelected={activeTool === "dot"}
- onClick={() => state.send("SELECTED_DOT_TOOL")}
- >
- Dot
- </Button>
- <Button
- isSelected={activeTool === "circle"}
- onClick={() => state.send("SELECTED_CIRCLE_TOOL")}
- >
- Circle
- </Button>
- <Button
- isSelected={activeTool === "ellipse"}
- onClick={() => state.send("SELECTED_ELLIPSE_TOOL")}
- >
- Ellipse
- </Button>
- <Button
- isSelected={activeTool === "ray"}
- onClick={() => state.send("SELECTED_RAY_TOOL")}
- >
- Ray
- </Button>
- <Button
- isSelected={activeTool === "line"}
- onClick={() => state.send("SELECTED_LINE_TOOL")}
- >
- Line
- </Button>
- <Button
- isSelected={activeTool === "polyline"}
- onClick={() => state.send("SELECTED_POLYLINE_TOOL")}
- >
- Polyline
- </Button>
- <Button
- isSelected={activeTool === "rectangle"}
- onClick={() => state.send("SELECTED_RECTANGLE_TOOL")}
- >
- Rectangle
- </Button>
- </Section>
- </ToolbarContainer>
- )
- }
-
- const ToolbarContainer = styled("div", {
- position: "absolute",
- top: 0,
- left: 0,
- width: "100%",
- height: 40,
- userSelect: "none",
- borderBottom: "1px solid black",
- gridArea: "status",
- display: "grid",
- gridTemplateColumns: "auto 1fr auto",
- alignItems: "center",
- backgroundColor: "white",
- gap: 8,
- fontSize: "$1",
- zIndex: 200,
- })
-
- const Section = styled("div", {
- whiteSpace: "nowrap",
- overflow: "hidden",
- display: "flex",
- })
-
- const Button = styled("button", {
- display: "flex",
- alignItems: "center",
- cursor: "pointer",
- font: "$ui",
- fontSize: "$ui",
- height: "40px",
- borderRadius: 0,
- border: "none",
- padding: "0 12px",
- background: "none",
- "&:hover": {
- backgroundColor: "$hint",
- },
- "& svg": {
- height: 16,
- width: 16,
- },
- variants: {
- isSelected: {
- true: {
- color: "$selected",
- },
- false: {},
- },
- },
- })
|