import { Radio as RadioPrimitive } from "@base-ui/react/radio";
import { RadioGroup as RadioGroupPrimitive } from "@base-ui/react/radio-group";
import { cva, type VariantProps } from "class-variance-authority";
import { checkedSelectedItemClassName } from "../primitives";
import { cn } from "../../lib/utils";
function RadioGroup({ className, ...props }: RadioGroupPrimitive.Props) {
return (
);
}
const radioGroupItemVariants = cva(
`group/radio-group-item peer relative flex aspect-square shrink-0 cursor-pointer rounded-full border border-[color:color-mix(in_oklab,var(--border)_12%,transparent)] bg-[color:color-mix(in_oklab,var(--input)_10%,transparent)] bg-clip-padding text-[color:var(--foreground)] transition-all outline-none after:absolute after:-inset-x-3 after:-inset-y-2 hover:!border-[color:color-mix(in_oklab,var(--border)_20%,transparent)] hover:bg-[color:color-mix(in_oklab,var(--input)_15%,transparent)] focus-visible:border-[color:var(--ring)] focus-visible:ring focus-visible:ring-[color:color-mix(in_oklab,var(--ring)_30%,transparent)] data-disabled:pointer-events-none data-disabled:cursor-not-allowed data-disabled:opacity-50 data-disabled:hover:border-[color:color-mix(in_oklab,var(--border)_12%,transparent)] data-disabled:hover:bg-[color:color-mix(in_oklab,var(--input)_10%,transparent)] aria-invalid:border-[color:var(--destructive)] aria-invalid:ring aria-invalid:ring-[color:color-mix(in_oklab,var(--destructive)_20%,transparent)] dark:aria-invalid:border-[color:color-mix(in_oklab,var(--destructive)_50%,transparent)] dark:aria-invalid:ring-[color:color-mix(in_oklab,var(--destructive)_40%,transparent)] ${checkedSelectedItemClassName}`,
{
variants: {
size: {
default: "size-4",
lg: "size-4.5",
},
},
defaultVariants: {
size: "default",
},
},
);
const radioGroupIndicatorVariants = cva("flex items-center justify-center", {
variants: {
size: {
default: "size-4",
lg: "size-4.5",
},
},
defaultVariants: {
size: "default",
},
});
const radioGroupDotVariants = cva(
"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 rounded-full bg-[color:var(--foreground)]",
{
variants: {
size: {
default: "size-2",
lg: "size-2",
},
},
defaultVariants: {
size: "default",
},
},
);
function RadioGroupItem({
className,
size,
...props
}: RadioPrimitive.Root.Props & VariantProps) {
const resolvedSize = size ?? "default";
return (
);
}
export { RadioGroup, RadioGroupItem };