43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import classNames from 'classnames';
 | |
| 
 | |
| import CheckIcon from '@/material-icons/400-24px/check.svg?react';
 | |
| import { useLinks } from 'mastodon/../hooks/useLinks';
 | |
| import { Icon } from 'mastodon/components/icon';
 | |
| import type { Account } from 'mastodon/models/account';
 | |
| 
 | |
| export const AccountFields: React.FC<{
 | |
|   fields: Account['fields'];
 | |
|   limit: number;
 | |
| }> = ({ fields, limit = -1 }) => {
 | |
|   const handleClick = useLinks();
 | |
| 
 | |
|   if (fields.size === 0) {
 | |
|     return null;
 | |
|   }
 | |
| 
 | |
|   return (
 | |
|     <div className='account-fields' onClickCapture={handleClick}>
 | |
|       {fields.take(limit).map((pair, i) => (
 | |
|         <dl
 | |
|           key={i}
 | |
|           className={classNames({ verified: pair.get('verified_at') })}
 | |
|         >
 | |
|           <dt
 | |
|             dangerouslySetInnerHTML={{ __html: pair.get('name_emojified') }}
 | |
|             className='translate'
 | |
|           />
 | |
| 
 | |
|           <dd className='translate' title={pair.get('value_plain') ?? ''}>
 | |
|             {pair.get('verified_at') && (
 | |
|               <Icon id='check' icon={CheckIcon} className='verified__mark' />
 | |
|             )}
 | |
|             <span
 | |
|               dangerouslySetInnerHTML={{ __html: pair.get('value_emojified') }}
 | |
|             />
 | |
|           </dd>
 | |
|         </dl>
 | |
|       ))}
 | |
|     </div>
 | |
|   );
 | |
| };
 |