Skip to content

Radio

RadioGroup example

RadioGroup works 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'
        aria-labelledby='radioGroup'
        value={value}
        onChange={(v) => setValue(v)}
      >
        <Text id='radioGroup' size={200}>
          Select dog breed
        </Text>
        <Flex mt={2} direction={'column'}>
          <Radio mb={3} value={'1'} label={'Labrador Retriever'} />
          <Radio mb={3} value={'2'} label={'German Shepherd'} />
          <Radio mb={3} value={'3'} label={'Beagle'} />
        </Flex>
      </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'
        aria-labelledby='radioGroup'
        value={value}
        onChange={(v) => setValue(v)}
      >
        <Text id='radioGroup' size={200}>
          Select dog breed
        </Text>
        <Flex mt={2} direction={'column'}>
          <Radio mb={3} value={'1'} label={'Labrador Retriever'} />
          <Radio mb={3} value={'2'} label={'German Shepherd'} />
          <Radio mb={3} value={'3'} label={'Beagle'} />
        </Flex>
      </RadioGroup>
    </div>
  );
};

export default Demo;

Additional props for input

Radio.Value hides a styled div and a hidden input. When you pass props to Radio.Value, a specific set of them is passed to the input props, while all others go to the Radio.Value.RadioMark div.

For more control over the input, 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>First 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>First 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.