Skip to content

Radio

RadioGroup example

RadioGroup acts as a controlling component and doesn't have an actual HTML element beneath it.

tsx
import React from 'react';
import Radio, { RadioGroup } from 'intergalactic/radio';
import { Text } from 'intergalactic/typography';
import { Flex } from 'intergalactic/flex-box';

const Demo = () => {
  const [value, setValue] = React.useState('1');
  return (
    <div>
      <RadioGroup name='radio' value={value} onChange={(v) => setValue(v)}>
        <div role='radiogroup' aria-labelledby='radioGroup'>
          <Text tag='p' id='radioGroup' size={200}>
            Select value
          </Text>
          <Flex mt={2} direction={'column'}>
            <Radio mb={3} value={'1'} label={'Value 1'} />
            <Radio mb={3} value={'2'} label={'Value 2'} />
            <Radio mb={3} value={'3'} label={'Value 3'} />
          </Flex>
        </div>
      </RadioGroup>
    </div>
  );
};

export default Demo;
import React from 'react';
import Radio, { RadioGroup } from 'intergalactic/radio';
import { Text } from 'intergalactic/typography';
import { Flex } from 'intergalactic/flex-box';

const Demo = () => {
  const [value, setValue] = React.useState('1');
  return (
    <div>
      <RadioGroup name='radio' value={value} onChange={(v) => setValue(v)}>
        <div role='radiogroup' aria-labelledby='radioGroup'>
          <Text tag='p' id='radioGroup' size={200}>
            Select value
          </Text>
          <Flex mt={2} direction={'column'}>
            <Radio mb={3} value={'1'} label={'Value 1'} />
            <Radio mb={3} value={'2'} label={'Value 2'} />
            <Radio mb={3} value={'3'} label={'Value 3'} />
          </Flex>
        </div>
      </RadioGroup>
    </div>
  );
};

export default Demo;

Additional props for input

Radio.Value conceals a stylistic div and a real, hidden input. When you pass props to Radio.Value, it passes specific set of them to input props and all others goes to check-mark div.

If you need more control over input-tag, you can pass props to Radio.Value.Control.

WARNING

🚨 Radio.Value.RadioMark should always be the next element after Radio.Value.Control in DOM.

tsx
import React from 'react';
import Radio, { RadioGroup } from 'intergalactic/radio';

const Demo = () => {
  return (
    <RadioGroup>
      <Radio mb={3} value={'1'}>
        <Radio.Value>
          <Radio.Value.Control data-test-id={'TEST_ID'} />
          <Radio.Value.RadioMark />
        </Radio.Value>
        <Radio.Text>Value</Radio.Text>
      </Radio>
      <Radio mb={3} value={'2'} label={'Second value'} />
    </RadioGroup>
  );
};

export default Demo;
import React from 'react';
import Radio, { RadioGroup } from 'intergalactic/radio';

const Demo = () => {
  return (
    <RadioGroup>
      <Radio mb={3} value={'1'}>
        <Radio.Value>
          <Radio.Value.Control data-test-id={'TEST_ID'} />
          <Radio.Value.RadioMark />
        </Radio.Value>
        <Radio.Text>Value</Radio.Text>
      </Radio>
      <Radio mb={3} value={'2'} label={'Second value'} />
    </RadioGroup>
  );
};

export default Demo;

Released under the MIT License.

Released under the MIT License.