diff --git a/src/Index.tsx b/src/Index.tsx
index 34b515e..56f52ad 100644
--- a/src/Index.tsx
+++ b/src/Index.tsx
@@ -1,7 +1,10 @@
-import { useEffect, useState } from "react";
import ShapeCanvas from "@/components/canvas/ShapeCanvas";
+import PresetSelector from "@/components/controls/PresetSelector";
+import { Slider } from "@/components/ui/slider";
import { useShapeState } from "@/hooks/useShapeState";
+import { useEffect, useState } from "react";
import Layout from "./Layout";
+import { cn } from "./lib/utils";
function Index() {
const [dimensions, setDimensions] = useState({
@@ -26,8 +29,34 @@ function Index() {
const [state, setState] = useShapeState(centerX, centerY);
+ const sidebarContent = (
+
+
+
Shape
+
setState({ ...state, preset })} />
+
+
+
+ Roundness
+
+ setState({ ...state, roundness: v })}
+ className={state.preset === "circle" ? "opacity-50 pointer-events-none" : ""}
+ />
+
+
+ );
+
return (
- controls here>}>
+
);
diff --git a/src/components/controls/PresetSelector.tsx b/src/components/controls/PresetSelector.tsx
new file mode 100644
index 0000000..eb5f689
--- /dev/null
+++ b/src/components/controls/PresetSelector.tsx
@@ -0,0 +1,31 @@
+import { Button } from "@/components/ui/button";
+import type { Preset } from "@/types/shape";
+
+const presets: { value: Preset; label: string }[] = [
+ { value: "triangle", label: "Triangle" },
+ { value: "square", label: "Square" },
+ { value: "circle", label: "Circle" },
+];
+
+export default function PresetSelector({
+ value,
+ onChange,
+}: {
+ value: Preset;
+ onChange: (preset: Preset) => void;
+}) {
+ return (
+
+ {presets.map((preset) => (
+
+ ))}
+
+ );
+}
diff --git a/src/components/ui/button.tsx b/src/components/ui/button.tsx
index 846eda8..a881f32 100644
--- a/src/components/ui/button.tsx
+++ b/src/components/ui/button.tsx
@@ -9,7 +9,7 @@ const buttonVariants = cva(
{
variants: {
variant: {
- default: "bg-primary text-primary-foreground hover:bg-primary/90",
+ default: "bg-primary text-primary-foreground hover:bg-primary/90 border border-primary",
destructive:
"bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
outline: