nicolium: use type='radio' for toggle when applicable

Signed-off-by: nicole mikołajczyk <git@mkljczk.pl>
This commit is contained in:
nicole mikołajczyk
2026-03-10 00:04:50 +01:00
parent 8fb358e2b0
commit bd0ece2be8
2 changed files with 17 additions and 12 deletions

View File

@ -1,6 +1,12 @@
import clsx from 'clsx';
import React from 'react';
declare module 'react' {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
interface InputHTMLAttributes<T> {
switch?: boolean;
}
}
interface IToggle extends Pick<
React.InputHTMLAttributes<HTMLInputElement>,
'id' | 'name' | 'checked' | 'onChange' | 'required' | 'disabled'
@ -21,16 +27,15 @@ const Toggle: React.FC<IToggle> = ({
radio,
}) => (
<input
className={clsx('⁂-toggle', `⁂-toggle--${size}`, {
'⁂-toggle--radio': radio,
})}
type='checkbox'
className={`⁂-toggle ⁂-toggle--${size}`}
type={radio ? 'radio' : 'checkbox'}
id={id}
name={name}
checked={checked}
onChange={onChange}
required={required}
disabled={disabled}
switch={!radio}
/>
);

View File

@ -389,7 +389,7 @@
cursor: default;
}
&:not(&--radio) {
&:not([type="radio"]) {
&:not(:checked, :disabled) {
background-color: rgb(var(--color-gray-500));
}
@ -411,7 +411,7 @@
}
}
&--radio {
&[type="radio"] {
border: 2px solid;
&::after {
@ -455,7 +455,7 @@
}
}
&.-toggle--radio {
&[type="radio"] {
width: unset;
&::after {
@ -477,7 +477,7 @@
}
}
&.-toggle--radio {
&[type="radio"] {
width: unset;
&::after {
@ -487,7 +487,7 @@
}
}
&--sm:not(.-toggle--radio):checked::after {
&--sm:not([type="radio"]):checked::after {
transform: translateX(0.875rem);
[dir='rtl'] & {
@ -495,7 +495,7 @@
}
}
&--md:not(.-toggle--radio):checked::after {
&--md:not([type="radio"]):checked::after {
transform: translateX(1rem);
[dir='rtl'] & {
@ -503,7 +503,7 @@
}
}
&--radio {
&[type="radio"] {
&::after {
border-radius: 9999px;
}