diff --git a/client/web/assets/svg/24x24-bounds-16x16-icon/zoom-in.svg b/client/web/assets/svg/24x24-bounds-16x16-icon/zoom-in.svg
new file mode 100644
index 00000000..e5e66ad4
--- /dev/null
+++ b/client/web/assets/svg/24x24-bounds-16x16-icon/zoom-in.svg
@@ -0,0 +1,6 @@
+
diff --git a/client/web/assets/svg/24x24-bounds-16x16-icon/zoom-out.svg b/client/web/assets/svg/24x24-bounds-16x16-icon/zoom-out.svg
new file mode 100644
index 00000000..96507c7c
--- /dev/null
+++ b/client/web/assets/svg/24x24-bounds-16x16-icon/zoom-out.svg
@@ -0,0 +1,5 @@
+
diff --git a/client/web/assets/svg/24x24-bounds-16x16-icon/zoom-reset.svg b/client/web/assets/svg/24x24-bounds-16x16-icon/zoom-reset.svg
new file mode 100644
index 00000000..da488359
--- /dev/null
+++ b/client/web/assets/svg/24x24-bounds-16x16-icon/zoom-reset.svg
@@ -0,0 +1,5 @@
+
diff --git a/client/web/src/components/panels/Document.vue b/client/web/src/components/panels/Document.vue
index c9c17a2d..5b808012 100644
--- a/client/web/src/components/panels/Document.vue
+++ b/client/web/src/components/panels/Document.vue
@@ -30,7 +30,12 @@
-
+
+
+
+
+
+
@@ -188,6 +193,7 @@ import ShelfItem from "../widgets/ShelfItem.vue";
import ItemDivider from "../widgets/ItemDivider.vue";
import IconButton from "../widgets/IconButton.vue";
import DropdownButton from "../widgets/DropdownButton.vue";
+import NumberInput from "../widgets/NumberInput.vue";
import SwapButton from "../../../assets/svg/16x16-bounds-12x12-icon/swap.svg";
import ResetColorsButton from "../../../assets/svg/16x16-bounds-12x12-icon/reset-colors.svg";
import SelectTool from "../../../assets/svg/24x24-bounds-24x24-icon/document-tool-layout-select.svg";
@@ -224,6 +230,9 @@ import BooleanSubtractFront from "../../../assets/svg/24x24-bounds-16x16-icon/bo
import BooleanSubtractBack from "../../../assets/svg/24x24-bounds-16x16-icon/boolean-subtract-back.svg";
import BooleanIntersect from "../../../assets/svg/24x24-bounds-16x16-icon/boolean-intersect.svg";
import BooleanDifference from "../../../assets/svg/24x24-bounds-16x16-icon/boolean-difference.svg";
+import ZoomReset from "../../../assets/svg/24x24-bounds-16x16-icon/zoom-reset.svg";
+import ZoomIn from "../../../assets/svg/24x24-bounds-16x16-icon/zoom-in.svg";
+import ZoomOut from "../../../assets/svg/24x24-bounds-16x16-icon/zoom-out.svg";
const wasm = import("../../../wasm/pkg");
@@ -235,6 +244,7 @@ export default defineComponent({
ItemDivider,
IconButton,
DropdownButton,
+ NumberInput,
SwapButton,
ResetColorsButton,
SelectTool,
@@ -271,6 +281,9 @@ export default defineComponent({
BooleanSubtractBack,
BooleanIntersect,
BooleanDifference,
+ ZoomReset,
+ ZoomIn,
+ ZoomOut,
},
methods: {
async canvasMouseDown(e: MouseEvent) {
diff --git a/client/web/src/components/widgets/NumberInput.vue b/client/web/src/components/widgets/NumberInput.vue
new file mode 100644
index 00000000..79a768d7
--- /dev/null
+++ b/client/web/src/components/widgets/NumberInput.vue
@@ -0,0 +1,93 @@
+
+
+
+
+
+
+
+
+
+
+