import { useState } from 'react'
import { Field, Label, Radio, RadioGroup } from '@headlessui/react'
const plans = [
'Developing',
'Designing',
'Coding',
'Graphics Design',
'Accounting',
'Frontend',
]
const MainRadioGroupCode = () => {
const [selected, setSelected] = useState(plans[0])
return (
<div>
<RadioGroup
value={selected}
onChange={setSelected}
aria-label='Server size'
className='flex flex-col gap-3'>
{plans.map((plan) => (
<Field key={plan} className='flex items-center gap-3'>
<Radio
value={plan}
className='group cursor-pointer flex size-5 items-center justify-center rounded-full border border-ld bg-white dark:bg-transparent data-[checked]:bg-primary dark:data-[checked]:bg-primary outline-0'>
<span className='invisible size-2 rounded-full bg-white group-data-[checked]:visible' />
</Radio>
<Label className='text-sm text-ld cursor-pointer'>{plan}</Label>
</Field>
))}
</RadioGroup>
</div>
)
}
export default MainRadioGroupCode
12GB, 6 CPUs, 256GB SSD disk
16GB, 8 CPUs, 512GB SSD disk
32GB, 12 CPUs, 1TB SSD disk
import { useState } from 'react'
import { Description, Field, Label, Radio, RadioGroup } from '@headlessui/react'
const plans = [
{ name: 'Startup', description: '12GB, 6 CPUs, 256GB SSD disk' },
{ name: 'Business', description: '16GB, 8 CPUs, 512GB SSD disk' },
{ name: 'Enterprise', description: '32GB, 12 CPUs, 1TB SSD disk' },
]
const RadioGroupWithDescCode = () => {
const [selected, setSelected] = useState(plans[0])
return (
<div>
<RadioGroup
value={selected}
onChange={setSelected}
aria-label='Server size'
className='flex flex-col gap-3'>
{plans.map((plan) => (
<Field
key={plan.name}
className='flex items-center gap-3 bg-lightgray dark:bg-dark py-2 px-4 rounded-full '>
<Radio
value={plan}
className='group cursor-pointer flex size-5 items-center justify-center rounded-full border border-ld bg-white dark:bg-transparent data-[checked]:bg-primary dark:data-[checked]:bg-primary outline-0'>
<span className='invisible size-2 rounded-full bg-white group-data-[checked]:visible ' />
</Radio>
<div>
<Label className='text-ld cursor-pointer'>{plan.name}</Label>
<Description className='text-darklink text-xs'>
{plan.description}
</Description>
</div>
</Field>
))}
</RadioGroup>
</div>
)
}
export default RadioGroupWithDescCode
import { useState } from 'react'
import { Field, Label, Radio, RadioGroup } from '@headlessui/react'
const plans = [
'Developing',
'Designing',
'Coding',
'Graphics Design',
'Accounting',
'Frontend',
]
const DisabledRadioGroupCode = () => {
const [selected, setSelected] = useState(plans[0])
return (
<>
<div>
<RadioGroup
onChange={setSelected}
aria-label='Server size'
className='flex flex-col gap-3'>
{plans.map((plan) => (
<Field key={plan} className='flex items-center gap-3 '>
<Radio
disabled
value={plan}
className='group cursor-pointer flex size-5 items-center justify-center rounded-full border border-ld bg-white dark:bg-transparent data-[checked]:bg-primary dark:data-[checked]:bg-primary outline-0'>
<span className='invisible size-2 rounded-full bg-white group-data-[checked]:visible' />
</Radio>
<Label className='text-sm text-ld cursor-pointer opacity-50'>
{plan}
</Label>
</Field>
))}
</RadioGroup>
</div>
</>
)
}
export default DisabledRadioGroupCode
Startup
Business
Enterprise
import { useState } from 'react'
import { Icon } from '@iconify/react'
import { Radio, RadioGroup } from '@headlessui/react'
const plans = [
{ name: 'Startup', ram: '12GB', cpus: '6 CPUs', disk: '256GB SSD disk' },
{ name: 'Business', ram: '16GB', cpus: '8 CPUs', disk: '512GB SSD disk' },
{ name: 'Enterprise', ram: '32GB', cpus: '12 CPUs', disk: '1TB SSD disk' },
]
const BasicRadioGroupCode = () => {
const [selected, setSelected] = useState(plans[0])
return (
<div>
<div className='mx-auto w-full'>
<RadioGroup
value={selected}
onChange={setSelected}
aria-label='Server size'
className='space-y-4'>
{plans.map((plan) => (
<Radio
key={plan.name}
value={plan}
className='group relative flex cursor-pointer rounded-md bg-lightgray dark:bg-dark py-4 px-5 text-ld shadow-md transition focus:outline-none data-[focus]:outline-1 data-[focus]:outline-primary data-[checked]:bg-primary dark:data-[checked]:bg-primary'>
<div className='flex w-full items-center justify-between'>
<div className='text-sm'>
<p className='font-semibold text-ld text-base group-data-[checked]:text-white'>
{plan.name}
</p>
<div className='flex gap-2 text-darklink text-sm group-data-[checked]:text-white/50'>
<div>{plan.ram}</div>
<div aria-hidden='true'>·</div>
<div>{plan.cpus}</div>
<div aria-hidden='true'>·</div>
<div>{plan.disk}</div>
</div>
</div>
<Icon
icon='solar:check-circle-linear'
height={20}
className='opacity-0 transition group-data-[checked]:opacity-100 text-white'
/>
</div>
</Radio>
))}
</RadioGroup>
</div>
</div>
)
}
export default BasicRadioGroupCode
import { useState } from 'react'
import { Field, Label, Radio, RadioGroup } from '@headlessui/react'
const plans = [
'Developing',
'Designing',
'Coding',
'Graphics Design',
'Accounting',
'Frontend',
'Seo',
]
const WithHtmlRadioFormCode = () => {
const [selected, setSelected] = useState(plans[0])
return (
<div>
<form action='/plans' method='post'>
<RadioGroup
value={selected}
onChange={setSelected}
aria-label='Server size'
className='flex flex-col gap-3'>
{plans.map((plan) => (
<Field key={plan} className='flex items-center gap-3'>
<Radio
value={plan}
className='group cursor-pointer flex size-5 items-center justify-center rounded-full border border-ld bg-white dark:bg-transparent data-[checked]:bg-primary dark:data-[checked]:bg-primary outline-0'>
<span className='invisible size-2 rounded-full bg-white group-data-[checked]:visible' />
</Radio>
<Label className='text-sm text-ld cursor-pointer'>{plan}</Label>
</Field>
))}
</RadioGroup>
<div className='flex gap-3 mt-4'>
<button className='ui-button bg-primary'>Submit</button>
<button className='ui-button bg-error'>Cancel</button>
</div>
</form>
</div>
)
}
export default WithHtmlRadioFormCode