MicroClub Radio Group
mcoli-ui-registry/mc-radio-groupFreeComponent
A radio group component for MicroClub UI
Live preview
live · rendered by the registry
Rendered by mcoli-ui-registry on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://mcoli-ui.microclub.info/r/mc-radio-group.jsonSource
1'use client';23import * as React from 'react';4import { Radio as RadioPrimitive } from '@base-ui/react/radio';5import { RadioGroup as RadioGroupPrimitive } from '@base-ui/react/radio-group';6import { cva, type VariantProps } from 'class-variance-authority';78import { cn } from '@/lib/utils';910const radioGroupVariants = cva(11 'peer relative flex shrink-0 items-center justify-center rounded-full border transition-colors outline-none disabled:cursor-not-allowed disabled:pointer-events-none disabled:opacity-50',12 {13 variants: {14 size: {15 sm: 'size-4 [&_[data-slot=radio-group-indicator]>span]:size-2',16 md: 'size-5 [&_[data-slot=radio-group-indicator]>span]:size-2.5',17 },18 },19 defaultVariants: {20 size: 'sm',21 },22 }23);2425const radioGroupItemVariants = cva('inline-flex', {26 variants: {27 size: {28 sm: 'gap-2',29 md: 'gap-3',30 },31 },32 defaultVariants: {33 size: 'sm',34 },35});3637const textVariants = cva('font-medium transition-colors', {38 variants: {39 size: {40 sm: 'text-sm',41 md: 'text-base',42 },43 disabled: {44 true: 'text-muted-foreground',45 false: 'text-foreground',46 },47 },48 defaultVariants: {49 size: 'sm',50 disabled: false,51 },52});5354const supportTextVariants = cva('font-regular', {55 variants: {56 size: {57 sm: 'text-sm',58 md: 'text-base',59 },60 disabled: {61 true: 'text-muted-foreground',62 false: 'text-foreground',63 },64 },65 defaultVariants: {66 size: 'sm',67 disabled: false,68 },69});7071function McRadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {72 return (73 <RadioGroupPrimitive74 data-slot="radio-group"75 className={cn('grid w-full gap-2', className)}76 {...props}77 />78 );79}8081export interface McRadioGroupItemProps82 extends RadioPrimitive.Root.Props, VariantProps<typeof radioGroupVariants> {83 text?: string;84 supportText?: string;85}8687function McRadioGroupItem({88 className,89 size = 'sm',90 text,91 supportText,92 id,93 disabled,94 value,95 ...props96}: McRadioGroupItemProps) {97 const radioId = React.useId();98 const finalId = id ?? radioId;99 const labelId = text ? `${finalId}-label` : undefined;100 const descriptionId = supportText ? `${finalId}-description` : undefined;101102 return (103 <label104 htmlFor={finalId}105 className={cn(106 radioGroupItemVariants({ size }),107 supportText ? 'items-start' : 'items-center',108 disabled ? 'cursor-not-allowed' : 'cursor-pointer',109// … truncated
What it pulls in
npm packages
Files it writes
More from mcoli-ui-registry
All 42 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| MicroClub Accordionmc-accordion | mcoli-ui-registry | Components | Free | 2 deps | |
| MicroClub Alertmc-alert | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Alert Dialogmc-alert-dialog | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Avatarmc-avatar | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Badgemc-badge | mcoli-ui-registry | Components | Free | 1 dep | |
| MicroClub Breadcrumbmc-breadcrumb | mcoli-ui-registry | Components | Free | 2 deps | |
| MicroClub Buttonmc-button | mcoli-ui-registry | Components | Free | 2 deps | |
| MicroClub Calendarmc-calendar | mcoli-ui-registry | Components | Free | 3 deps |
