sforkowany z mirror/soapbox
Improve UI of List component
rodzic
55c0f8d6a1
commit
20960d7238
|
@ -4,8 +4,7 @@ import { v4 as uuidv4 } from 'uuid';
|
||||||
|
|
||||||
import { SelectDropdown } from '../features/forms';
|
import { SelectDropdown } from '../features/forms';
|
||||||
|
|
||||||
import Icon from './icon';
|
import { Icon, HStack, Select } from './ui';
|
||||||
import { HStack, Select } from './ui';
|
|
||||||
|
|
||||||
interface IList {
|
interface IList {
|
||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
|
@ -58,13 +57,13 @@ const ListItem: React.FC<IListItem> = ({ label, hint, children, onClick, onSelec
|
||||||
return (
|
return (
|
||||||
<Comp
|
<Comp
|
||||||
className={clsx({
|
className={clsx({
|
||||||
'flex items-center justify-between px-3 py-2 first:rounded-t-lg last:rounded-b-lg bg-gradient-to-r from-gradient-start/10 to-gradient-end/10': true,
|
'flex items-center justify-between px-4 py-2 first:rounded-t-lg last:rounded-b-lg bg-gradient-to-r from-gradient-start/20 to-gradient-end/20 dark:from-gradient-start/10 dark:to-gradient-end/10': true,
|
||||||
'cursor-pointer hover:from-gradient-start/20 hover:to-gradient-end/20 dark:hover:from-gradient-start/5 dark:hover:to-gradient-end/5': typeof onClick !== 'undefined' || typeof onSelect !== 'undefined',
|
'cursor-pointer hover:from-gradient-start/30 hover:to-gradient-end/30 dark:hover:from-gradient-start/5 dark:hover:to-gradient-end/5': typeof onClick !== 'undefined' || typeof onSelect !== 'undefined',
|
||||||
})}
|
})}
|
||||||
{...linkProps}
|
{...linkProps}
|
||||||
>
|
>
|
||||||
<div className='flex flex-col py-1.5 pr-4 rtl:pl-4 rtl:pr-0'>
|
<div className='flex flex-col py-1.5 pr-4 rtl:pl-4 rtl:pr-0'>
|
||||||
<LabelComp className='text-gray-900 dark:text-gray-100' htmlFor={domId}>{label}</LabelComp>
|
<LabelComp className='font-medium text-gray-900 dark:text-gray-100' htmlFor={domId}>{label}</LabelComp>
|
||||||
|
|
||||||
{hint ? (
|
{hint ? (
|
||||||
<span className='text-sm text-gray-700 dark:text-gray-600'>{hint}</span>
|
<span className='text-sm text-gray-700 dark:text-gray-600'>{hint}</span>
|
||||||
|
@ -83,12 +82,26 @@ const ListItem: React.FC<IListItem> = ({ label, hint, children, onClick, onSelec
|
||||||
<div className='flex flex-row items-center text-gray-700 dark:text-gray-600'>
|
<div className='flex flex-row items-center text-gray-700 dark:text-gray-600'>
|
||||||
{children}
|
{children}
|
||||||
|
|
||||||
{isSelected ? (
|
<div
|
||||||
|
className={
|
||||||
|
clsx({
|
||||||
|
'flex h-6 w-6 items-center justify-center rounded-full border-2 border-solid border-primary-500 dark:border-primary-400 transition': true,
|
||||||
|
'bg-primary-500 dark:bg-primary-400': isSelected,
|
||||||
|
'bg-transparent': !isSelected,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
>
|
||||||
<Icon
|
<Icon
|
||||||
src={require('@tabler/icons/circle-check.svg')}
|
src={require('@tabler/icons/check.svg')}
|
||||||
className='h-4 w-4 text-primary-600 dark:fill-white dark:text-primary-800'
|
className={
|
||||||
|
clsx({
|
||||||
|
'h-4 w-4 text-white dark:text-white transition-all duration-500': true,
|
||||||
|
'opacity-0 scale-50': !isSelected,
|
||||||
|
'opacity-100 scale-100': isSelected,
|
||||||
|
})
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
) : null}
|
</div>
|
||||||
</div>
|
</div>
|
||||||
) : null}
|
) : null}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue