Toggle Group
gymnopedies/toggle-groupFreeComponent
Toggle Group — gymnopédies-themed shadcn primitive.
Install it
npx shadcn@latest add https://gymnopedies.shoota.work/r/toggle-group.jsonSource
1import * as React from "react"2import { Toggle as TogglePrimitive } from "@base-ui/react/toggle"3import { ToggleGroup as ToggleGroupPrimitive } from "@base-ui/react/toggle-group"4import { type VariantProps } from "class-variance-authority"56import { cn } from "@/lib/utils"7import { toggleVariants } from "@/components/ui/toggle"89const ToggleGroupContext = React.createContext<10 VariantProps<typeof toggleVariants> & {11 spacing?: number12 orientation?: "horizontal" | "vertical"13 }14>({15 size: "default",16 variant: "default",17 spacing: 0,18 orientation: "horizontal",19})2021function ToggleGroup({22 className,23 variant,24 size,25 spacing = 0,26 orientation = "horizontal",27 children,28 ...props29}: ToggleGroupPrimitive.Props &30 VariantProps<typeof toggleVariants> & {31 spacing?: number32 orientation?: "horizontal" | "vertical"33 }) {34 return (35 <ToggleGroupPrimitive36 data-slot="toggle-group"37 data-variant={variant}38 data-size={size}39 data-spacing={spacing}40 data-orientation={orientation}41 style={{ "--gap": spacing } as React.CSSProperties}42 className={cn(43 "group/toggle-group flex w-fit flex-row items-center gap-[--spacing(var(--gap))] rounded-lg data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-vertical:flex-col data-vertical:items-stretch",44 className45 )}46 {...props}47 >48 <ToggleGroupContext.Provider49 value={{ variant, size, spacing, orientation }}50 >51 {children}52 </ToggleGroupContext.Provider>53 </ToggleGroupPrimitive>54 )55}5657function ToggleGroupItem({58 className,59 children,60 variant = "default",61 size = "default",62 ...props63}: TogglePrimitive.Props & VariantProps<typeof toggleVariants>) {64 const context = React.useContext(ToggleGroupContext)6566 return (67 <TogglePrimitive68 data-slot="toggle-group-item"69 data-variant={context.variant || variant}70 data-size={context.size || size}71 data-spacing={context.spacing}72 className={cn(73// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from gymnopedies
All 49 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Accordionaccordion | gymnopedies | Components | Free | 2 deps | |
| Alertalert | gymnopedies | Components | Free | 1 dep | |
| Alert Dialogalert-dialog | gymnopedies | Components | Free | 1 dep | |
| Articlearticle | gymnopedies | Components | Free | no deps | |
| Aspect Ratioaspect-ratio | gymnopedies | Components | Free | no deps | |
| Avataravatar | gymnopedies | Components | Free | 1 dep | |
| Badgebadge | gymnopedies | Components | Free | 2 deps | |
| Breadcrumbbreadcrumb | gymnopedies | Components | Free | 2 deps |
