From 2f67ad2fe33db63eda87898445d6612386e146be Mon Sep 17 00:00:00 2001 From: fullsizemalt <106900403+fullsizemalt@users.noreply.github.com> Date: Sat, 27 Dec 2025 15:06:47 -0800 Subject: [PATCH] fix: Restore RoomLayoutWizard with native select/slider and add Tabs component --- .../components/layout/RoomLayoutWizard.tsx | 37 ++++----- frontend/src/components/ui/tabs.tsx | 81 +++++++++++++++++++ 2 files changed, 98 insertions(+), 20 deletions(-) create mode 100644 frontend/src/components/ui/tabs.tsx diff --git a/frontend/src/components/layout/RoomLayoutWizard.tsx b/frontend/src/components/layout/RoomLayoutWizard.tsx index 29f4e61..cf30aea 100644 --- a/frontend/src/components/layout/RoomLayoutWizard.tsx +++ b/frontend/src/components/layout/RoomLayoutWizard.tsx @@ -3,10 +3,8 @@ import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogFooter } from ' import { Button } from '../ui/button'; import { Input } from '../ui/input'; import { Label } from '../ui/label'; -import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../ui/select'; -import { Slider } from '../ui/slider'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '../ui/tabs'; -import { api } from '../../lib/api'; +import api from '../../lib/api'; import { layoutApi } from '../../lib/layoutApi'; import { Loader2, Wand2, Box, Layers, Grid } from 'lucide-react'; @@ -84,20 +82,16 @@ export function RoomLayoutWizard({ isOpen, onClose, onSuccess, floorId }: RoomLa
- + + + + +
@@ -129,11 +123,14 @@ export function RoomLayoutWizard({ isOpen, onClose, onSuccess, floorId }: RoomLa {formData.racksCount} - setFormData({ ...formData, racksCount: val })} - min={1} max={20} step={1} - className="py-4" + setFormData({ ...formData, racksCount: parseInt(e.target.value) })} + className="w-full h-2 bg-zinc-700 rounded-lg appearance-none cursor-pointer accent-emerald-500" /> diff --git a/frontend/src/components/ui/tabs.tsx b/frontend/src/components/ui/tabs.tsx new file mode 100644 index 0000000..ca21711 --- /dev/null +++ b/frontend/src/components/ui/tabs.tsx @@ -0,0 +1,81 @@ +import * as React from "react" +import { cn } from "../../lib/utils" + +const TabsContext = React.createContext<{ value: string; onValueChange?: (v: string) => void } | null>(null) + +const Tabs = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes & { value: string; onValueChange?: (value: string) => void } +>(({ className, value, onValueChange, ...props }, ref) => ( + +
+ +)) +Tabs.displayName = "Tabs" + +const TabsList = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)) +TabsList.displayName = "TabsList" + +const TabsTrigger = React.forwardRef< + HTMLButtonElement, + React.ButtonHTMLAttributes & { value: string } +>(({ className, value, onClick, ...props }, ref) => { + const context = React.useContext(TabsContext) + const isActive = context?.value === value + + return ( +