Files
fn-design-system/components/radio_group.tsx
T
Egutierrez 5a824c2eee initial: mirror of @fn_library from fn_registry
75 components + DESIGN_SYSTEM.md + sync script.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-21 19:06:49 +02:00

57 lines
1.3 KiB
TypeScript

import * as React from "react"
import { Radio } from "@mantine/core"
interface RadioGroupProps {
value?: string
defaultValue?: string
onValueChange?: (value: string) => void
disabled?: boolean
orientation?: "horizontal" | "vertical"
className?: string
children?: React.ReactNode
}
function RadioGroup({ className, value, defaultValue, onValueChange, orientation, children, ...props }: RadioGroupProps) {
return (
<Radio.Group
data-slot="radio-group"
value={value}
defaultValue={defaultValue}
onChange={(val) => onValueChange?.(val)}
className={className}
{...props}
>
<div style={{ display: 'flex', flexDirection: orientation === 'horizontal' ? 'row' : 'column', gap: 'var(--mantine-spacing-sm)' }}>
{children}
</div>
</Radio.Group>
)
}
interface RadioGroupItemProps {
value: string
label?: string
disabled?: boolean
className?: string
labelClassName?: string
id?: string
}
function RadioGroupItem({ className, label, id, disabled, value, ...props }: RadioGroupItemProps) {
return (
<Radio
id={id}
data-slot="radio-group-item"
value={value}
label={label}
disabled={disabled}
className={className}
size="sm"
{...props}
/>
)
}
export { RadioGroup, RadioGroupItem }
export type { RadioGroupItemProps }