{"version":3,"sources":["../src/form/radio-button/radio-button.tsx"],"sourcesContent":["import { forwardRef, type InputHTMLAttributes, type ReactNode } from \"react\";\nimport { clsx } from \"@postenbring/hedwig-css/typed-classname\";\nimport { useFieldsetContext } from \"../fieldset\";\nimport { type RadioGroupProps, useRadioGroupContext } from \"./radio-group\";\n\nexport interface RadioButtonProps\n  extends Omit<InputHTMLAttributes<HTMLInputElement>, \"defaultValue\"> {\n  children: ReactNode;\n  variant?: \"plain\" | \"bounding-box\";\n  /**\n   * Set to `true` to add error styling. The component will take care of aria to indicate invalid state.\n   *\n   * Normally you don't need this, as you should wrap your Radio buttons in the RadioGroup component.\n   * When providing an errorMessage to RadioGroup, all contained Radio buttons will get correct hasError state.\n   *\n   * You can use this when your Radio button is part of a non-HDS fieldset which shows an error message.\n   */\n  hasError?: boolean;\n  title?: string;\n}\n\nconst isChecked = ({\n  checked,\n  selectedValue,\n  value,\n}: Pick<RadioButtonProps, \"checked\" | \"value\"> & {\n  selectedValue: RadioGroupProps[\"value\"];\n}) => {\n  if (typeof checked !== \"undefined\") return checked;\n  if (typeof selectedValue !== \"undefined\") return value === selectedValue;\n  return undefined;\n};\n\nexport const RadioButton = forwardRef<HTMLInputElement, RadioButtonProps>(\n  (\n    {\n      checked,\n      value,\n      variant = \"plain\",\n      hasError: hasErrorProp,\n      title,\n      children,\n      className,\n      ...rest\n    },\n    ref,\n  ) => {\n    const {\n      value: selectedValue,\n      hasError: hasRadioGroupError,\n      ...context\n    } = useRadioGroupContext();\n    const { hasError: hasFieldsetError } = useFieldsetContext();\n    const hasError = hasFieldsetError || hasRadioGroupError || hasErrorProp;\n\n    return (\n      <div\n        className={clsx(\n          \"hds-radio-button\",\n          {\n            [`hds-radio-button--${variant}`]: variant === \"bounding-box\",\n            \"hds-radio-button--error\": hasError,\n          },\n          className as undefined,\n        )}\n      >\n        <label>\n          <input\n            {...context}\n            {...rest}\n            checked={isChecked({ checked, selectedValue, value })}\n            value={value}\n            ref={ref}\n            type=\"radio\"\n          />\n          <span aria-hidden className=\"hds-radio-button__checkmark\" />\n          {title ? <p className=\"hds-radio-button__title\">{title}</p> : children}\n        </label>\n        {title ? children : null}\n      </div>\n    );\n  },\n);\n\nRadioButton.displayName = \"RadioButton\";\n"],"mappings":";;;;;;;;;;;;;AAAA,SAAS,kBAA4D;AACrE,SAAS,YAAY;AAiEb,SACE,KADF;AA7CR,IAAM,YAAY,CAAC;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AACF,MAEM;AACJ,MAAI,OAAO,YAAY,YAAa,QAAO;AAC3C,MAAI,OAAO,kBAAkB,YAAa,QAAO,UAAU;AAC3D,SAAO;AACT;AAEO,IAAM,cAAc;AAAA,EACzB,CACE,IAUA,QACG;AAXH,iBACE;AAAA;AAAA,MACA;AAAA,MACA,UAAU;AAAA,MACV,UAAU;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,IA1CN,IAmCI,IAQK,iBARL,IAQK;AAAA,MAPH;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAKF,UAIIA,MAAA,qBAAqB,GAHvB;AAAA,aAAO;AAAA,MACP,UAAU;AAAA,IAjDhB,IAmDQA,KADC,oBACDA,KADC;AAAA,MAFH;AAAA,MACA;AAAA;AAGF,UAAM,EAAE,UAAU,iBAAiB,IAAI,mBAAmB;AAC1D,UAAM,WAAW,oBAAoB,sBAAsB;AAE3D,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,YACE,CAAC,qBAAqB,OAAO,EAAE,GAAG,YAAY;AAAA,YAC9C,2BAA2B;AAAA,UAC7B;AAAA,UACA;AAAA,QACF;AAAA,QAEA;AAAA,+BAAC,WACC;AAAA;AAAA,cAAC;AAAA,8DACK,UACA,OAFL;AAAA,gBAGC,SAAS,UAAU,EAAE,SAAS,eAAe,MAAM,CAAC;AAAA,gBACpD;AAAA,gBACA;AAAA,gBACA,MAAK;AAAA;AAAA,YACP;AAAA,YACA,oBAAC,UAAK,eAAW,MAAC,WAAU,+BAA8B;AAAA,YACzD,QAAQ,oBAAC,OAAE,WAAU,2BAA2B,iBAAM,IAAO;AAAA,aAChE;AAAA,UACC,QAAQ,WAAW;AAAA;AAAA;AAAA,IACtB;AAAA,EAEJ;AACF;AAEA,YAAY,cAAc;","names":["_a"]}