टॉगल
टूलबार स्वरूपण, म्यूट और पिन नियंत्रणों के लिए दो-स्थिति वाला ऑन/ऑफ बटन — नियोब्रूटलिस्ट बॉर्डर्स-एंड-शैडोज़ ट्रीटमेंट के साथ।
import { BookmarkIcon } from "lucide-react"
import { Toggle } from "@/components/ui/toggle"टॉगल दो-स्थिति वाला बटन है — दबा हुआ या नहीं — और अपनी चालू स्थिति दोबारा क्लिक होने तक दिखाता रहता है। यह Base UI Toggle कंपोनेंट पर बना है और नियोब्रूटलिस्ट रेसिपी के अनुसार स्टाइल किया गया है: मोटे बॉर्डर, कठोर छायाएँ और बोल्ड टाइपोग्राफ़ी।
इसे इन स्थितियों में चुनें:
- एडिटर फ़ॉर्मैटिंग — टेक्स्ट एडिटर टूलबार में बोल्ड, इटैलिक और अंडरलाइन बटन।
- एक-एक चालू/बंद क्रिया — म्यूट, फ़ेवरेट, पिन, फ़ॉलो; दबी हुई स्थिति ही स्थिति-सूचक का काम भी कर देती है।
- व्यू विकल्प — ग्रिड दिखाएँ, लाइन रैप करें, स्प्लिट व्यू; कई को साथ रखकर Toggle Group बना लें।
इंस्टॉलेशन#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/toggle.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/toggle.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/toggle.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/toggle.json
निम्नलिखित डिपेंडेंसीज़ इंस्टॉल करें:
pnpm add @base-ui/reactnpm install @base-ui/reactyarn add @base-ui/reactbun add @base-ui/react
नीचे दिए गए कोड को कॉपी करके अपने प्रोजेक्ट में पेस्ट करें।
"use client"
import * as React from "react"
import { cva, type VariantProps } from "class-variance-authority"
import { Toggle as TogglePrimitive } from "radix-ui"
import { cn } from "@/lib/utils"
const toggleVariants = cva(
"group/toggle inline-flex items-center justify-center gap-1 rounded border-2 text-sm font-head font-medium whitespace-nowrap shadow-sm transition-all outline-none hover:bg-accent hover:text-accent-foreground hover:translate-y-0.5 active:translate-y-1 active:shadow-none focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-pressed:bg-primary aria-pressed:text-primary-foreground data-[state=on]:bg-primary data-[state=on]:text-primary-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
{
variants: {
variant: {
default: "bg-background",
outline: "bg-background",
},
size: {
default:
"h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
sm: "h-7 min-w-7 rounded-[min(var(--radius-md),12px)] px-2.5 text-[0.8rem] has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
lg: "h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2",
},
},
defaultVariants: {
variant: "default",
size: "default",
},
}
)
function Toggle({
className,
variant = "default",
size = "default",
...props
}: React.ComponentProps<typeof TogglePrimitive.Root> &
VariantProps<typeof toggleVariants>) {
return (
<TogglePrimitive.Root
data-slot="toggle"
className={cn(toggleVariants({ variant, size, className }))}
{...props}
/>
)
}
export { Toggle, toggleVariants }
इंपोर्ट पाथ को अपने प्रोजेक्ट सेटअप के अनुसार अपडेट करें।
उपयोग#
import { Toggle } from "@/components/ui/toggle"<Toggle>Toggle</Toggle>उदाहरण#
Outline#
आउटलाइन स्टाइल के लिए variant="outline" का उपयोग करें।
import { BoldIcon, ItalicIcon } from "lucide-react"
import { Toggle } from "@/components/ui/toggle"टेक्स्ट के साथ#
import { ItalicIcon } from "lucide-react"
import { Toggle } from "@/components/ui/toggle"आकार#
टॉगल का आकार बदलने के लिए size प्रॉप का उपयोग करें।
import { Toggle } from "@/components/ui/toggle"
export function ToggleSizes() {अक्षम#
import { Toggle } from "@/components/ui/toggle"
export function ToggleDisabled() {RTL#
Neobrutalism में RTL समर्थन सक्षम करने के लिए, RTL कॉन्फ़िगरेशन गाइड देखें।
"use client"
import * as React from "react"एक्सेसिबिलिटी#
टॉगल WAI-ARIA Button पैटर्न के टॉगल-बटन रूप का पालन करता है: यह मौजूदा स्थिति दिखाने वाले aria-pressed के साथ एक नेटिव <button> रेंडर करता है, इसलिए स्क्रीन रीडर इसे "pressed" या "not pressed" के रूप में घोषित करते हैं। ध्यान रखें कि सिर्फ़-आइकन टॉगल पर aria-label मौजूद हो।
कीबोर्ड इंटरैक्शन:
| कुंजी | क्रिया |
|---|---|
Tab / Shift + Tab | फ़ोकस टॉगल पर लाएँ / उससे हटाएँ |
Space / Enter | दबी हुई स्थिति टॉगल करें |
API रेफ़रेंस#
Base UI Toggle डॉक्युमेंटेशन देखें।