domain.tsx 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import { useCallback } from 'react';
  2. import { defineMessages, useIntl } from 'react-intl';
  3. import LockOpenIcon from '@/material-icons/400-24px/lock_open.svg?react';
  4. import { IconButton } from './icon_button';
  5. const messages = defineMessages({
  6. unblockDomain: {
  7. id: 'account.unblock_domain',
  8. defaultMessage: 'Unblock domain {domain}',
  9. },
  10. });
  11. interface Props {
  12. domain: string;
  13. onUnblockDomain: (domain: string) => void;
  14. }
  15. export const Domain: React.FC<Props> = ({ domain, onUnblockDomain }) => {
  16. const intl = useIntl();
  17. const handleDomainUnblock = useCallback(() => {
  18. onUnblockDomain(domain);
  19. }, [domain, onUnblockDomain]);
  20. return (
  21. <div className='domain'>
  22. <div className='domain__wrapper'>
  23. <span className='domain__domain-name'>
  24. <strong>{domain}</strong>
  25. </span>
  26. <div className='domain__buttons'>
  27. <IconButton
  28. active
  29. icon='unlock'
  30. iconComponent={LockOpenIcon}
  31. title={intl.formatMessage(messages.unblockDomain, { domain })}
  32. onClick={handleDomainUnblock}
  33. />
  34. </div>
  35. </div>
  36. </div>
  37. );
  38. };