import { ChangeEventHandler, ForwardedRef, forwardRef, type InputHTMLAttributes, ReactElement, ReactNode, } from 'react' export interface IPktRadioButton extends InputHTMLAttributes { id: string name: string label: string hasTile?: boolean disabled?: boolean checkHelptext?: ReactNode | ReactNode[] | string defaultChecked?: boolean checked?: boolean hasError?: boolean value?: string optionalTag?: boolean optionalText?: string requiredTag?: boolean requiredText?: string tagText?: string | null onChange?: ChangeEventHandler } export const PktRadioButton = forwardRef( ( { id, name, label, className, hasTile = false, disabled = false, checkHelptext, hasError = false, defaultChecked, checked, optionalTag, optionalText, requiredTag, requiredText, tagText, ...props }: IPktRadioButton, ref: ForwardedRef, ): ReactElement => { const classes = [className, 'pkt-input-check'].filter(Boolean).join(' ') const inputTileClasses = [ 'pkt-input-check__input', hasTile ? 'pkt-input-check__input--tile' : '', disabled && hasTile ? 'pkt-input-check__input--tile-disabled' : '', ] .filter(Boolean) .join(' ') const inputCheckBoxClasses = [ 'pkt-input-check__input-checkbox', hasError ? 'pkt-input-check__input-checkbox--error' : '', ] .filter(Boolean) .join(' ') const labelClasses = ['pkt-input-check__input-label', disabled ? 'pkt-input-check__input-label--disabled' : ''] .filter(Boolean) .join(' ') const tagClasses = ['pkt-tag', 'pkt-tag--small', 'pkt-tag--thin-text'].join(' ') const renderTags = () => { return ( <> {tagText && {tagText}} {optionalTag && {optionalText}} {requiredTag && {requiredText}} ) } return (
) }, ) PktRadioButton.displayName = 'PktRadioButton'