UNPKG

@postenbring/hedwig-react

Version:

React components for [Hedwig Design System](https://github.com/bring/hedwig-design-system).

1 lines 3.08 kB
{"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 { useRadioGroupContext } from \"./radio-group\";\n\nexport interface RadioButtonProps\n extends Omit<InputHTMLAttributes<HTMLInputElement>, \"defaultValue\" | \"size\"> {\n children: ReactNode;\n variant?: \"plain\" | \"bounding-box\";\n title?: string;\n size?: \"small\" | \"\";\n}\n\nconst isChecked = ({\n checked,\n selectedValue,\n value,\n}: Pick<RadioButtonProps, \"checked\" | \"value\"> & {\n selectedValue: RadioButtonProps[\"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 ({ checked, value, variant = \"plain\", title, children, className, size = \"\", ...rest }, ref) => {\n const { value: selectedValue, size: groupSize, ...context } = useRadioGroupContext();\n const effectiveSize = size || groupSize;\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--${effectiveSize}`]: effectiveSize === \"small\",\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;AAuCb,SACE,KADF;AA5BR,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,CAAC,IAAuF,QAAQ;AAA/F,iBAAE,WAAS,OAAO,UAAU,SAAS,OAAO,UAAU,WAAW,OAAO,GAzB3E,IAyBG,IAA+E,iBAA/E,IAA+E,CAA7E,WAAS,SAAO,WAAmB,SAAO,YAAU,aAAW;AAChE,UAA8DA,MAAA,qBAAqB,GAA3E,SAAO,eAAe,MAAM,UA1BxC,IA0BkEA,KAAZ,oBAAYA,KAAZ,CAA1C,SAAsB;AAC9B,UAAM,gBAAgB,QAAQ;AAE9B,WACE;AAAA,MAAC;AAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,YACE,CAAC,qBAAqB,OAAO,EAAE,GAAG,YAAY;AAAA,YAC9C,CAAC,qBAAqB,aAAa,EAAE,GAAG,kBAAkB;AAAA,UAC5D;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"]}