UI logoUIUI Components

Roller Shades

Roller shades control with position slider

Living Room
Roller Shades
OpenClose
"use client"import * as React from "react"import {    Card,    CardContent,    CardDescription,    CardFooter,    CardHeader,    CardTitle,} from "@/components/ui/card"import { Slider } from "@/components/ui/slider"import { ToggleGroup, ToggleGroupItem } from "@/components/ui/toggle-group"export function RollerShades() {    const [position, setPosition] = React.useState([50])    const preset =        position[0] <= 10 ? "open" : position[0] >= 90 ? "closed" : "half"    return (        <Card>            <CardHeader>                <CardTitle>Living Room</CardTitle>                <CardDescription>Roller Shades</CardDescription>            </CardHeader>            <CardContent className="flex flex-col gap-4">                <div className="flex h-32 flex-col overflow-hidden rounded-lg border bg-muted">                    <div                        className="bg-muted-foreground transition-all duration-300"                        style={{ height: `${position[0]}%` }}                    />                </div>                <div className="flex items-center gap-3">                    <span className="text-xs font-medium tracking-wider text-muted-foreground uppercase">                        Open                    </span>                    <Slider                        value={position}                        onValueChange={setPosition}                        max={100}                        className="flex-1"                    />                    <span className="text-xs font-medium tracking-wider text-muted-foreground uppercase">                        Close                    </span>                </div>            </CardContent>            <CardFooter>                <ToggleGroup                    type="single"                    value={preset}                    onValueChange={(value) => {                        if (value === "open") setPosition([0])                        if (value === "half") setPosition([50])                        if (value === "closed") setPosition([100])                    }}                    variant="outline"                    spacing={1}                    className="w-full"                >                    <ToggleGroupItem value="open" className="flex-1">                        Open                    </ToggleGroupItem>                    <ToggleGroupItem value="half" className="flex-1">                        Half                    </ToggleGroupItem>                    <ToggleGroupItem value="closed" className="flex-1">                        Closed                    </ToggleGroupItem>                </ToggleGroup>            </CardFooter>        </Card>    )}